2
0

A step-by-step guide, fix setup appearance + fix capitalization of master password.

[ADDED]     A new step-by-step guide which uses images and text to explain the basics of Master Password.
[FIXED]     The setup flow didn't appear anymore.
[FIXED]     When creating a new user, the master password field was auto-capitalized.
This commit is contained in:
Maarten Billemont 2014-06-21 21:59:14 -04:00
parent c5fc87b7b5
commit cc086e2dff
39 changed files with 453 additions and 732 deletions

2
External/Pearl vendored

@ -1 +1 @@
Subproject commit 04a91a866fab0d0be753100961279bb7116082d9 Subproject commit e50cad1411aaafe8083b3863e48b53a1f722c239

View File

@ -8,27 +8,13 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
@interface MPGuideViewController : UIViewController<UIScrollViewDelegate> @interface MPGuideViewController : UIViewController<UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
@property(weak, nonatomic) IBOutlet UISearchBar *searchBar; @property(nonatomic) IBOutlet UICollectionView *collectionView;
@property(weak, nonatomic) IBOutlet UIView *siteNameTip; @property(nonatomic) IBOutlet UILabel *captionLabel;
@property(weak, nonatomic) IBOutlet UIView *contentTip; @property(nonatomic) IBOutlet UIPageControl *pageControl;
@property(weak, nonatomic) IBOutlet UILabel *contentTipText; @property(nonatomic) IBOutlet UINavigationBar *navigationBar;
@property(weak, nonatomic) IBOutlet UIButton *usernameButton;
@property(weak, nonatomic) IBOutlet UIView *usernameTip;
@property(weak, nonatomic) IBOutlet UIButton *typeButton;
@property(weak, nonatomic) IBOutlet UIView *typeTip;
@property(weak, nonatomic) IBOutlet UIButton *toolButton;
@property(weak, nonatomic) IBOutlet UIView *toolTip;
@property(weak, nonatomic) IBOutlet UIProgressView *progress;
@property(weak, nonatomic) IBOutlet UIView *content;
@property(weak, nonatomic) IBOutlet UIButton *contentButton;
@property(weak, nonatomic) IBOutlet UITextField *contentText;
@property(weak, nonatomic) IBOutlet UIButton *largePlayButton;
@property(weak, nonatomic) IBOutlet UIButton *smallPlayButton;
@property(weak, nonatomic) IBOutlet UIView *alertTip;
- (IBAction)play; - (IBAction)close:(id)sender;
- (IBAction)close;
@end @end

View File

@ -8,17 +8,86 @@
#import "MPGuideViewController.h" #import "MPGuideViewController.h"
@interface MPGuideStep : NSObject
@property(nonatomic) UIImage *image;
@property(nonatomic) NSString *caption;
+ (instancetype)stepWithImage:(UIImage *)image caption:(NSString *)caption;
@end
@interface MPGuideStepCell : UICollectionViewCell
@property(nonatomic) IBOutlet UIImageView *imageView;
@end
@interface MPGuideViewController() @interface MPGuideViewController()
@property(nonatomic, strong) NSTimer *timer; @property(nonatomic, strong) NSArray *steps;
@property(nonatomic) int tickCount;
@property(nonatomic) int currentTick;
@property(nonatomic) int lastTick;
@property(nonatomic) BOOL muted;
@end @end
@implementation MPGuideViewController @implementation MPGuideViewController
#pragma mark - Life
- (void)viewDidLoad {
[super viewDidLoad];
self.steps = @[
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-0"] caption:
@"To begin, tap the \"New User\" icon and add yourself as a user to the application."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-1"] caption:
@"Enter your full name. Double-check that you have spelled your name correctly and capitalized it appropriately. Your passwords will depend on it."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-2"] caption:
@"Choose a master password: Use something new and long. A short sentence is ideal.\nDO NOT FORGET THIS ONE PASSWORD."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-3"] caption:
@"After logging in, you'll see an empty screen with a search box.\nTap the search box to begin adding sites."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-4"] caption:
@"To add a site, just enter its name fully and tap the result. Names can be anything, but we recommend using a site's bare domain name."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-5"] caption:
@"Your sites are easy to find and sorted by recency.\nTap any site to copy its password.\nYou can now switch and paste it in another app."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-6"] caption:
@"If the site you're looking for isn't easy to find, just type a few letters in the search box to filter the site list."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-7"] caption:
@"If you ever need a new password for the site, just tap the plus icon to increment its counter.\nYou can hold down to reset it back to 1."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-8"] caption:
@"The user icon lets you save your site's login.\nThis is useful if you find it hard to remember the user name for this site."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-9"] caption:
@"Master Password lets you swipe to upgrade or downgrade your password's complexity.\nSome sites won't let you use complex passwords."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-10"] caption:
@"To delete a site, swipe it all the way left to find the \"Delete Site\" button."],
[MPGuideStep stepWithImage:[UIImage imageNamed:@"image-11"] caption:
@"If you have a password that you cannot change, you can save it as a Personal password. Device Private means the site will not be backed up."],
];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.pageControl observeKeyPath:@"currentPage"
withBlock:^(id from, id to, NSKeyValueChange cause, UIPageControl *pageControl) {
MPGuideStep *activeStep = self.steps[pageControl.currentPage];
self.captionLabel.text = activeStep.caption;
}];
[self.collectionView setContentOffset:CGPointZero];
self.pageControl.currentPage = 0;
if (self.navigationController)
[self.navigationBar removeFromSuperview];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.pageControl removeKeyPathObservers];
}
- (BOOL)shouldAutorotate { - (BOOL)shouldAutorotate {
return NO; return NO;
@ -39,207 +108,72 @@
return UIInterfaceOrientationPortrait; return UIInterfaceOrientationPortrait;
} }
- (void)viewDidLoad { #pragma mark - UICollectionViewDataSource
[super viewDidLoad]; - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
self.siteNameTip.hidden = NO; return self.pageControl.numberOfPages = [self.steps count];
self.contentTip.hidden = NO;
self.usernameTip.hidden = NO;
self.typeTip.hidden = NO;
self.toolTip.hidden = NO;
self.alertTip.hidden = NO;
self.tickCount = 30;
} }
- (void)viewWillAppear:(BOOL)animated { - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
[self.navigationController setNavigationBarHidden:YES animated:animated]; MPGuideStepCell *cell = [MPGuideStepCell dequeueCellFromCollectionView:collectionView indexPath:indexPath];
cell.imageView.image = ((MPGuideStep *)self.steps[indexPath.item]).image;
inf(@"Guide will appear."); return cell;
[super viewWillAppear:animated];
if (self.navigationController) {
// Via setup
self.smallPlayButton.hidden = YES;
self.searchBar.text = nil;
self.siteNameTip.alpha = 0;
self.content.alpha = 0;
self.content.frame = CGRectSetHeight( self.content.frame, 180 );
self.contentTip.alpha = 0;
self.contentButton.highlighted = NO;
self.usernameTip.alpha = 0;
self.usernameButton.highlighted = NO;
self.typeTip.alpha = 0;
self.typeButton.highlighted = NO;
self.toolTip.alpha = 0;
self.toolButton.highlighted = NO;
self.alertTip.alpha = 0;
}
else {
// Via segue
self.largePlayButton.hidden = YES;
self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 1;
self.content.alpha = 1;
self.content.frame = CGRectSetHeight( self.content.frame, 231 );
self.contentTip.alpha = 1;
self.contentTipText.text = @"Tap to copy";
self.contentButton.highlighted = NO;
self.usernameTip.alpha = 1;
self.usernameButton.highlighted = NO;
self.typeTip.alpha = 1;
self.typeButton.highlighted = NO;
self.toolTip.alpha = 0;
self.toolButton.highlighted = NO;
self.alertTip.alpha = 1;
}
} }
- (void)viewWillDisappear:(BOOL)animated { #pragma mark - UICollectionViewDelegateFlowLayout
inf(@"Guide will disappear."); - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout
[super viewWillDisappear:animated]; sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return collectionView.bounds.size;
} }
- (IBAction)play { #pragma mark - UIScrollViewDelegate
if (self.timer) { - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
// Pause
[self.timer invalidate];
self.timer = nil;
self.smallPlayButton.hidden = NO; if (scrollView == self.collectionView)
[self.smallPlayButton setImage:[UIImage imageNamed:@"icon_play"] forState:UIControlStateNormal]; self.pageControl.currentPage = [self.collectionView indexPathForItemAtPoint:CGRectGetCenter( self.collectionView.bounds )].item;
} }
else { #pragma mark - Actions
// Play
self.smallPlayButton.hidden = NO;
self.largePlayButton.hidden = YES;
[self.smallPlayButton setImage:[UIImage imageNamed:@"icon_pause"] forState:UIControlStateNormal];
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(tick:) - (IBAction)close:(id)sender {
userInfo:nil repeats:YES];
} [MPiOSConfig get].showSetup = @NO;
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];
} }
- (IBAction)close { #pragma mark - Private
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; @end
}
- (void)tick:(NSTimer *)timer { @implementation MPGuideStep
self.lastTick = self.currentTick; + (instancetype)stepWithImage:(UIImage *)image caption:(NSString *)caption {
++self.currentTick;
[self.progress setProgress:(float)self.currentTick / self.tickCount animated:YES];
if (self.currentTick < 5) { MPGuideStep *step = [self new];
[UIView animateWithDuration:0.5 animations:^{ step.image = image;
self.searchBar.text = nil; step.caption = caption;
self.siteNameTip.alpha = 1;
self.content.alpha = 0; return step;
self.content.frame = CGRectSetHeight( self.content.frame, 180 ); }
self.contentTip.alpha = 0;
self.usernameTip.alpha = 0; @end
self.typeTip.alpha = 0;
self.toolTip.alpha = 0; @implementation MPGuideStepCell
self.alertTip.alpha = 0;
}]; - (void)awakeFromNib {
}
else if (self.currentTick < 10) { [super awakeFromNib];
[UIView animateWithDuration:0.5 animations:^{
self.searchBar.text = @"gmail.com"; self.imageView.layer.shadowColor = [UIColor grayColor].CGColor;
self.siteNameTip.alpha = 0; self.imageView.layer.shadowOffset = CGSizeZero;
self.content.alpha = 1; self.imageView.layer.shadowOpacity = 0.5f;
self.contentTip.alpha = 1;
self.contentTipText.text = @"Your password";
self.usernameTip.alpha = 0;
self.typeTip.alpha = 0;
self.toolTip.alpha = 0;
self.alertTip.alpha = 0;
}];
}
else if (self.currentTick < 15) {
[UIView animateWithDuration:0.5 animations:^{
self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.contentTip.alpha = 1;
self.contentTipText.text = @"Tap to copy";
self.contentButton.highlighted = YES;
self.usernameTip.alpha = 0;
self.typeTip.alpha = 0;
self.toolButton.highlighted = NO;
self.toolTip.alpha = 0;
self.alertTip.alpha = 0;
}];
}
else if (self.currentTick < 20) {
[UIView animateWithDuration:0.5 animations:^{
self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.content.frame = CGRectSetHeight( self.content.frame, 231 );
self.contentTip.alpha = 0;
self.contentButton.highlighted = NO;
self.usernameButton.highlighted = YES;
self.usernameTip.alpha = 1;
self.typeTip.alpha = 0;
self.toolTip.alpha = 0;
self.alertTip.alpha = 0;
}];
}
else if (self.currentTick < 25) {
[UIView animateWithDuration:0.5 animations:^{
self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.contentTip.alpha = 0;
self.usernameButton.highlighted = NO;
self.usernameTip.alpha = 0;
self.typeTip.alpha = 1;
self.typeButton.highlighted = YES;
self.toolTip.alpha = 0;
self.alertTip.alpha = 0;
}];
}
else if (self.currentTick < 30) {
[UIView animateWithDuration:0.5 animations:^{
self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 0;
self.content.alpha = 1;
self.contentTip.alpha = 0;
self.usernameTip.alpha = 0;
self.typeTip.alpha = 0;
self.typeButton.highlighted = NO;
self.toolButton.highlighted = YES;
self.toolTip.alpha = 1;
self.alertTip.alpha = 0;
self.contentText.text = @"XupuMajf4'Hafh";
}];
}
else if (self.currentTick <= self.tickCount) {
[self.timer invalidate];
self.timer = nil;
self.currentTick = 0;
[UIView animateWithDuration:0.5 animations:^{
[self.smallPlayButton setImage:[UIImage imageNamed:@"icon_play"] forState:UIControlStateNormal];
self.searchBar.text = @"gmail.com";
self.siteNameTip.alpha = 1;
self.content.alpha = 1;
self.contentTip.alpha = 1;
self.usernameTip.alpha = 1;
self.typeTip.alpha = 1;
self.toolButton.highlighted = NO;
self.toolTip.alpha = 0;
self.alertTip.alpha = 1;
}];
}
} }
@end @end

View File

@ -21,6 +21,14 @@
@implementation MPNavigationController @implementation MPNavigationController
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if ([[MPiOSConfig get].showSetup boolValue])
[self performSegueWithIdentifier:@"setup" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"web"]) if ([segue.identifier isEqualToString:@"web"])

View File

@ -158,16 +158,16 @@
switch (type) { switch (type) {
case MPElementTypeGeneratedMaximum: case MPElementTypeGeneratedMaximum:
self.strengthLabel.text = @"> age of the universe"; self.strengthLabel.text = @"422 quintillion years";
break; break;
case MPElementTypeGeneratedLong: case MPElementTypeGeneratedLong:
self.strengthLabel.text = @"196 billion years"; self.strengthLabel.text = @"1.4 years";
break; break;
case MPElementTypeGeneratedMedium: case MPElementTypeGeneratedMedium:
self.strengthLabel.text = @"5 months"; self.strengthLabel.text = @"2 seconds";
break; break;
case MPElementTypeGeneratedBasic: case MPElementTypeGeneratedBasic:
self.strengthLabel.text = @"12 days"; self.strengthLabel.text = @"trivial";
break; break;
case MPElementTypeGeneratedShort: case MPElementTypeGeneratedShort:
self.strengthLabel.text = @"trivial"; self.strengthLabel.text = @"trivial";

View File

@ -216,7 +216,7 @@
if (scrollView == self.contentCollectionView) { if (scrollView == self.contentCollectionView) {
NSIndexPath *targetIndexPath = [self.contentCollectionView indexPathForItemAtPoint: NSIndexPath *targetIndexPath = [self.contentCollectionView indexPathForItemAtPoint:
CGPointPlusCGPoint( *targetContentOffset, self.contentCollectionView.center )]; CGPointPlusCGPoint( *targetContentOffset, self.contentCollectionView.center )];
*targetContentOffset = CGPointFromCGRectTopLeft( *targetContentOffset = CGRectGetTopLeft(
[self.contentCollectionView layoutAttributesForItemAtIndexPath:targetIndexPath].frame ); [self.contentCollectionView layoutAttributesForItemAtIndexPath:targetIndexPath].frame );
} }
} }
@ -315,7 +315,7 @@
- (void)saveContentType { - (void)saveContentType {
CGPoint centerPoint = CGPointFromCGRectCenter( self.contentCollectionView.bounds ); CGPoint centerPoint = CGRectGetCenter( self.contentCollectionView.bounds );
NSIndexPath *centerIndexPath = [self.contentCollectionView indexPathForItemAtPoint:centerPoint]; NSIndexPath *centerIndexPath = [self.contentCollectionView indexPathForItemAtPoint:centerPoint];
MPElementType type = [self typeForContentIndexPath:centerIndexPath]; MPElementType type = [self typeForContentIndexPath:centerIndexPath];
if (type == ((MPElementType)NSNotFound)) if (type == ((MPElementType)NSNotFound))

View File

@ -33,8 +33,6 @@
@property(assign, nonatomic) BOOL active; @property(assign, nonatomic) BOOL active;
@property(nonatomic, readonly) MPCoachmark *coachmark;
- (void)setActive:(BOOL)active animated:(BOOL)animated completion:(void (^)(BOOL finished))completion; - (void)setActive:(BOOL)active animated:(BOOL)animated completion:(void (^)(BOOL finished))completion;
- (void)updatePasswords; - (void)updatePasswords;

View File

@ -52,7 +52,6 @@
_backgroundColor = self.passwordCollectionView.backgroundColor; _backgroundColor = self.passwordCollectionView.backgroundColor;
_darkenedBackgroundColor = [_backgroundColor colorWithAlphaComponent:0.6f]; _darkenedBackgroundColor = [_backgroundColor colorWithAlphaComponent:0.6f];
_coachmark = [MPCoachmark coachmarkForClass:[self class] version:0];
self.view.backgroundColor = [UIColor clearColor]; self.view.backgroundColor = [UIColor clearColor];
[self.passwordCollectionView automaticallyAdjustInsetsForKeyboard]; [self.passwordCollectionView automaticallyAdjustInsetsForKeyboard];
@ -72,16 +71,6 @@
[self updatePasswords]; [self updatePasswords];
} }
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
PearlMainQueueAfter( 1, ^{
if (!self.coachmark.coached)
[self performSegueWithIdentifier:@"coachmarks" sender:self];
} );
}
- (void)viewWillDisappear:(BOOL)animated { - (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated]; [super viewWillDisappear:animated];
@ -94,8 +83,6 @@
if ([segue.identifier isEqualToString:@"popdown"]) if ([segue.identifier isEqualToString:@"popdown"])
_popdownVC = segue.destinationViewController; _popdownVC = segue.destinationViewController;
if ([segue.identifier isEqualToString:@"coachmarks"])
((MPCoachmarkViewController *)segue.destinationViewController).coachmark = self.coachmark;
} }
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
@ -110,7 +97,7 @@
- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout - (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout
referenceSizeForHeaderInSection:(NSInteger)section { referenceSizeForHeaderInSection:(NSInteger)section {
return CGSizeMake( collectionView.bounds.size.width, CGPointFromCGRectBottom( self.passwordsSearchBar.frame ).y ); return CGSizeMake( collectionView.bounds.size.width, CGRectGetBottom( self.passwordsSearchBar.frame ).y );
} }
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout

View File

@ -14,7 +14,7 @@
@property(weak, nonatomic) IBOutlet UISwitch *savePasswordSwitch; @property(weak, nonatomic) IBOutlet UISwitch *savePasswordSwitch;
@property(weak, nonatomic) IBOutlet UITableViewCell *signOutCell; @property(weak, nonatomic) IBOutlet UITableViewCell *signOutCell;
@property(weak, nonatomic) IBOutlet UITableViewCell *feedbackCell; @property(weak, nonatomic) IBOutlet UITableViewCell *feedbackCell;
@property(weak, nonatomic) IBOutlet UITableViewCell *coachmarksCell; @property(weak, nonatomic) IBOutlet UITableViewCell *showHelpCell;
@property(weak, nonatomic) IBOutlet UITableViewCell *exportCell; @property(weak, nonatomic) IBOutlet UITableViewCell *exportCell;
@property(weak, nonatomic) IBOutlet UITableViewCell *checkInconsistencies; @property(weak, nonatomic) IBOutlet UITableViewCell *checkInconsistencies;
@property(weak, nonatomic) IBOutlet UIImageView *avatarImage; @property(weak, nonatomic) IBOutlet UIImageView *avatarImage;

View File

@ -65,10 +65,9 @@
[[MPiOSAppDelegate get] showFeedbackWithLogs:YES forVC:self]; [[MPiOSAppDelegate get] showFeedbackWithLogs:YES forVC:self];
if (cell == self.exportCell) if (cell == self.exportCell)
[[MPiOSAppDelegate get] showExportForVC:self]; [[MPiOSAppDelegate get] showExportForVC:self];
if (cell == self.coachmarksCell) { if (cell == self.showHelpCell) {
MPPasswordsViewController *passwordsVC = [self dismissPopup]; MPPasswordsViewController *passwordsVC = [self dismissPopup];
passwordsVC.coachmark.coached = NO; [passwordsVC performSegueWithIdentifier:@"guide" sender:self];
[passwordsVC performSegueWithIdentifier:@"coachmarks" sender:self];
} }
if (cell == self.checkInconsistencies) if (cell == self.checkInconsistencies)
[MPiOSAppDelegate managedObjectContextPerformBlock:^(NSManagedObjectContext *context) { [MPiOSAppDelegate managedObjectContextPerformBlock:^(NSManagedObjectContext *context) {

View File

@ -684,7 +684,6 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
- (void)setActive:(BOOL)active animated:(BOOL)animated { - (void)setActive:(BOOL)active animated:(BOOL)animated {
_active = active; _active = active;
dbg(@"active -> %d", active);
if (active) if (active)
[self setActiveUserState:MPActiveUserStateNone animated:animated]; [self setActiveUserState:MPActiveUserStateNone animated:animated];
@ -695,7 +694,6 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
- (void)setUserIDs:(NSArray *)userIDs { - (void)setUserIDs:(NSArray *)userIDs {
_userIDs = userIDs; _userIDs = userIDs;
dbg(@"userIDs -> %lu", (unsigned long)[userIDs count]);
PearlMainQueue( ^{ PearlMainQueue( ^{
BOOL isNew = NO; BOOL isNew = NO;
@ -732,7 +730,6 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
} }
[_afterUpdates setSuspended:YES]; [_afterUpdates setSuspended:YES];
dbg(@"suspend updates");
__block BOOL requestFirstResponder = NO; __block BOOL requestFirstResponder = NO;
[UIView animateWithDuration:animated? 0.4f: 0 animations:^{ [UIView animateWithDuration:animated? 0.4f: 0 animations:^{
MPAvatarCell *selectedAvatar = [self selectedAvatar]; MPAvatarCell *selectedAvatar = [self selectedAvatar];
@ -752,10 +749,8 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
// Set the entry container's contents. // Set the entry container's contents.
switch (activeUserState) { switch (activeUserState) {
case MPActiveUserStateNone: case MPActiveUserStateNone:
dbg(@"activeUserState -> none");
break; break;
case MPActiveUserStateLogin: { case MPActiveUserStateLogin: {
dbg(@"activeUserState -> login");
self.entryLabel.text = strl( @"Enter your master password:" ); self.entryLabel.text = strl( @"Enter your master password:" );
self.entryField.secureTextEntry = YES; self.entryField.secureTextEntry = YES;
self.entryField.autocapitalizationType = UITextAutocapitalizationTypeNone; self.entryField.autocapitalizationType = UITextAutocapitalizationTypeNone;
@ -763,7 +758,6 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
break; break;
} }
case MPActiveUserStateUserName: { case MPActiveUserStateUserName: {
dbg(@"activeUserState -> userName");
self.entryLabel.text = strl( @"Enter your full name:" ); self.entryLabel.text = strl( @"Enter your full name:" );
self.entryField.secureTextEntry = NO; self.entryField.secureTextEntry = NO;
self.entryField.autocapitalizationType = UITextAutocapitalizationTypeWords; self.entryField.autocapitalizationType = UITextAutocapitalizationTypeWords;
@ -771,7 +765,6 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
break; break;
} }
case MPActiveUserStateMasterPasswordChoice: { case MPActiveUserStateMasterPasswordChoice: {
dbg(@"activeUserState -> masterPasswordChoice");
self.entryLabel.text = strl( @"Choose your master password:" ); self.entryLabel.text = strl( @"Choose your master password:" );
self.entryField.secureTextEntry = YES; self.entryField.secureTextEntry = YES;
self.entryField.autocapitalizationType = UITextAutocapitalizationTypeNone; self.entryField.autocapitalizationType = UITextAutocapitalizationTypeNone;
@ -779,7 +772,6 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
break; break;
} }
case MPActiveUserStateMasterPasswordConfirmation: { case MPActiveUserStateMasterPasswordConfirmation: {
dbg(@"activeUserState -> masterPasswordConfirmation");
_masterPasswordChoice = self.entryField.text; _masterPasswordChoice = self.entryField.text;
self.entryLabel.text = strl( @"Confirm your master password:" ); self.entryLabel.text = strl( @"Confirm your master password:" );
self.entryField.secureTextEntry = YES; self.entryField.secureTextEntry = YES;
@ -788,7 +780,6 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
break; break;
} }
case MPActiveUserStateMinimized: case MPActiveUserStateMinimized:
dbg(@"activeUserState -> minimized");
break; break;
} }
@ -821,18 +812,12 @@ typedef NS_ENUM(NSUInteger, MPActiveUserState) {
} }
} }
} completion:^(BOOL finished) { } completion:^(BOOL finished) {
dbg(@"resume updates");
[_afterUpdates setSuspended:NO]; [_afterUpdates setSuspended:NO];
}]; }];
UIResponder *oldFirstResponder = [UIResponder findFirstResponder]; [self.entryField resignFirstResponder];
if (requestFirstResponder) if (requestFirstResponder)
[self.entryField becomeFirstResponder]; [self.entryField becomeFirstResponder];
else
[self.entryField resignFirstResponder];
UIResponder *newFirstResponder = [UIResponder findFirstResponder];
if (newFirstResponder != oldFirstResponder)
dbg(@"first responder: %@ -> %@", oldFirstResponder, newFirstResponder);
} }
#pragma mark - Actions #pragma mark - Actions

View File

@ -59,6 +59,34 @@
DA071BF3190187FE00179766 /* empty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA071BF1190187FE00179766 /* empty@2x.png */; }; DA071BF3190187FE00179766 /* empty@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA071BF1190187FE00179766 /* empty@2x.png */; };
DA071BF4190187FE00179766 /* empty.png in Resources */ = {isa = PBXBuildFile; fileRef = DA071BF2190187FE00179766 /* empty.png */; }; DA071BF4190187FE00179766 /* empty.png in Resources */ = {isa = PBXBuildFile; fileRef = DA071BF2190187FE00179766 /* empty.png */; };
DA095E75172F4CD8001C948B /* MPLogsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D3979190DACEBD1F6AE9F4 /* MPLogsViewController.m */; }; DA095E75172F4CD8001C948B /* MPLogsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D3979190DACEBD1F6AE9F4 /* MPLogsViewController.m */; };
DA2509FB1956484D00AC23F1 /* image-11@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E11956484D00AC23F1 /* image-11@2x.png */; };
DA2509FC1956484D00AC23F1 /* image-11.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E21956484D00AC23F1 /* image-11.png */; };
DA2509FD1956484D00AC23F1 /* image-10@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E31956484D00AC23F1 /* image-10@2x.png */; };
DA2509FE1956484D00AC23F1 /* image-10.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E41956484D00AC23F1 /* image-10.png */; };
DA2509FF1956484D00AC23F1 /* image-9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E51956484D00AC23F1 /* image-9@2x.png */; };
DA250A001956484D00AC23F1 /* image-9.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E61956484D00AC23F1 /* image-9.png */; };
DA250A011956484D00AC23F1 /* image-8@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E71956484D00AC23F1 /* image-8@2x.png */; };
DA250A021956484D00AC23F1 /* image-8.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E81956484D00AC23F1 /* image-8.png */; };
DA250A031956484D00AC23F1 /* image-7@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509E91956484D00AC23F1 /* image-7@2x.png */; };
DA250A041956484D00AC23F1 /* image-7.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509EA1956484D00AC23F1 /* image-7.png */; };
DA250A051956484D00AC23F1 /* image-6@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509EB1956484D00AC23F1 /* image-6@2x.png */; };
DA250A061956484D00AC23F1 /* image-6.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509EC1956484D00AC23F1 /* image-6.png */; };
DA250A071956484D00AC23F1 /* image-5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509ED1956484D00AC23F1 /* image-5@2x.png */; };
DA250A081956484D00AC23F1 /* image-5.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509EE1956484D00AC23F1 /* image-5.png */; };
DA250A091956484D00AC23F1 /* image-4@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509EF1956484D00AC23F1 /* image-4@2x.png */; };
DA250A0A1956484D00AC23F1 /* image-4.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F01956484D00AC23F1 /* image-4.png */; };
DA250A0B1956484D00AC23F1 /* image-3@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F11956484D00AC23F1 /* image-3@2x.png */; };
DA250A0C1956484D00AC23F1 /* image-3.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F21956484D00AC23F1 /* image-3.png */; };
DA250A0D1956484D00AC23F1 /* image-2@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F31956484D00AC23F1 /* image-2@2x.png */; };
DA250A0E1956484D00AC23F1 /* image-2.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F41956484D00AC23F1 /* image-2.png */; };
DA250A0F1956484D00AC23F1 /* image-1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F51956484D00AC23F1 /* image-1@2x.png */; };
DA250A101956484D00AC23F1 /* image-1.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F61956484D00AC23F1 /* image-1.png */; };
DA250A111956484D00AC23F1 /* image-0@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F71956484D00AC23F1 /* image-0@2x.png */; };
DA250A121956484D00AC23F1 /* image-0.png in Resources */ = {isa = PBXBuildFile; fileRef = DA2509F81956484D00AC23F1 /* image-0.png */; };
DA250A17195665A100AC23F1 /* UITableView+PearlReloadFromArray.m in Sources */ = {isa = PBXBuildFile; fileRef = DA250A13195665A100AC23F1 /* UITableView+PearlReloadFromArray.m */; };
DA250A18195665A100AC23F1 /* UITableView+PearlReloadFromArray.h in Headers */ = {isa = PBXBuildFile; fileRef = DA250A14195665A100AC23F1 /* UITableView+PearlReloadFromArray.h */; };
DA250A19195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.m in Sources */ = {isa = PBXBuildFile; fileRef = DA250A15195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.m */; };
DA250A1A195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h in Headers */ = {isa = PBXBuildFile; fileRef = DA250A16195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h */; };
DA2CA4DD18D28859007798F8 /* NSArray+Pearl.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2CA4D918D28859007798F8 /* NSArray+Pearl.m */; }; DA2CA4DD18D28859007798F8 /* NSArray+Pearl.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2CA4D918D28859007798F8 /* NSArray+Pearl.m */; };
DA2CA4DE18D28859007798F8 /* NSArray+Pearl.h in Headers */ = {isa = PBXBuildFile; fileRef = DA2CA4DA18D28859007798F8 /* NSArray+Pearl.h */; }; DA2CA4DE18D28859007798F8 /* NSArray+Pearl.h in Headers */ = {isa = PBXBuildFile; fileRef = DA2CA4DA18D28859007798F8 /* NSArray+Pearl.h */; };
DA2CA4DF18D28859007798F8 /* NSTimer+PearlBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2CA4DB18D28859007798F8 /* NSTimer+PearlBlock.m */; }; DA2CA4DF18D28859007798F8 /* NSTimer+PearlBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2CA4DB18D28859007798F8 /* NSTimer+PearlBlock.m */; };
@ -541,6 +569,34 @@
DA04E33D14B1E70400ECA4F3 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; DA04E33D14B1E70400ECA4F3 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
DA071BF1190187FE00179766 /* empty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "empty@2x.png"; sourceTree = "<group>"; }; DA071BF1190187FE00179766 /* empty@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "empty@2x.png"; sourceTree = "<group>"; };
DA071BF2190187FE00179766 /* empty.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = empty.png; sourceTree = "<group>"; }; DA071BF2190187FE00179766 /* empty.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = empty.png; sourceTree = "<group>"; };
DA2509E11956484D00AC23F1 /* image-11@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-11@2x.png"; sourceTree = "<group>"; };
DA2509E21956484D00AC23F1 /* image-11.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-11.png"; sourceTree = "<group>"; };
DA2509E31956484D00AC23F1 /* image-10@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-10@2x.png"; sourceTree = "<group>"; };
DA2509E41956484D00AC23F1 /* image-10.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-10.png"; sourceTree = "<group>"; };
DA2509E51956484D00AC23F1 /* image-9@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-9@2x.png"; sourceTree = "<group>"; };
DA2509E61956484D00AC23F1 /* image-9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-9.png"; sourceTree = "<group>"; };
DA2509E71956484D00AC23F1 /* image-8@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-8@2x.png"; sourceTree = "<group>"; };
DA2509E81956484D00AC23F1 /* image-8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-8.png"; sourceTree = "<group>"; };
DA2509E91956484D00AC23F1 /* image-7@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-7@2x.png"; sourceTree = "<group>"; };
DA2509EA1956484D00AC23F1 /* image-7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-7.png"; sourceTree = "<group>"; };
DA2509EB1956484D00AC23F1 /* image-6@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-6@2x.png"; sourceTree = "<group>"; };
DA2509EC1956484D00AC23F1 /* image-6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-6.png"; sourceTree = "<group>"; };
DA2509ED1956484D00AC23F1 /* image-5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-5@2x.png"; sourceTree = "<group>"; };
DA2509EE1956484D00AC23F1 /* image-5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-5.png"; sourceTree = "<group>"; };
DA2509EF1956484D00AC23F1 /* image-4@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-4@2x.png"; sourceTree = "<group>"; };
DA2509F01956484D00AC23F1 /* image-4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-4.png"; sourceTree = "<group>"; };
DA2509F11956484D00AC23F1 /* image-3@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-3@2x.png"; sourceTree = "<group>"; };
DA2509F21956484D00AC23F1 /* image-3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-3.png"; sourceTree = "<group>"; };
DA2509F31956484D00AC23F1 /* image-2@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-2@2x.png"; sourceTree = "<group>"; };
DA2509F41956484D00AC23F1 /* image-2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-2.png"; sourceTree = "<group>"; };
DA2509F51956484D00AC23F1 /* image-1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-1@2x.png"; sourceTree = "<group>"; };
DA2509F61956484D00AC23F1 /* image-1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-1.png"; sourceTree = "<group>"; };
DA2509F71956484D00AC23F1 /* image-0@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-0@2x.png"; sourceTree = "<group>"; };
DA2509F81956484D00AC23F1 /* image-0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "image-0.png"; sourceTree = "<group>"; };
DA250A13195665A100AC23F1 /* UITableView+PearlReloadFromArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITableView+PearlReloadFromArray.m"; sourceTree = "<group>"; };
DA250A14195665A100AC23F1 /* UITableView+PearlReloadFromArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableView+PearlReloadFromArray.h"; sourceTree = "<group>"; };
DA250A15195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionReusableView+PearlDequeue.m"; sourceTree = "<group>"; };
DA250A16195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionReusableView+PearlDequeue.h"; sourceTree = "<group>"; };
DA2CA4D918D28859007798F8 /* NSArray+Pearl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Pearl.m"; sourceTree = "<group>"; }; DA2CA4D918D28859007798F8 /* NSArray+Pearl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Pearl.m"; sourceTree = "<group>"; };
DA2CA4DA18D28859007798F8 /* NSArray+Pearl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Pearl.h"; sourceTree = "<group>"; }; DA2CA4DA18D28859007798F8 /* NSArray+Pearl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Pearl.h"; sourceTree = "<group>"; };
DA2CA4DB18D28859007798F8 /* NSTimer+PearlBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSTimer+PearlBlock.m"; sourceTree = "<group>"; }; DA2CA4DB18D28859007798F8 /* NSTimer+PearlBlock.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSTimer+PearlBlock.m"; sourceTree = "<group>"; };
@ -1598,6 +1654,37 @@
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
DA2509B619563E1E00AC23F1 /* Guide */ = {
isa = PBXGroup;
children = (
DA2509E11956484D00AC23F1 /* image-11@2x.png */,
DA2509E21956484D00AC23F1 /* image-11.png */,
DA2509E31956484D00AC23F1 /* image-10@2x.png */,
DA2509E41956484D00AC23F1 /* image-10.png */,
DA2509E51956484D00AC23F1 /* image-9@2x.png */,
DA2509E61956484D00AC23F1 /* image-9.png */,
DA2509E71956484D00AC23F1 /* image-8@2x.png */,
DA2509E81956484D00AC23F1 /* image-8.png */,
DA2509E91956484D00AC23F1 /* image-7@2x.png */,
DA2509EA1956484D00AC23F1 /* image-7.png */,
DA2509EB1956484D00AC23F1 /* image-6@2x.png */,
DA2509EC1956484D00AC23F1 /* image-6.png */,
DA2509ED1956484D00AC23F1 /* image-5@2x.png */,
DA2509EE1956484D00AC23F1 /* image-5.png */,
DA2509EF1956484D00AC23F1 /* image-4@2x.png */,
DA2509F01956484D00AC23F1 /* image-4.png */,
DA2509F11956484D00AC23F1 /* image-3@2x.png */,
DA2509F21956484D00AC23F1 /* image-3.png */,
DA2509F31956484D00AC23F1 /* image-2@2x.png */,
DA2509F41956484D00AC23F1 /* image-2.png */,
DA2509F51956484D00AC23F1 /* image-1@2x.png */,
DA2509F61956484D00AC23F1 /* image-1.png */,
DA2509F71956484D00AC23F1 /* image-0@2x.png */,
DA2509F81956484D00AC23F1 /* image-0.png */,
);
path = Guide;
sourceTree = "<group>";
};
DA5BFA39147E415C00F98B1E = { DA5BFA39147E415C00F98B1E = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -1696,6 +1783,7 @@
DABD360D1711E29400CF925C /* Media */ = { DABD360D1711E29400CF925C /* Media */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
DA2509B619563E1E00AC23F1 /* Guide */,
DA071BF1190187FE00179766 /* empty@2x.png */, DA071BF1190187FE00179766 /* empty@2x.png */,
DA071BF2190187FE00179766 /* empty.png */, DA071BF2190187FE00179766 /* empty.png */,
DADBB55918DB0CFC00D099FE /* keyboard-dark@2x.png */, DADBB55918DB0CFC00D099FE /* keyboard-dark@2x.png */,
@ -2904,6 +2992,10 @@
DAFE460715039823003ABA7C /* Pearl-UIKit */ = { DAFE460715039823003ABA7C /* Pearl-UIKit */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
DA250A13195665A100AC23F1 /* UITableView+PearlReloadFromArray.m */,
DA250A14195665A100AC23F1 /* UITableView+PearlReloadFromArray.h */,
DA250A15195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.m */,
DA250A16195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h */,
DAEC85B118E3DD9A007FC0DF /* PearlUIView.m */, DAEC85B118E3DD9A007FC0DF /* PearlUIView.m */,
DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */, DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */,
DAEC85B318E3DD9A007FC0DF /* PearlUINavigationBar.h */, DAEC85B318E3DD9A007FC0DF /* PearlUINavigationBar.h */,
@ -3020,6 +3112,7 @@
DAEB936F18AA537D000490CC /* rc4.h in Headers */, DAEB936F18AA537D000490CC /* rc4.h in Headers */,
DAEB933318AA537D000490CC /* crypto_aesctr.h in Headers */, DAEB933318AA537D000490CC /* crypto_aesctr.h in Headers */,
DAEB936718AA537D000490CC /* ossl_typ.h in Headers */, DAEB936718AA537D000490CC /* ossl_typ.h in Headers */,
DA250A1A195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.h in Headers */,
DAEB937018AA537D000490CC /* ripemd.h in Headers */, DAEB937018AA537D000490CC /* ripemd.h in Headers */,
DAEB933F18AA537D000490CC /* asn1t.h in Headers */, DAEB933F18AA537D000490CC /* asn1t.h in Headers */,
DAEB936418AA537D000490CC /* ocsp.h in Headers */, DAEB936418AA537D000490CC /* ocsp.h in Headers */,
@ -3046,6 +3139,7 @@
DAFE4A2815039824003ABA7C /* PearlMathUtils.h in Headers */, DAFE4A2815039824003ABA7C /* PearlMathUtils.h in Headers */,
DAEB934418AA537D000490CC /* camellia.h in Headers */, DAEB934418AA537D000490CC /* camellia.h in Headers */,
DAFE4A2A15039824003ABA7C /* PearlObjectUtils.h in Headers */, DAFE4A2A15039824003ABA7C /* PearlObjectUtils.h in Headers */,
DA250A18195665A100AC23F1 /* UITableView+PearlReloadFromArray.h in Headers */,
DAEB936D18AA537D000490CC /* rand.h in Headers */, DAEB936D18AA537D000490CC /* rand.h in Headers */,
DAFE4A2C15039824003ABA7C /* PearlResettable.h in Headers */, DAFE4A2C15039824003ABA7C /* PearlResettable.h in Headers */,
DAFE4A2D15039824003ABA7C /* PearlStrings.h in Headers */, DAFE4A2D15039824003ABA7C /* PearlStrings.h in Headers */,
@ -3425,6 +3519,7 @@
DACA296F1705DF81002C6C22 /* Crashlytics.plist in Resources */, DACA296F1705DF81002C6C22 /* Crashlytics.plist in Resources */,
DADEF4171810D2940052CA3E /* love-lyndir.button.red@2x.png in Resources */, DADEF4171810D2940052CA3E /* love-lyndir.button.red@2x.png in Resources */,
DACA29731705E1A8002C6C22 /* ciphers.plist in Resources */, DACA29731705E1A8002C6C22 /* ciphers.plist in Resources */,
DA250A0F1956484D00AC23F1 /* image-1@2x.png in Resources */,
DACA29741705E1A8002C6C22 /* dictionary.lst in Resources */, DACA29741705E1A8002C6C22 /* dictionary.lst in Resources */,
DA45224C190628B2008F650A /* icon_gear@2x.png in Resources */, DA45224C190628B2008F650A /* icon_gear@2x.png in Resources */,
DA854C8318D4CFBF00106317 /* avatar-add@2x.png in Resources */, DA854C8318D4CFBF00106317 /* avatar-add@2x.png in Resources */,
@ -3435,17 +3530,20 @@
DA4522451902355C008F650A /* icon_book@2x.png in Resources */, DA4522451902355C008F650A /* icon_book@2x.png in Resources */,
DABD39371711E29700CF925C /* avatar-0.png in Resources */, DABD39371711E29700CF925C /* avatar-0.png in Resources */,
DABD39381711E29700CF925C /* avatar-0@2x.png in Resources */, DABD39381711E29700CF925C /* avatar-0@2x.png in Resources */,
DA250A041956484D00AC23F1 /* image-7.png in Resources */,
DABD39391711E29700CF925C /* avatar-1.png in Resources */, DABD39391711E29700CF925C /* avatar-1.png in Resources */,
DA7304E5194E025900E72520 /* tip_basic_black.png in Resources */, DA7304E5194E025900E72520 /* tip_basic_black.png in Resources */,
DABD393A1711E29700CF925C /* avatar-10.png in Resources */, DABD393A1711E29700CF925C /* avatar-10.png in Resources */,
DABD393B1711E29700CF925C /* avatar-10@2x.png in Resources */, DABD393B1711E29700CF925C /* avatar-10@2x.png in Resources */,
DADEF41C1810D2940052CA3E /* love-lyndir.heart.red.png in Resources */, DADEF41C1810D2940052CA3E /* love-lyndir.heart.red.png in Resources */,
DABD393C1711E29700CF925C /* avatar-11.png in Resources */, DABD393C1711E29700CF925C /* avatar-11.png in Resources */,
DA250A0A1956484D00AC23F1 /* image-4.png in Resources */,
DABD393D1711E29700CF925C /* avatar-11@2x.png in Resources */, DABD393D1711E29700CF925C /* avatar-11@2x.png in Resources */,
DA73049D194E022700E72520 /* ui_spinner.png in Resources */, DA73049D194E022700E72520 /* ui_spinner.png in Resources */,
DABD393E1711E29700CF925C /* avatar-12.png in Resources */, DABD393E1711E29700CF925C /* avatar-12.png in Resources */,
DABD393F1711E29700CF925C /* avatar-12@2x.png in Resources */, DABD393F1711E29700CF925C /* avatar-12@2x.png in Resources */,
DA67461018DE7F0C00DFE240 /* Exo2.0-Bold.otf in Resources */, DA67461018DE7F0C00DFE240 /* Exo2.0-Bold.otf in Resources */,
DA2509FC1956484D00AC23F1 /* image-11.png in Resources */,
DABD39401711E29700CF925C /* avatar-13.png in Resources */, DABD39401711E29700CF925C /* avatar-13.png in Resources */,
DABD39411711E29700CF925C /* avatar-13@2x.png in Resources */, DABD39411711E29700CF925C /* avatar-13@2x.png in Resources */,
DABD39421711E29700CF925C /* avatar-14.png in Resources */, DABD39421711E29700CF925C /* avatar-14.png in Resources */,
@ -3456,9 +3554,11 @@
DABD39461711E29700CF925C /* avatar-16.png in Resources */, DABD39461711E29700CF925C /* avatar-16.png in Resources */,
DABD39471711E29700CF925C /* avatar-16@2x.png in Resources */, DABD39471711E29700CF925C /* avatar-16@2x.png in Resources */,
DA7304E7194E027C00E72520 /* Square-bottom.png in Resources */, DA7304E7194E027C00E72520 /* Square-bottom.png in Resources */,
DA250A091956484D00AC23F1 /* image-4@2x.png in Resources */,
DABD39481711E29700CF925C /* avatar-17.png in Resources */, DABD39481711E29700CF925C /* avatar-17.png in Resources */,
DABD39491711E29700CF925C /* avatar-17@2x.png in Resources */, DABD39491711E29700CF925C /* avatar-17@2x.png in Resources */,
DAC8DF47192831E100BA7D71 /* icon_key.png in Resources */, DAC8DF47192831E100BA7D71 /* icon_key.png in Resources */,
DA250A071956484D00AC23F1 /* image-5@2x.png in Resources */,
DAC8DF48192831E100BA7D71 /* icon_key@2x.png in Resources */, DAC8DF48192831E100BA7D71 /* icon_key@2x.png in Resources */,
DABD394A1711E29700CF925C /* avatar-18.png in Resources */, DABD394A1711E29700CF925C /* avatar-18.png in Resources */,
DABD394B1711E29700CF925C /* avatar-18@2x.png in Resources */, DABD394B1711E29700CF925C /* avatar-18@2x.png in Resources */,
@ -3467,19 +3567,24 @@
DA67460E18DE7F0C00DFE240 /* Exo2.0-Regular.otf in Resources */, DA67460E18DE7F0C00DFE240 /* Exo2.0-Regular.otf in Resources */,
DABD394D1711E29700CF925C /* avatar-2.png in Resources */, DABD394D1711E29700CF925C /* avatar-2.png in Resources */,
DABD394E1711E29700CF925C /* avatar-2@2x.png in Resources */, DABD394E1711E29700CF925C /* avatar-2@2x.png in Resources */,
DA250A061956484D00AC23F1 /* image-6.png in Resources */,
DABD394F1711E29700CF925C /* avatar-3.png in Resources */, DABD394F1711E29700CF925C /* avatar-3.png in Resources */,
DA67460F18DE7F0C00DFE240 /* Exo2.0-ExtraBold.otf in Resources */, DA67460F18DE7F0C00DFE240 /* Exo2.0-ExtraBold.otf in Resources */,
DABD39501711E29700CF925C /* avatar-3@2x.png in Resources */, DABD39501711E29700CF925C /* avatar-3@2x.png in Resources */,
DABD39511711E29700CF925C /* avatar-4.png in Resources */, DABD39511711E29700CF925C /* avatar-4.png in Resources */,
DA2509FD1956484D00AC23F1 /* image-10@2x.png in Resources */,
DABD39521711E29700CF925C /* avatar-4@2x.png in Resources */, DABD39521711E29700CF925C /* avatar-4@2x.png in Resources */,
DABD39531711E29700CF925C /* avatar-5.png in Resources */, DABD39531711E29700CF925C /* avatar-5.png in Resources */,
DA73049E194E022700E72520 /* ui_spinner@2x.png in Resources */, DA73049E194E022700E72520 /* ui_spinner@2x.png in Resources */,
DABD39541711E29700CF925C /* avatar-5@2x.png in Resources */, DABD39541711E29700CF925C /* avatar-5@2x.png in Resources */,
DA250A031956484D00AC23F1 /* image-7@2x.png in Resources */,
DABD39551711E29700CF925C /* avatar-6.png in Resources */, DABD39551711E29700CF925C /* avatar-6.png in Resources */,
DABD39561711E29700CF925C /* avatar-6@2x.png in Resources */, DABD39561711E29700CF925C /* avatar-6@2x.png in Resources */,
DABD39571711E29700CF925C /* avatar-7.png in Resources */, DABD39571711E29700CF925C /* avatar-7.png in Resources */,
DABD39581711E29700CF925C /* avatar-7@2x.png in Resources */, DABD39581711E29700CF925C /* avatar-7@2x.png in Resources */,
DABD39591711E29700CF925C /* avatar-8.png in Resources */, DABD39591711E29700CF925C /* avatar-8.png in Resources */,
DA250A0D1956484D00AC23F1 /* image-2@2x.png in Resources */,
DA250A051956484D00AC23F1 /* image-6@2x.png in Resources */,
DADEF41D1810D2940052CA3E /* love-lyndir.heart.red@2x.png in Resources */, DADEF41D1810D2940052CA3E /* love-lyndir.heart.red@2x.png in Resources */,
DABD395A1711E29700CF925C /* avatar-8@2x.png in Resources */, DABD395A1711E29700CF925C /* avatar-8@2x.png in Resources */,
DABD395B1711E29700CF925C /* avatar-9.png in Resources */, DABD395B1711E29700CF925C /* avatar-9.png in Resources */,
@ -3488,8 +3593,10 @@
DA45224719062899008F650A /* icon_settings.png in Resources */, DA45224719062899008F650A /* icon_settings.png in Resources */,
DABD395E1711E29700CF925C /* background@2x.png in Resources */, DABD395E1711E29700CF925C /* background@2x.png in Resources */,
DA945C8717E3F3FD0053236B /* Images.xcassets in Resources */, DA945C8717E3F3FD0053236B /* Images.xcassets in Resources */,
DA250A101956484D00AC23F1 /* image-1.png in Resources */,
DABD39871711E29700CF925C /* SourceCodePro-Black.otf in Resources */, DABD39871711E29700CF925C /* SourceCodePro-Black.otf in Resources */,
DADEF4161810D2940052CA3E /* love-lyndir.button.red.png in Resources */, DADEF4161810D2940052CA3E /* love-lyndir.button.red.png in Resources */,
DA2509FE1956484D00AC23F1 /* image-10.png in Resources */,
DADEF44E1810FA3B0052CA3E /* LoveLyndir.storyboard in Resources */, DADEF44E1810FA3B0052CA3E /* LoveLyndir.storyboard in Resources */,
DABD39881711E29700CF925C /* SourceCodePro-ExtraLight.otf in Resources */, DABD39881711E29700CF925C /* SourceCodePro-ExtraLight.otf in Resources */,
DABD39A01711E29700CF925C /* icon_action.png in Resources */, DABD39A01711E29700CF925C /* icon_action.png in Resources */,
@ -3497,6 +3604,7 @@
DABD39F21711E29700CF925C /* icon_cancel.png in Resources */, DABD39F21711E29700CF925C /* icon_cancel.png in Resources */,
DA73049F194E022B00E72520 /* ui_textfield.png in Resources */, DA73049F194E022B00E72520 /* ui_textfield.png in Resources */,
DABD39F31711E29700CF925C /* icon_cancel@2x.png in Resources */, DABD39F31711E29700CF925C /* icon_cancel@2x.png in Resources */,
DA250A0C1956484D00AC23F1 /* image-3.png in Resources */,
DABD3A261711E29700CF925C /* icon_edit.png in Resources */, DABD3A261711E29700CF925C /* icon_edit.png in Resources */,
DABD3A271711E29700CF925C /* icon_edit@2x.png in Resources */, DABD3A271711E29700CF925C /* icon_edit@2x.png in Resources */,
DADEF41B1810D2940052CA3E /* love-lyndir.heart.grey@2x.png in Resources */, DADEF41B1810D2940052CA3E /* love-lyndir.heart.grey@2x.png in Resources */,
@ -3512,14 +3620,17 @@
DADEF4141810D2940052CA3E /* love-lyndir.button.grey.png in Resources */, DADEF4141810D2940052CA3E /* love-lyndir.button.grey.png in Resources */,
DABD3ABD1711E29800CF925C /* icon_play@2x.png in Resources */, DABD3ABD1711E29800CF925C /* icon_play@2x.png in Resources */,
DABD3ABE1711E29800CF925C /* icon_plus.png in Resources */, DABD3ABE1711E29800CF925C /* icon_plus.png in Resources */,
DA250A081956484D00AC23F1 /* image-5.png in Resources */,
DABD3ABF1711E29800CF925C /* icon_plus@2x.png in Resources */, DABD3ABF1711E29800CF925C /* icon_plus@2x.png in Resources */,
DADEF4181810D2940052CA3E /* love-lyndir.heart.green.png in Resources */, DADEF4181810D2940052CA3E /* love-lyndir.heart.green.png in Resources */,
DA69540717D975D900BF294E /* icon_gears@2x.png in Resources */, DA69540717D975D900BF294E /* icon_gears@2x.png in Resources */,
DABD3B1C1711E29800CF925C /* icon_up.png in Resources */, DABD3B1C1711E29800CF925C /* icon_up.png in Resources */,
DABD3B1D1711E29800CF925C /* icon_up@2x.png in Resources */, DABD3B1D1711E29800CF925C /* icon_up@2x.png in Resources */,
DA250A121956484D00AC23F1 /* image-0.png in Resources */,
DA9B51551895D79E009D2A0B /* gittip.png in Resources */, DA9B51551895D79E009D2A0B /* gittip.png in Resources */,
DA4522441902355C008F650A /* icon_book.png in Resources */, DA4522441902355C008F650A /* icon_book.png in Resources */,
DABD3B8A1711E29800CF925C /* help.html in Resources */, DABD3B8A1711E29800CF925C /* help.html in Resources */,
DA2509FF1956484D00AC23F1 /* image-9@2x.png in Resources */,
DABD3B8D1711E29800CF925C /* keypad.png in Resources */, DABD3B8D1711E29800CF925C /* keypad.png in Resources */,
DABD3B8E1711E29800CF925C /* logo-bare.png in Resources */, DABD3B8E1711E29800CF925C /* logo-bare.png in Resources */,
DADEF44B1810E7F30052CA3E /* love-lyndir.picker.png in Resources */, DADEF44B1810E7F30052CA3E /* love-lyndir.picker.png in Resources */,
@ -3533,11 +3644,14 @@
DA7304A0194E022B00E72520 /* ui_textfield@2x.png in Resources */, DA7304A0194E022B00E72520 /* ui_textfield@2x.png in Resources */,
DA452249190628A1008F650A /* icon_wrench.png in Resources */, DA452249190628A1008F650A /* icon_wrench.png in Resources */,
DA45224819062899008F650A /* icon_settings@2x.png in Resources */, DA45224819062899008F650A /* icon_settings@2x.png in Resources */,
DA250A001956484D00AC23F1 /* image-9.png in Resources */,
DADEF4121810D2940052CA3E /* love-lyndir.button.green.png in Resources */, DADEF4121810D2940052CA3E /* love-lyndir.button.green.png in Resources */,
DA854C8418D4CFBF00106317 /* avatar-add.png in Resources */, DA854C8418D4CFBF00106317 /* avatar-add.png in Resources */,
DABD3C241711E2DC00CF925C /* MasterPassword.entitlements in Resources */, DABD3C241711E2DC00CF925C /* MasterPassword.entitlements in Resources */,
DABD3C251711E2DC00CF925C /* Settings.bundle in Resources */, DABD3C251711E2DC00CF925C /* Settings.bundle in Resources */,
DABD3C261711E2DC00CF925C /* InfoPlist.strings in Resources */, DABD3C261711E2DC00CF925C /* InfoPlist.strings in Resources */,
DA2509FB1956484D00AC23F1 /* image-11@2x.png in Resources */,
DA250A0B1956484D00AC23F1 /* image-3@2x.png in Resources */,
DABD3FCA1712446200CF925C /* cloud.png in Resources */, DABD3FCA1712446200CF925C /* cloud.png in Resources */,
DABD3FCB1712446200CF925C /* cloud@2x.png in Resources */, DABD3FCB1712446200CF925C /* cloud@2x.png in Resources */,
DABD3FCE1714F45C00CF925C /* identity.png in Resources */, DABD3FCE1714F45C00CF925C /* identity.png in Resources */,
@ -3546,11 +3660,15 @@
DA45224B190628B2008F650A /* icon_gear.png in Resources */, DA45224B190628B2008F650A /* icon_gear.png in Resources */,
DAE1EF2217E942DE00BC0086 /* Localizable.strings in Resources */, DAE1EF2217E942DE00BC0086 /* Localizable.strings in Resources */,
DA38D6A318CCB5BF009AEB3E /* Storyboard.storyboard in Resources */, DA38D6A318CCB5BF009AEB3E /* Storyboard.storyboard in Resources */,
DA250A021956484D00AC23F1 /* image-8.png in Resources */,
DA5A09DF171A70E4005284AB /* play.png in Resources */, DA5A09DF171A70E4005284AB /* play.png in Resources */,
DA5A09E0171A70E4005284AB /* play@2x.png in Resources */, DA5A09E0171A70E4005284AB /* play@2x.png in Resources */,
DA5A09EA171BB0F7005284AB /* unlocked.png in Resources */, DA5A09EA171BB0F7005284AB /* unlocked.png in Resources */,
DA250A0E1956484D00AC23F1 /* image-2.png in Resources */,
DA5A09EB171BB0F7005284AB /* unlocked@2x.png in Resources */, DA5A09EB171BB0F7005284AB /* unlocked@2x.png in Resources */,
DADEF44C1810E7F30052CA3E /* love-lyndir.picker@2x.png in Resources */, DADEF44C1810E7F30052CA3E /* love-lyndir.picker@2x.png in Resources */,
DA250A011956484D00AC23F1 /* image-8@2x.png in Resources */,
DA250A111956484D00AC23F1 /* image-0@2x.png in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -3699,6 +3817,7 @@
DAFE4A3015039824003ABA7C /* PearlStringUtils.m in Sources */, DAFE4A3015039824003ABA7C /* PearlStringUtils.m in Sources */,
DAFE4A3515039824003ABA7C /* PearlCryptUtils.m in Sources */, DAFE4A3515039824003ABA7C /* PearlCryptUtils.m in Sources */,
DAFE4A3715039824003ABA7C /* PearlKeyChain.m in Sources */, DAFE4A3715039824003ABA7C /* PearlKeyChain.m in Sources */,
DA250A17195665A100AC23F1 /* UITableView+PearlReloadFromArray.m in Sources */,
DAFE4A3915039824003ABA7C /* PearlRSAKey.m in Sources */, DAFE4A3915039824003ABA7C /* PearlRSAKey.m in Sources */,
DAFE4A3B15039824003ABA7C /* PearlSCrypt.m in Sources */, DAFE4A3B15039824003ABA7C /* PearlSCrypt.m in Sources */,
DAFE4A3F15039824003ABA7C /* PearlAlert.m in Sources */, DAFE4A3F15039824003ABA7C /* PearlAlert.m in Sources */,
@ -3706,6 +3825,7 @@
DAFE4A4315039824003ABA7C /* PearlBoxView.m in Sources */, DAFE4A4315039824003ABA7C /* PearlBoxView.m in Sources */,
DAFE4A4515039824003ABA7C /* PearlGradientView.m in Sources */, DAFE4A4515039824003ABA7C /* PearlGradientView.m in Sources */,
DAFE4A4715039824003ABA7C /* PearlLayout.m in Sources */, DAFE4A4715039824003ABA7C /* PearlLayout.m in Sources */,
DA250A19195665A100AC23F1 /* UICollectionReusableView+PearlDequeue.m in Sources */,
DAFE4A4915039824003ABA7C /* PearlLayoutView.m in Sources */, DAFE4A4915039824003ABA7C /* PearlLayoutView.m in Sources */,
DAFE4A4B15039824003ABA7C /* PearlMessageView.m in Sources */, DAFE4A4B15039824003ABA7C /* PearlMessageView.m in Sources */,
DAFE4A4D15039824003ABA7C /* PearlRootViewController.m in Sources */, DAFE4A4D15039824003ABA7C /* PearlRootViewController.m in Sources */,

View File

@ -361,11 +361,11 @@
<viewControllerLayoutGuide type="bottom" id="Eo0-ai-7DG"/> <viewControllerLayoutGuide type="bottom" id="Eo0-ai-7DG"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="2Jz-8H-3nG" userLabel="Root"> <view key="view" contentMode="scaleToFill" id="2Jz-8H-3nG" userLabel="Root">
<rect key="frame" x="0.0" y="0.0" width="320" height="548"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
<webView contentMode="scaleToFill" scalesPageToFit="YES" suppressesIncrementalRendering="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3aB-Hk-Fgd"> <webView contentMode="scaleToFill" scalesPageToFit="YES" suppressesIncrementalRendering="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3aB-Hk-Fgd">
<rect key="frame" x="0.0" y="20" width="320" height="528"/> <rect key="frame" x="0.0" y="20" width="320" height="548"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<connections> <connections>
@ -504,9 +504,43 @@
<sections> <sections>
<tableViewSection id="FEv-Rb-jst"> <tableViewSection id="FEv-Rb-jst">
<cells> <cells>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="97" id="R30-AU-bR6" userLabel="Sign Out"> <tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="97" id="eth-Dc-JYn" userLabel="Show Help">
<rect key="frame" x="0.0" y="0.0" width="320" height="97"/> <rect key="frame" x="0.0" y="0.0" width="320" height="97"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="eth-Dc-JYn" id="8m6-pP-lda">
<rect key="frame" x="0.0" y="0.0" width="287" height="96"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Show Help" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x9b-Qa-Pza">
<rect key="frame" x="20" y="20" width="247" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Open the short step-by-step guide which explains how to use Master Password." lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="247" translatesAutoresizingMaskIntoConstraints="NO" id="bKz-o1-gHv">
<rect key="frame" x="20" y="49" width="247" height="27"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Thin" family="Exo 2.0" pointSize="11"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="bKz-o1-gHv" firstAttribute="leading" secondItem="8m6-pP-lda" secondAttribute="leading" constant="20" symbolic="YES" id="0eE-CN-kk5"/>
<constraint firstItem="x9b-Qa-Pza" firstAttribute="top" secondItem="8m6-pP-lda" secondAttribute="top" constant="20" symbolic="YES" id="49Z-eX-muM"/>
<constraint firstItem="x9b-Qa-Pza" firstAttribute="leading" secondItem="8m6-pP-lda" secondAttribute="leading" constant="20" symbolic="YES" id="FkN-p2-cZp"/>
<constraint firstAttribute="trailing" secondItem="x9b-Qa-Pza" secondAttribute="trailing" constant="20" symbolic="YES" id="JHI-tD-twr"/>
<constraint firstAttribute="trailing" secondItem="bKz-o1-gHv" secondAttribute="trailing" constant="20" symbolic="YES" id="Nde-K4-9wG"/>
<constraint firstAttribute="bottom" secondItem="bKz-o1-gHv" secondAttribute="bottom" constant="20" symbolic="YES" id="b8g-US-LwY"/>
<constraint firstItem="bKz-o1-gHv" firstAttribute="top" secondItem="x9b-Qa-Pza" secondAttribute="bottom" constant="8" symbolic="YES" id="xcl-jC-fG7"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="97" id="R30-AU-bR6" userLabel="Sign Out">
<rect key="frame" x="0.0" y="97" width="320" height="97"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="R30-AU-bR6" id="f6h-Ff-2Qc"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="R30-AU-bR6" id="f6h-Ff-2Qc">
<rect key="frame" x="0.0" y="0.0" width="287" height="96"/> <rect key="frame" x="0.0" y="0.0" width="287" height="96"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
@ -539,7 +573,7 @@
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tableViewCell> </tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="216" id="B8R-iE-Ffe" userLabel="Default Password Type"> <tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="216" id="B8R-iE-Ffe" userLabel="Default Password Type">
<rect key="frame" x="0.0" y="97" width="320" height="216"/> <rect key="frame" x="0.0" y="194" width="320" height="216"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="B8R-iE-Ffe" id="8r5-Zc-TRj"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="B8R-iE-Ffe" id="8r5-Zc-TRj">
<rect key="frame" x="0.0" y="0.0" width="320" height="215"/> <rect key="frame" x="0.0" y="0.0" width="320" height="215"/>
@ -605,7 +639,7 @@
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tableViewCell> </tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="220" id="Sz1-JP-dw2" userLabel="Avatar"> <tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="220" id="Sz1-JP-dw2" userLabel="Avatar">
<rect key="frame" x="0.0" y="313" width="320" height="220"/> <rect key="frame" x="0.0" y="410" width="320" height="220"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Sz1-JP-dw2" id="R4X-LE-ir9"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Sz1-JP-dw2" id="R4X-LE-ir9">
<rect key="frame" x="0.0" y="0.0" width="320" height="219"/> <rect key="frame" x="0.0" y="0.0" width="320" height="219"/>
@ -685,7 +719,7 @@
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tableViewCell> </tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="230" id="fRZ-Uh-FR8" userLabel="Save Password"> <tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="230" id="fRZ-Uh-FR8" userLabel="Save Password">
<rect key="frame" x="0.0" y="533" width="320" height="230"/> <rect key="frame" x="0.0" y="630" width="320" height="230"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fRZ-Uh-FR8" id="qCQ-L5-teL"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fRZ-Uh-FR8" id="qCQ-L5-teL">
<rect key="frame" x="0.0" y="0.0" width="320" height="229"/> <rect key="frame" x="0.0" y="0.0" width="320" height="229"/>
@ -729,7 +763,7 @@
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tableViewCell> </tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="97" id="9QG-lM-ymM" userLabel="Feedback"> <tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="97" id="9QG-lM-ymM" userLabel="Feedback">
<rect key="frame" x="0.0" y="763" width="320" height="97"/> <rect key="frame" x="0.0" y="860" width="320" height="97"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9QG-lM-ymM" id="hK8-XQ-lLz"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9QG-lM-ymM" id="hK8-XQ-lLz">
<rect key="frame" x="0.0" y="0.0" width="287" height="96"/> <rect key="frame" x="0.0" y="0.0" width="287" height="96"/>
@ -762,40 +796,6 @@
</tableViewCellContentView> </tableViewCellContentView>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tableViewCell> </tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="97" id="eth-Dc-JYn" userLabel="Reveal Coachmarks">
<rect key="frame" x="0.0" y="860" width="320" height="97"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="eth-Dc-JYn" id="8m6-pP-lda">
<rect key="frame" x="0.0" y="0.0" width="287" height="96"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Reveal Coachmarks" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="x9b-Qa-Pza">
<rect key="frame" x="20" y="20" width="247" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Show the coachmarks in the app that briefly explain the different user interface elements." lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="247" translatesAutoresizingMaskIntoConstraints="NO" id="bKz-o1-gHv">
<rect key="frame" x="20" y="49" width="247" height="27"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Thin" family="Exo 2.0" pointSize="11"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="bKz-o1-gHv" firstAttribute="leading" secondItem="8m6-pP-lda" secondAttribute="leading" constant="20" symbolic="YES" id="0eE-CN-kk5"/>
<constraint firstItem="x9b-Qa-Pza" firstAttribute="top" secondItem="8m6-pP-lda" secondAttribute="top" constant="20" symbolic="YES" id="49Z-eX-muM"/>
<constraint firstItem="x9b-Qa-Pza" firstAttribute="leading" secondItem="8m6-pP-lda" secondAttribute="leading" constant="20" symbolic="YES" id="FkN-p2-cZp"/>
<constraint firstAttribute="trailing" secondItem="x9b-Qa-Pza" secondAttribute="trailing" constant="20" symbolic="YES" id="JHI-tD-twr"/>
<constraint firstAttribute="trailing" secondItem="bKz-o1-gHv" secondAttribute="trailing" constant="20" symbolic="YES" id="Nde-K4-9wG"/>
<constraint firstAttribute="bottom" secondItem="bKz-o1-gHv" secondAttribute="bottom" constant="20" symbolic="YES" id="b8g-US-LwY"/>
<constraint firstItem="bKz-o1-gHv" firstAttribute="top" secondItem="x9b-Qa-Pza" secondAttribute="bottom" constant="8" symbolic="YES" id="xcl-jC-fG7"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="110" id="UdB-BV-AHA" userLabel="Check Inconsistencies"> <tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" shouldIndentWhileEditing="NO" rowHeight="110" id="UdB-BV-AHA" userLabel="Check Inconsistencies">
<rect key="frame" x="0.0" y="957" width="320" height="110"/> <rect key="frame" x="0.0" y="957" width="320" height="110"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
@ -959,11 +959,11 @@
<connections> <connections>
<outlet property="avatarImage" destination="tWi-sc-DGp" id="ifT-Ct-WL6"/> <outlet property="avatarImage" destination="tWi-sc-DGp" id="ifT-Ct-WL6"/>
<outlet property="checkInconsistencies" destination="UdB-BV-AHA" id="Cm2-Om-UzP"/> <outlet property="checkInconsistencies" destination="UdB-BV-AHA" id="Cm2-Om-UzP"/>
<outlet property="coachmarksCell" destination="eth-Dc-JYn" id="0Tq-I3-SwK"/>
<outlet property="exportCell" destination="IVT-Rs-nTu" id="RU0-qr-Bdi"/> <outlet property="exportCell" destination="IVT-Rs-nTu" id="RU0-qr-Bdi"/>
<outlet property="feedbackCell" destination="9QG-lM-ymM" id="18X-Ph-0ac"/> <outlet property="feedbackCell" destination="9QG-lM-ymM" id="18X-Ph-0ac"/>
<outlet property="generatedTypeControl" destination="H8F-E0-dqF" id="CWy-G3-lL4"/> <outlet property="generatedTypeControl" destination="H8F-E0-dqF" id="CWy-G3-lL4"/>
<outlet property="savePasswordSwitch" destination="Jr5-mX-nw0" id="eqq-Xo-9Iq"/> <outlet property="savePasswordSwitch" destination="Jr5-mX-nw0" id="eqq-Xo-9Iq"/>
<outlet property="showHelpCell" destination="eth-Dc-JYn" id="0Tq-I3-SwK"/>
<outlet property="signOutCell" destination="R30-AU-bR6" id="Sam-x5-p3H"/> <outlet property="signOutCell" destination="R30-AU-bR6" id="Sam-x5-p3H"/>
<outlet property="storedTypeControl" destination="Rei-aO-UBD" id="WGp-D2-DmU"/> <outlet property="storedTypeControl" destination="Rei-aO-UBD" id="WGp-D2-DmU"/>
</connections> </connections>
@ -1403,7 +1403,7 @@
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/> <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state> </state>
<connections> <connections>
<segue destination="0Pk-uR-lak" kind="custom" identifier="popdown" customClass="MPPopdownSegue" id="yUM-h4-9AM"/> <segue destination="0Pk-uR-lak" kind="custom" identifier="popdown" customClass="MPPopdownSegue" id="Xez-9c-7oF"/>
</connections> </connections>
</button> </button>
</navigationItem> </navigationItem>
@ -1522,7 +1522,7 @@
<outlet property="popdownContainer" destination="bnY-br-a2v" id="7QN-qY-iCl"/> <outlet property="popdownContainer" destination="bnY-br-a2v" id="7QN-qY-iCl"/>
<outlet property="popdownToTopConstraint" destination="BdD-Kc-eHl" id="59Y-ap-Yn4"/> <outlet property="popdownToTopConstraint" destination="BdD-Kc-eHl" id="59Y-ap-Yn4"/>
<outlet property="popdownView" destination="XNM-XQ-rMe" id="FaW-4m-Fff"/> <outlet property="popdownView" destination="XNM-XQ-rMe" id="FaW-4m-Fff"/>
<segue destination="a4U-1y-he6" kind="modal" identifier="coachmarks" modalTransitionStyle="crossDissolve" id="3Qm-Yj-DCb"/> <segue destination="z9O-w0-6oR" kind="modal" identifier="guide" id="Ql4-wf-T8u"/>
</connections> </connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="APh-u5-vFI" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="APh-u5-vFI" userLabel="First Responder" sceneMemberID="firstResponder"/>
@ -1852,23 +1852,133 @@
</objects> </objects>
<point key="canvasLocation" x="2424" y="464"/> <point key="canvasLocation" x="2424" y="464"/>
</scene> </scene>
<!--View Controller--> <!--Guide View Controller - Usage-->
<scene sceneID="9SY-7D-CE9"> <scene sceneID="9SY-7D-CE9">
<objects> <objects>
<viewController storyboardIdentifier="x" id="z9O-w0-6oR" sceneMemberID="viewController"> <viewController storyboardIdentifier="x" id="z9O-w0-6oR" customClass="MPGuideViewController" sceneMemberID="viewController">
<layoutGuides> <layoutGuides>
<viewControllerLayoutGuide type="top" id="EnC-Uo-cUP"/> <viewControllerLayoutGuide type="top" id="EnC-Uo-cUP"/>
<viewControllerLayoutGuide type="bottom" id="fDn-y8-bUP"/> <viewControllerLayoutGuide type="bottom" id="fDn-y8-bUP"/>
</layoutGuides> </layoutGuides>
<view key="view" contentMode="scaleToFill" id="9l8-e1-3BO"> <view key="view" contentMode="scaleToFill" id="9l8-e1-3BO" userLabel="Root">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> <subviews>
<navigationBar contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" verticalCompressionResistancePriority="751" barStyle="black" translatesAutoresizingMaskIntoConstraints="NO" id="z0y-eW-npn" userLabel="Fake Navigation Bar">
<rect key="frame" x="0.0" y="0.0" width="320" height="64"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<items>
<navigationItem title="Usage" id="JSk-yT-9NA">
<barButtonItem key="rightBarButtonItem" title="Close" style="done" id="lJX-aM-NTy">
<connections>
<action selector="close:" destination="z9O-w0-6oR" id="Lwh-yR-GX0"/>
</connections>
</barButtonItem>
</navigationItem>
</items>
</navigationBar>
<pageControl opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="3" translatesAutoresizingMaskIntoConstraints="NO" id="8A2-ly-WTX">
<rect key="frame" x="141" y="523" width="39" height="37"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</pageControl>
<collectionView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" pagingEnabled="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" minimumZoomScale="0.0" maximumZoomScale="0.0" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="i2y-lo-HXR">
<rect key="frame" x="0.0" y="64" width="320" height="382"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="0.0" minimumInteritemSpacing="0.0" id="m8O-kY-22j">
<size key="itemSize" width="320" height="458"/>
<size key="headerReferenceSize" width="0.0" height="0.0"/>
<size key="footerReferenceSize" width="0.0" height="0.0"/>
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
</collectionViewFlowLayout>
<cells>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="MPGuideStepCell" id="oGu-pJ-3bQ" customClass="MPGuideStepCell">
<rect key="frame" x="0.0" y="-38" width="320" height="458"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="458"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="image-0.png" translatesAutoresizingMaskIntoConstraints="NO" id="6sF-iJ-8GW">
<rect key="frame" x="40" y="8" width="240" height="442"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view> </view>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="6sF-iJ-8GW" firstAttribute="top" secondItem="oGu-pJ-3bQ" secondAttribute="top" constant="8" id="Lxq-3c-Hy0"/>
<constraint firstAttribute="bottom" secondItem="6sF-iJ-8GW" secondAttribute="bottom" constant="8" id="evX-l9-KKx"/>
<constraint firstAttribute="trailing" secondItem="6sF-iJ-8GW" secondAttribute="trailing" constant="40" id="gS8-7H-iFc"/>
<constraint firstItem="6sF-iJ-8GW" firstAttribute="leading" secondItem="oGu-pJ-3bQ" secondAttribute="leading" constant="40" id="orJ-1k-O71"/>
</constraints>
<connections>
<outlet property="imageView" destination="6sF-iJ-8GW" id="BgH-z4-jMu"/>
</connections>
</collectionViewCell>
</cells>
<connections>
<outlet property="dataSource" destination="z9O-w0-6oR" id="Tfo-Tq-gEx"/>
<outlet property="delegate" destination="z9O-w0-6oR" id="RcD-gy-C1W"/>
</connections>
</collectionView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="To begin, tap the &quot;New User&quot; icon and add yourself as a user to the application." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" id="ciw-56-nNy" userLabel="Caption">
<rect key="frame" x="20" y="454" width="280" height="61"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="1" translatesAutoresizingMaskIntoConstraints="NO" id="Oop-Ff-gbz" userLabel="Caption Height Strut">
<rect key="frame" x="20" y="454" width="1" height="61"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<string key="text" base64-UTF8="YES">
CgoKCgoKCgoKCgoKCg
</string>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" cocoaTouchSystemColor="viewFlipsideBackgroundColor"/>
<constraints>
<constraint firstItem="i2y-lo-HXR" firstAttribute="top" secondItem="z0y-eW-npn" secondAttribute="bottom" id="4NN-YN-Rxh"/>
<constraint firstAttribute="trailing" secondItem="ciw-56-nNy" secondAttribute="trailing" constant="20" symbolic="YES" id="Cir-5Q-wV6"/>
<constraint firstItem="z0y-eW-npn" firstAttribute="bottom" secondItem="EnC-Uo-cUP" secondAttribute="bottom" constant="44" id="Dog-BR-i9l"/>
<constraint firstItem="i2y-lo-HXR" firstAttribute="leading" secondItem="9l8-e1-3BO" secondAttribute="leading" id="ECk-yT-u1U"/>
<constraint firstAttribute="centerX" secondItem="8A2-ly-WTX" secondAttribute="centerX" id="R9V-M2-Feu"/>
<constraint firstItem="z0y-eW-npn" firstAttribute="top" secondItem="9l8-e1-3BO" secondAttribute="top" id="THU-Ja-YlV"/>
<constraint firstItem="fDn-y8-bUP" firstAttribute="top" secondItem="8A2-ly-WTX" secondAttribute="bottom" constant="20" symbolic="YES" id="Wzh-OK-8av"/>
<constraint firstItem="8A2-ly-WTX" firstAttribute="top" secondItem="ciw-56-nNy" secondAttribute="bottom" constant="8" symbolic="YES" id="Xdn-oB-dUr"/>
<constraint firstItem="ciw-56-nNy" firstAttribute="top" secondItem="Oop-Ff-gbz" secondAttribute="top" id="ZCi-IU-AQj"/>
<constraint firstAttribute="trailing" secondItem="i2y-lo-HXR" secondAttribute="trailing" id="a0p-ms-oqA"/>
<constraint firstItem="ciw-56-nNy" firstAttribute="top" secondItem="i2y-lo-HXR" secondAttribute="bottom" constant="8" symbolic="YES" id="dn3-Cj-x51"/>
<constraint firstItem="z0y-eW-npn" firstAttribute="leading" secondItem="9l8-e1-3BO" secondAttribute="leading" id="eDB-OY-eog"/>
<constraint firstItem="ciw-56-nNy" firstAttribute="leading" secondItem="9l8-e1-3BO" secondAttribute="leading" constant="20" symbolic="YES" id="eLR-Qf-8Uj"/>
<constraint firstItem="ciw-56-nNy" firstAttribute="leading" secondItem="Oop-Ff-gbz" secondAttribute="leading" id="fZA-TL-P91"/>
<constraint firstItem="ciw-56-nNy" firstAttribute="bottom" secondItem="Oop-Ff-gbz" secondAttribute="bottom" id="k5D-W2-bdt"/>
<constraint firstAttribute="trailing" secondItem="z0y-eW-npn" secondAttribute="trailing" id="lVg-3k-QeE"/>
<constraint firstItem="i2y-lo-HXR" firstAttribute="top" secondItem="EnC-Uo-cUP" secondAttribute="bottom" priority="750" id="pdi-sO-O4v"/>
</constraints>
</view>
<navigationItem key="navigationItem" title="Usage" id="DLb-Co-APh">
<barButtonItem key="rightBarButtonItem" title="Close" style="done" id="evm-JP-NwO">
<connections>
<action selector="close:" destination="z9O-w0-6oR" id="Mjy-qr-iiN"/>
</connections>
</barButtonItem>
</navigationItem>
<connections>
<outlet property="captionLabel" destination="ciw-56-nNy" id="a5c-QW-JHm"/>
<outlet property="collectionView" destination="i2y-lo-HXR" id="tSP-UU-fG5"/>
<outlet property="navigationBar" destination="z0y-eW-npn" id="TtX-3X-dcT"/>
<outlet property="pageControl" destination="8A2-ly-WTX" id="H0t-Kq-vZJ"/>
</connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="fiE-U7-p6y" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="fiE-U7-p6y" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2866" y="464"/> <point key="canvasLocation" x="1887" y="1936"/>
</scene> </scene>
<!--View Controller--> <!--View Controller-->
<scene sceneID="qiQ-By-IQy"> <scene sceneID="qiQ-By-IQy">
@ -1886,7 +1996,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="OKk-Ht-Uzq" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="OKk-Ht-Uzq" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2866" y="-272"/> <point key="canvasLocation" x="2961" y="-272"/>
</scene> </scene>
<!--Logs View Controller - Logbook--> <!--Logs View Controller - Logbook-->
<scene sceneID="cks-mO-kuy"> <scene sceneID="cks-mO-kuy">
@ -2222,437 +2332,6 @@ However, it means that anyone who finds your device unlocked can do the same.</s
</objects> </objects>
<point key="canvasLocation" x="1887" y="2672"/> <point key="canvasLocation" x="1887" y="2672"/>
</scene> </scene>
<!--Passwords Coachmark View Controller-->
<scene sceneID="9jg-z5-KnK">
<objects>
<viewController automaticallyAdjustsScrollViewInsets="NO" id="a4U-1y-he6" customClass="MPPasswordsCoachmarkViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="YPK-zp-lBz"/>
<viewControllerLayoutGuide type="bottom" id="dif-kp-Fcg"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="b24-Hr-nC2" userLabel="Root" customClass="PearlUIView">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="G6q-gV-ttC" userLabel="Passwords Root" customClass="PearlUIView">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="APQ-r2-UhH" userLabel="Passwords Container">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<collectionView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" minimumZoomScale="0.0" maximumZoomScale="0.0" keyboardDismissMode="onDrag" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="scR-fD-I84" userLabel="Password Collection">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="scrollIndicatorInsets" minX="0.0" minY="108" maxX="0.0" maxY="0.0"/>
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="gQO-JL-J1g">
<size key="itemSize" width="300" height="100"/>
<size key="headerReferenceSize" width="0.0" height="108"/>
<size key="footerReferenceSize" width="0.0" height="0.0"/>
<inset key="sectionInset" minX="10" minY="10" maxX="10" maxY="10"/>
</collectionViewFlowLayout>
<cells>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="MPPasswordLargeGeneratedCell" id="6HR-rB-Aq4" userLabel="Generated" customClass="MPPasswordLargeGeneratedCell">
<rect key="frame" x="10" y="118" width="300" height="100"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="300" height="100"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.029999999329447746" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Long Password" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="X3M-0e-7CN" userLabel="Type">
<rect key="frame" x="-10" y="19" width="604" height="101"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="84"/>
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="SadwGafy7^Sidu" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="dUW-Tf-ck9" userLabel="Content">
<rect key="frame" x="8" y="20" width="284" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="textColor" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SourceCodePro-Black" family="Source Code Pro" pointSize="24"/>
<textInputTraits key="textInputTraits"/>
</textField>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.5" contentMode="left" text="apple.com" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="osk-LW-Vzb" userLabel="Site Name">
<rect key="frame" x="8" y="71" width="284" height="14"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" label="">
<accessibilityTraits key="traits" none="YES" staticText="YES" summaryElement="YES"/>
</accessibility>
<fontDescription key="fontDescription" name="Copperplate" family="Copperplate" pointSize="12"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.5" contentMode="left" text="1" textAlignment="right" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="IkN-Fh-liV" userLabel="Counter">
<rect key="frame" x="216" y="69" width="11" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" hint="Site's counter."/>
<fontDescription key="fontDescription" name="Copperplate-Bold" family="Copperplate" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<button opaque="NO" alpha="0.5" contentMode="scaleToFill" highlighted="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kzf-fQ-sjL" userLabel="Incrementer">
<rect key="frame" x="221" y="56" width="44" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" hint="Increments the site counter."/>
<gestureRecognizers/>
<constraints>
<constraint firstAttribute="height" constant="44" id="7YR-uH-HmF"/>
<constraint firstAttribute="width" constant="44" id="ZDK-n2-fhI"/>
</constraints>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<inset key="contentEdgeInsets" minX="6" minY="6" maxX="6" maxY="6"/>
<state key="normal" image="icon_plus.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
</button>
<button opaque="NO" alpha="0.5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="T3n-dY-rfl" userLabel="User">
<rect key="frame" x="256" y="56" width="44" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" hint="Upgrades the password."/>
<constraints>
<constraint firstAttribute="height" constant="44" id="QRx-Bo-2U7"/>
<constraint firstAttribute="width" constant="44" id="kxz-mj-td2"/>
</constraints>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<inset key="contentEdgeInsets" minX="6" minY="6" maxX="6" maxY="6"/>
<state key="normal" image="icon_person.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" red="0.18823529410000001" green="0.18823529410000001" blue="0.18823529410000001" alpha="0.5" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="Kzf-fQ-sjL" firstAttribute="centerY" secondItem="IkN-Fh-liV" secondAttribute="centerY" id="1Ph-6t-z0y"/>
<constraint firstItem="X3M-0e-7CN" firstAttribute="leading" secondItem="6HR-rB-Aq4" secondAttribute="leading" constant="-10" id="EH3-Fe-wi6"/>
<constraint firstItem="osk-LW-Vzb" firstAttribute="centerY" secondItem="IkN-Fh-liV" secondAttribute="centerY" id="H2G-MC-JPG"/>
<constraint firstItem="Kzf-fQ-sjL" firstAttribute="leading" secondItem="IkN-Fh-liV" secondAttribute="trailing" constant="-6" id="H8U-Re-7I1"/>
<constraint firstItem="dUW-Tf-ck9" firstAttribute="leading" secondItem="6HR-rB-Aq4" secondAttribute="leading" constant="8" id="H8s-1V-fmd"/>
<constraint firstItem="T3n-dY-rfl" firstAttribute="centerY" secondItem="Kzf-fQ-sjL" secondAttribute="centerY" id="IoL-Jk-sZ3"/>
<constraint firstItem="T3n-dY-rfl" firstAttribute="leading" secondItem="Kzf-fQ-sjL" secondAttribute="trailing" constant="-9" id="J3A-Lb-zc0"/>
<constraint firstAttribute="trailing" secondItem="osk-LW-Vzb" secondAttribute="trailing" constant="8" id="K2p-e3-3c4"/>
<constraint firstAttribute="trailing" secondItem="T3n-dY-rfl" secondAttribute="trailing" id="K51-r4-Kvo"/>
<constraint firstAttribute="bottom" secondItem="X3M-0e-7CN" secondAttribute="bottom" constant="-20" id="KMs-aZ-6Un"/>
<constraint firstItem="osk-LW-Vzb" firstAttribute="leading" secondItem="6HR-rB-Aq4" secondAttribute="leading" constant="8" id="Rcj-RM-GKv"/>
<constraint firstAttribute="trailing" secondItem="dUW-Tf-ck9" secondAttribute="trailing" constant="8" id="bpf-2y-o15"/>
<constraint firstItem="dUW-Tf-ck9" firstAttribute="top" secondItem="6HR-rB-Aq4" secondAttribute="top" constant="20" id="brm-sc-y3u"/>
<constraint firstAttribute="bottom" secondItem="T3n-dY-rfl" secondAttribute="bottom" id="cj3-Of-wq2"/>
</constraints>
</collectionViewCell>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="MPPasswordLargeStoredCell" id="dUb-yf-LDP" userLabel="Stored" customClass="MPPasswordLargeStoredCell">
<rect key="frame" x="10" y="228" width="300" height="100"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="300" height="100"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.029999999329447746" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Personal Password" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="py5-gO-cD5" userLabel="Type">
<rect key="frame" x="-10" y="19" width="763" height="101"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="84"/>
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="Pas$w0rD" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="LmU-xM-THl" userLabel="Content">
<rect key="frame" x="8" y="20" width="284" height="31"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="textColor" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="SourceCodePro-Black" family="Source Code Pro" pointSize="24"/>
<textInputTraits key="textInputTraits"/>
</textField>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.5" contentMode="left" text="gmail.com" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="2R5-IF-DAr" userLabel="Site Name">
<rect key="frame" x="8" y="71" width="284" height="14"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" label="">
<accessibilityTraits key="traits" none="YES" staticText="YES" summaryElement="YES"/>
</accessibility>
<fontDescription key="fontDescription" name="Copperplate" family="Copperplate" pointSize="12"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<button opaque="NO" alpha="0.5" contentMode="scaleToFill" highlighted="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fH6-Xn-WgC" userLabel="User">
<rect key="frame" x="256" y="56" width="44" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<accessibility key="accessibilityConfiguration" hint="Upgrades the password."/>
<constraints>
<constraint firstAttribute="width" constant="44" id="ZzI-rr-SHu"/>
<constraint firstAttribute="height" constant="44" id="sO7-pb-16X"/>
</constraints>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<inset key="contentEdgeInsets" minX="6" minY="6" maxX="6" maxY="6"/>
<state key="normal" image="icon_person.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" red="0.18823529410000001" green="0.15686274510000001" blue="0.15686274510000001" alpha="0.5" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="LmU-xM-THl" firstAttribute="top" secondItem="dUb-yf-LDP" secondAttribute="top" constant="20" id="4Qb-zG-vdo"/>
<constraint firstAttribute="bottom" secondItem="fH6-Xn-WgC" secondAttribute="bottom" id="5ii-qa-Med"/>
<constraint firstItem="LmU-xM-THl" firstAttribute="leading" secondItem="dUb-yf-LDP" secondAttribute="leading" constant="8" id="9HO-Rv-hYk"/>
<constraint firstItem="py5-gO-cD5" firstAttribute="leading" secondItem="dUb-yf-LDP" secondAttribute="leading" constant="-10" id="E2q-be-YEn"/>
<constraint firstAttribute="bottom" secondItem="py5-gO-cD5" secondAttribute="bottom" constant="-20" id="LYF-a1-URA"/>
<constraint firstItem="2R5-IF-DAr" firstAttribute="leading" secondItem="dUb-yf-LDP" secondAttribute="leading" constant="8" id="LfC-km-dM8"/>
<constraint firstAttribute="trailing" secondItem="LmU-xM-THl" secondAttribute="trailing" constant="8" id="SI3-DZ-ST3"/>
<constraint firstAttribute="trailing" secondItem="fH6-Xn-WgC" secondAttribute="trailing" id="Yno-XO-5rv"/>
<constraint firstItem="2R5-IF-DAr" firstAttribute="centerY" secondItem="fH6-Xn-WgC" secondAttribute="centerY" id="fAu-Lv-ght"/>
<constraint firstAttribute="trailing" secondItem="2R5-IF-DAr" secondAttribute="trailing" constant="8" id="pvb-sj-PUV"/>
</constraints>
</collectionViewCell>
</cells>
<collectionReusableView key="sectionHeaderView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="MPPasswordHeader" id="ttf-pq-CbW">
<rect key="frame" x="0.0" y="0.0" width="320" height="108"/>
<autoresizingMask key="autoresizingMask"/>
</collectionReusableView>
<connections>
<outlet property="dataSource" destination="a4U-1y-he6" id="rgt-9E-y3S"/>
<outlet property="delegate" destination="a4U-1y-he6" id="ye7-Tu-q7w"/>
</connections>
</collectionView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.40000000000000002" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="scR-fD-I84" secondAttribute="trailing" id="1z4-tS-Vyd"/>
<constraint firstItem="scR-fD-I84" firstAttribute="leading" secondItem="APQ-r2-UhH" secondAttribute="leading" id="E2f-Sx-gEy"/>
<constraint firstItem="scR-fD-I84" firstAttribute="top" secondItem="APQ-r2-UhH" secondAttribute="top" id="ey5-4P-Ews"/>
<constraint firstAttribute="bottom" secondItem="scR-fD-I84" secondAttribute="bottom" id="uIa-K7-YgH"/>
</constraints>
</view>
<navigationBar opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="251" barStyle="black" translatesAutoresizingMaskIntoConstraints="NO" id="H1q-gJ-4fo" userLabel="Navigation" customClass="PearlUINavigationBar">
<rect key="frame" x="0.0" y="0.0" width="320" height="64"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<items>
<navigationItem id="T3y-At-dlY">
<nil key="title"/>
<view key="titleView" contentMode="scaleToFill" id="NJ7-FJ-2Rq">
<rect key="frame" x="142" y="24" width="36" height="36"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="avatar-0.png" translatesAutoresizingMaskIntoConstraints="NO" id="Ylm-mE-LfW" userLabel="Avatar">
<rect key="frame" x="0.0" y="0.0" width="36" height="36"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="tintColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="width" constant="36" id="3Cs-fs-t6n"/>
<constraint firstAttribute="width" secondItem="Ylm-mE-LfW" secondAttribute="height" multiplier="1:1" id="lsO-e7-Qgo"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="Ylm-mE-LfW" firstAttribute="top" secondItem="NJ7-FJ-2Rq" secondAttribute="top" id="B9l-DZ-OHs"/>
<constraint firstAttribute="bottom" secondItem="Ylm-mE-LfW" secondAttribute="bottom" id="MBs-DZ-SQi"/>
<constraint firstAttribute="trailing" secondItem="Ylm-mE-LfW" secondAttribute="trailing" id="ctl-Yr-yGt"/>
<constraint firstItem="Ylm-mE-LfW" firstAttribute="leading" secondItem="NJ7-FJ-2Rq" secondAttribute="leading" id="oCP-WA-8Oe"/>
</constraints>
</view>
</navigationItem>
</items>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="ignoreTouches" value="YES"/>
</userDefinedRuntimeAttributes>
</navigationBar>
<toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" barStyle="black" translatesAutoresizingMaskIntoConstraints="NO" id="hqP-FG-C0l">
<rect key="frame" x="0.0" y="64" width="320" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<items/>
</toolbar>
<searchBar contentMode="redraw" barStyle="black" searchBarStyle="minimal" placeholder="eg. apple.com" translatesAutoresizingMaskIntoConstraints="NO" id="Pl5-3l-hZm">
<rect key="frame" x="0.0" y="64" width="320" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="URL"/>
<connections>
<outlet property="delegate" destination="a4U-1y-he6" id="xck-3c-AoG"/>
</connections>
</searchBar>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kmo-c1-5dK" userLabel="Shade">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hqT-j3-SlJ" userLabel="Close Button">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.59999999999999998" colorSpace="calibratedWhite"/>
<state key="normal">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="close:" destination="a4U-1y-he6" eventType="touchUpInside" id="dLv-Dh-bHi"/>
</connections>
</button>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Preferences and Sign Out" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3eY-lZ-dPZ">
<rect key="frame" x="63" y="32" width="194" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="17"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Enter your site's name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SCn-dQ-xrj">
<rect key="frame" x="75" y="76" width="171" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="17"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Tap to copy the site password" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ScF-Yu-oFB">
<rect key="frame" x="66" y="120" width="189" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="right" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="196" translatesAutoresizingMaskIntoConstraints="NO" id="0Qe-Pv-mvu">
<rect key="frame" x="24" y="175" width="196" height="51"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<string key="text">Password counter:
Tap it to make a new password
Hold it to reset the counter</string>
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="right" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="139" translatesAutoresizingMaskIntoConstraints="NO" id="sE1-UW-xsu">
<rect key="frame" x="131" y="285" width="139" height="34"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<string key="text">Tap to see or set
your site's login name</string>
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="231" translatesAutoresizingMaskIntoConstraints="NO" id="fo1-XN-xu3">
<rect key="frame" x="45" y="350" width="231" height="41"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<string key="text">Swipe sites left &amp; right
to change type or delete them</string>
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="17"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Tap to dismiss" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="78" translatesAutoresizingMaskIntoConstraints="NO" id="Ow6-UF-yHx">
<rect key="frame" x="121" y="533" width="78" height="15"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="12"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" progress="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="U1E-SN-YvR">
<rect key="frame" x="0.0" y="566" width="320" height="2"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="progressTintColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
<color key="trackTintColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="1" colorSpace="calibratedRGB"/>
</progressView>
</subviews>
<constraints>
<constraint firstAttribute="centerX" secondItem="Ow6-UF-yHx" secondAttribute="centerX" constant="0.5" id="7jq-PO-Hfm"/>
<constraint firstItem="hqT-j3-SlJ" firstAttribute="leading" secondItem="kmo-c1-5dK" secondAttribute="leading" id="AVB-1q-IzS"/>
<constraint firstAttribute="bottom" secondItem="hqT-j3-SlJ" secondAttribute="bottom" id="J23-69-b3a"/>
<constraint firstAttribute="trailing" secondItem="U1E-SN-YvR" secondAttribute="trailing" id="Vii-V2-rrP"/>
<constraint firstItem="U1E-SN-YvR" firstAttribute="leading" secondItem="kmo-c1-5dK" secondAttribute="leading" id="X5h-Sk-d7Q"/>
<constraint firstAttribute="trailing" secondItem="hqT-j3-SlJ" secondAttribute="trailing" id="Y0c-iq-5u2"/>
<constraint firstItem="hqT-j3-SlJ" firstAttribute="top" secondItem="kmo-c1-5dK" secondAttribute="top" id="aVa-Mp-GeF"/>
<constraint firstAttribute="bottom" secondItem="U1E-SN-YvR" secondAttribute="bottom" id="kKB-h5-75J"/>
<constraint firstAttribute="bottom" secondItem="Ow6-UF-yHx" secondAttribute="bottom" constant="20" symbolic="YES" id="onU-kU-PZf"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="kmo-c1-5dK" firstAttribute="leading" secondItem="G6q-gV-ttC" secondAttribute="leading" id="0Af-mM-hkv"/>
<constraint firstItem="Pl5-3l-hZm" firstAttribute="bottom" secondItem="hqP-FG-C0l" secondAttribute="bottom" id="1mE-B7-25L"/>
<constraint firstItem="kmo-c1-5dK" firstAttribute="top" secondItem="G6q-gV-ttC" secondAttribute="top" id="28o-F2-RGP"/>
<constraint firstAttribute="trailing" secondItem="APQ-r2-UhH" secondAttribute="trailing" id="2t5-2T-SHL"/>
<constraint firstItem="H1q-gJ-4fo" firstAttribute="top" secondItem="G6q-gV-ttC" secondAttribute="top" priority="500" id="344-Wc-JGW"/>
<constraint firstItem="ScF-Yu-oFB" firstAttribute="top" secondItem="scR-fD-I84" secondAttribute="top" constant="120" id="3a0-gY-6hu"/>
<constraint firstItem="APQ-r2-UhH" firstAttribute="leading" secondItem="G6q-gV-ttC" secondAttribute="leading" id="5Bi-F6-Oep"/>
<constraint firstItem="APQ-r2-UhH" firstAttribute="height" secondItem="G6q-gV-ttC" secondAttribute="height" id="8Z1-61-UNR"/>
<constraint firstItem="Pl5-3l-hZm" firstAttribute="leading" secondItem="hqP-FG-C0l" secondAttribute="leading" id="Fg9-fU-Ygs"/>
<constraint firstItem="0Qe-Pv-mvu" firstAttribute="top" secondItem="scR-fD-I84" secondAttribute="top" constant="175" id="Hmt-fC-YHy"/>
<constraint firstItem="sE1-UW-xsu" firstAttribute="top" secondItem="scR-fD-I84" secondAttribute="top" constant="285" id="IrP-eO-cwb"/>
<constraint firstItem="Pl5-3l-hZm" firstAttribute="centerY" secondItem="SCn-dQ-xrj" secondAttribute="centerY" id="KfO-De-Ogw"/>
<constraint firstItem="H1q-gJ-4fo" firstAttribute="leading" secondItem="G6q-gV-ttC" secondAttribute="leading" id="LqD-4f-udU"/>
<constraint firstAttribute="trailing" secondItem="H1q-gJ-4fo" secondAttribute="trailing" id="Lqj-25-GGH"/>
<constraint firstItem="ScF-Yu-oFB" firstAttribute="centerX" secondItem="scR-fD-I84" secondAttribute="centerX" id="Nhw-fy-vlr"/>
<constraint firstItem="H1q-gJ-4fo" firstAttribute="centerX" secondItem="3eY-lZ-dPZ" secondAttribute="centerX" id="OSq-65-mVB"/>
<constraint firstAttribute="top" secondItem="Pl5-3l-hZm" secondAttribute="bottom" priority="1" id="OVm-5o-HqY"/>
<constraint firstAttribute="bottom" secondItem="kmo-c1-5dK" secondAttribute="bottom" id="SdV-Qs-hc8"/>
<constraint firstItem="Pl5-3l-hZm" firstAttribute="top" secondItem="hqP-FG-C0l" secondAttribute="top" id="WAD-ha-hzG"/>
<constraint firstItem="Pl5-3l-hZm" firstAttribute="centerX" secondItem="SCn-dQ-xrj" secondAttribute="centerX" id="XGh-UZ-5oV"/>
<constraint firstItem="0Qe-Pv-mvu" firstAttribute="trailing" secondItem="scR-fD-I84" secondAttribute="trailing" constant="-100" id="YBh-av-eG6"/>
<constraint firstAttribute="trailing" secondItem="Pl5-3l-hZm" secondAttribute="trailing" id="Zih-As-2ck"/>
<constraint firstItem="APQ-r2-UhH" firstAttribute="top" secondItem="G6q-gV-ttC" secondAttribute="bottom" priority="1" id="e2a-e6-60c"/>
<constraint firstItem="H1q-gJ-4fo" firstAttribute="centerY" secondItem="3eY-lZ-dPZ" secondAttribute="centerY" constant="-10" id="f00-OP-SMP"/>
<constraint firstItem="Pl5-3l-hZm" firstAttribute="trailing" secondItem="hqP-FG-C0l" secondAttribute="trailing" id="fY7-b8-QvS"/>
<constraint firstItem="sE1-UW-xsu" firstAttribute="trailing" secondItem="scR-fD-I84" secondAttribute="trailing" constant="-50" id="mYK-VX-sXS"/>
<constraint firstItem="Pl5-3l-hZm" firstAttribute="leading" secondItem="G6q-gV-ttC" secondAttribute="leading" id="rvo-bl-s3l"/>
<constraint firstItem="APQ-r2-UhH" firstAttribute="top" secondItem="G6q-gV-ttC" secondAttribute="top" priority="500" id="tWE-hD-v8C"/>
<constraint firstAttribute="trailing" secondItem="kmo-c1-5dK" secondAttribute="trailing" id="vS2-jK-lnf"/>
<constraint firstItem="scR-fD-I84" firstAttribute="top" secondItem="fo1-XN-xu3" secondAttribute="top" constant="-350" id="vcg-RU-HhB"/>
<constraint firstItem="Pl5-3l-hZm" firstAttribute="top" secondItem="H1q-gJ-4fo" secondAttribute="bottom" id="y0v-su-3mS"/>
<constraint firstItem="scR-fD-I84" firstAttribute="centerX" secondItem="fo1-XN-xu3" secondAttribute="centerX" id="yPs-uO-1Ry"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="ignoreTouches" value="YES"/>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" cocoaTouchSystemColor="viewFlipsideBackgroundColor"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="G6q-gV-ttC" secondAttribute="trailing" id="3El-nK-KJp"/>
<constraint firstAttribute="top" secondItem="G6q-gV-ttC" secondAttribute="top" id="657-SB-Vhu"/>
<constraint firstItem="dif-kp-Fcg" firstAttribute="top" secondItem="G6q-gV-ttC" secondAttribute="bottom" id="a0s-mp-tUk"/>
<constraint firstItem="H1q-gJ-4fo" firstAttribute="bottom" secondItem="YPK-zp-lBz" secondAttribute="bottom" priority="500" constant="44" id="got-ur-VGU"/>
<constraint firstItem="G6q-gV-ttC" firstAttribute="leading" secondItem="b24-Hr-nC2" secondAttribute="leading" id="lcp-FG-zHy"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="ignoreTouches" value="YES"/>
</userDefinedRuntimeAttributes>
</view>
<connections>
<outlet property="view0" destination="3eY-lZ-dPZ" id="aVZ-eY-8fv"/>
<outlet property="view1" destination="SCn-dQ-xrj" id="zLZ-LF-18D"/>
<outlet property="view2" destination="ScF-Yu-oFB" id="4PX-Ji-muD"/>
<outlet property="view3" destination="0Qe-Pv-mvu" id="5Bz-2c-nzB"/>
<outlet property="view4" destination="sE1-UW-xsu" id="xiu-ri-2RO"/>
<outlet property="view5" destination="fo1-XN-xu3" id="kSi-5O-QzP"/>
<outlet property="viewProgress" destination="U1E-SN-YvR" id="7rX-5w-Ngz"/>
</connections>
</viewController>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sign Out" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="0sm-0Q-eah">
<rect key="frame" x="0.0" y="0.0" width="67" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<placeholder placeholderIdentifier="IBFirstResponder" id="Qy9-t1-6gT" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1887" y="1936"/>
</scene>
<!--Setup View Controller - About--> <!--Setup View Controller - About-->
<scene sceneID="p3O-pB-vAg"> <scene sceneID="p3O-pB-vAg">
<objects> <objects>
@ -2818,17 +2497,40 @@ See </string>
</constraints> </constraints>
</view> </view>
<navigationItem key="navigationItem" title="About" id="hKn-HH-Uq1"> <navigationItem key="navigationItem" title="About" id="hKn-HH-Uq1">
<barButtonItem key="rightBarButtonItem" title="Close" style="done" id="C6X-M4-LPa"> <barButtonItem key="leftBarButtonItem" title="Close" style="done" id="C6X-M4-LPa">
<connections> <connections>
<action selector="close:" destination="ZJ6-pe-kyr" id="dNl-ls-U0S"/> <action selector="close:" destination="ZJ6-pe-kyr" id="dNl-ls-U0S"/>
</connections> </connections>
</barButtonItem> </barButtonItem>
<barButtonItem key="rightBarButtonItem" title="Short Guide" id="s82-d0-8qj">
<connections>
<segue destination="z9O-w0-6oR" kind="push" id="k2G-nL-x3l"/>
</connections>
</barButtonItem>
</navigationItem> </navigationItem>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="xht-w2-261" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="xht-w2-261" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2424" y="2672"/> <point key="canvasLocation" x="2424" y="2672"/>
</scene> </scene>
<!--View Controller-->
<scene sceneID="D1h-xG-jy2">
<objects>
<viewController storyboardIdentifier="z" id="2YR-fB-hdq" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Z82-Sy-cpI"/>
<viewControllerLayoutGuide type="bottom" id="nll-b7-yHd"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="xHD-So-hnl">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6di-Zc-lpO" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3498" y="-272"/>
</scene>
</scenes> </scenes>
<resources> <resources>
<image name="avatar-0.png" width="110" height="110"/> <image name="avatar-0.png" width="110" height="110"/>
@ -2843,6 +2545,7 @@ See </string>
<image name="icon_plus.png" width="32" height="32"/> <image name="icon_plus.png" width="32" height="32"/>
<image name="icon_up.png" width="32" height="32"/> <image name="icon_up.png" width="32" height="32"/>
<image name="identity.png" width="82" height="80"/> <image name="identity.png" width="82" height="80"/>
<image name="image-0.png" width="256" height="384"/>
<image name="tip_basic_black.png" width="210" height="60"/> <image name="tip_basic_black.png" width="210" height="60"/>
<image name="ui_spinner.png" width="75" height="75"/> <image name="ui_spinner.png" width="75" height="75"/>
<image name="ui_textfield.png" width="158" height="34"/> <image name="ui_textfield.png" width="158" height="34"/>
@ -2855,6 +2558,7 @@ See </string>
<simulatedScreenMetrics key="destination" type="retina4"/> <simulatedScreenMetrics key="destination" type="retina4"/>
</simulatedMetricsContainer> </simulatedMetricsContainer>
<inferredMetricsTieBreakers> <inferredMetricsTieBreakers>
<segue reference="gtb-zE-u9H"/> <segue reference="GZk-I4-JyH"/>
<segue reference="Ql4-wf-T8u"/>
</inferredMetricsTieBreakers> </inferredMetricsTieBreakers>
</document> </document>

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB