[
  {
    "path": ".com.apple.timemachine.supported",
    "content": ""
  },
  {
    "path": ".swift-version",
    "content": "2.3\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/AppDelegate.h",
    "content": "//\n//  AppDelegate.h\n//  HUPhotoBrowser Demo\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface AppDelegate : UIResponder <UIApplicationDelegate>\n\n@property (strong, nonatomic) UIWindow *window;\n\n\n@end\n\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/AppDelegate.m",
    "content": "//\n//  AppDelegate.m\n//  HUPhotoBrowser Demo\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import \"AppDelegate.h\"\n\n@interface AppDelegate ()\n\n@end\n\n@implementation AppDelegate\n\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n    // Override point for customization after application launch.\n    return YES;\n}\n\n- (void)applicationWillResignActive:(UIApplication *)application {\n    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.\n    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.\n}\n\n- (void)applicationDidEnterBackground:(UIApplication *)application {\n    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.\n    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.\n}\n\n- (void)applicationWillEnterForeground:(UIApplication *)application {\n    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.\n}\n\n- (void)applicationDidBecomeActive:(UIApplication *)application {\n    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.\n}\n\n- (void)applicationWillTerminate:(UIApplication *)application {\n    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n}\n\n@end\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/Base.lproj/LaunchScreen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"6214\" systemVersion=\"14A314h\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"6207\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"  Copyright (c) 2016年 hujewelz. All rights reserved.\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8ie-xW-0ye\">\n                    <rect key=\"frame\" x=\"20\" y=\"439\" width=\"441\" height=\"21\"/>\n                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"HUPhotoBrowser Demo\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">\n                    <rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>\n                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"5cJ-9S-tgC\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"bottom\" constant=\"20\" id=\"Kzo-t9-V3l\"/>\n                <constraint firstItem=\"8ie-xW-0ye\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"MfP-vx-nX0\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"centerX\" id=\"ZEH-qu-HZ9\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"548\" y=\"455\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"12121\" systemVersion=\"16F73\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"0Kq-ws-uy7\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12089\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"ufC-wZ-h7g\">\n            <objects>\n                <viewController id=\"vXZ-lx-hvc\" customClass=\"ViewController\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"jyV-Pf-zRb\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"2fi-mo-0CV\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"kh9-bI-dsS\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <subviews>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"mja-x1-3VU\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"9ud-9Q-cIg\">\n                                    <size key=\"itemSize\" width=\"150\" height=\"121\"/>\n                                    <size key=\"headerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <size key=\"footerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <inset key=\"sectionInset\" minX=\"4\" minY=\"0.0\" maxX=\"4\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells>\n                                    <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" reuseIdentifier=\"PhotoCell\" id=\"EKC-lY-Png\" customClass=\"PhotoCell\">\n                                        <rect key=\"frame\" x=\"4\" y=\"0.0\" width=\"150\" height=\"121\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"150\" height=\"121\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <imageView clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"N7d-MV-1Tg\">\n                                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"150\" height=\"121\"/>\n                                                    <color key=\"backgroundColor\" cocoaTouchSystemColor=\"groupTableViewBackgroundColor\"/>\n                                                </imageView>\n                                            </subviews>\n                                        </view>\n                                        <constraints>\n                                            <constraint firstItem=\"N7d-MV-1Tg\" firstAttribute=\"leading\" secondItem=\"EKC-lY-Png\" secondAttribute=\"leading\" id=\"1KX-aR-bgb\"/>\n                                            <constraint firstAttribute=\"bottom\" secondItem=\"N7d-MV-1Tg\" secondAttribute=\"bottom\" id=\"aEo-j6-ant\"/>\n                                            <constraint firstItem=\"N7d-MV-1Tg\" firstAttribute=\"top\" secondItem=\"EKC-lY-Png\" secondAttribute=\"top\" id=\"enU-f3-KkH\"/>\n                                            <constraint firstAttribute=\"trailing\" secondItem=\"N7d-MV-1Tg\" secondAttribute=\"trailing\" id=\"fcc-bP-fg0\"/>\n                                        </constraints>\n                                        <connections>\n                                            <outlet property=\"imageView\" destination=\"N7d-MV-1Tg\" id=\"tCt-eq-bhT\"/>\n                                        </connections>\n                                    </collectionViewCell>\n                                </cells>\n                                <connections>\n                                    <outlet property=\"dataSource\" destination=\"vXZ-lx-hvc\" id=\"uH4-jF-oGq\"/>\n                                    <outlet property=\"delegate\" destination=\"vXZ-lx-hvc\" id=\"r5u-U3-8dQ\"/>\n                                </connections>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"2fi-mo-0CV\" firstAttribute=\"top\" secondItem=\"mja-x1-3VU\" secondAttribute=\"bottom\" id=\"Trl-qD-iB8\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"mja-x1-3VU\" secondAttribute=\"trailing\" id=\"beY-PA-Jni\"/>\n                            <constraint firstItem=\"mja-x1-3VU\" firstAttribute=\"top\" secondItem=\"kh9-bI-dsS\" secondAttribute=\"top\" id=\"jQD-W8-j2Q\"/>\n                            <constraint firstItem=\"mja-x1-3VU\" firstAttribute=\"leading\" secondItem=\"kh9-bI-dsS\" secondAttribute=\"leading\" id=\"tYB-Op-O1N\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"Du5-I2-Sio\">\n                        <barButtonItem key=\"leftBarButtonItem\" systemItem=\"refresh\" id=\"u3J-Ky-TgA\">\n                            <connections>\n                                <action selector=\"refresh:\" destination=\"vXZ-lx-hvc\" id=\"AjC-ea-HFD\"/>\n                            </connections>\n                        </barButtonItem>\n                        <barButtonItem key=\"rightBarButtonItem\" style=\"plain\" systemItem=\"add\" id=\"ama-th-eHP\">\n                            <connections>\n                                <action selector=\"pickImage:\" destination=\"vXZ-lx-hvc\" id=\"2Oa-7P-H5S\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <connections>\n                        <outlet property=\"collectionView\" destination=\"mja-x1-3VU\" id=\"XSY-MW-ySi\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"x5A-6p-PRh\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"504\" y=\"338\"/>\n        </scene>\n        <!--Navigation Controller-->\n        <scene sceneID=\"f6U-dq-fiX\">\n            <objects>\n                <navigationController automaticallyAdjustsScrollViewInsets=\"NO\" id=\"0Kq-ws-uy7\" sceneMemberID=\"viewController\">\n                    <toolbarItems/>\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" id=\"wCq-WZ-13H\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"320\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <nil name=\"viewControllers\"/>\n                    <connections>\n                        <segue destination=\"vXZ-lx-hvc\" kind=\"relationship\" relationship=\"rootViewController\" id=\"8bH-ff-cve\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"pOJ-av-TMB\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-206\" y=\"338\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSAppTransportSecurity</key>\n\t<dict>\n\t\t<key>NSAllowsArbitraryLoads</key>\n\t\t<true/>\n\t</dict>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>NSPhotoLibraryUsageDescription</key>\n\t<string></string>\n\t<key>UIViewControllerBasedStatusBarAppearance</key>\n\t<false/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/PhotoCell.h",
    "content": "//\n//  PhotoCell.h\n//  HUPhotoBrowser Demo\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface PhotoCell : UICollectionViewCell\n\n@property (weak, nonatomic) IBOutlet UIImageView *imageView;\n\n\n@end\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/PhotoCell.m",
    "content": "//\n//  PhotoCell.m\n//  HUPhotoBrowser Demo\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import \"PhotoCell.h\"\n\n@implementation PhotoCell\n\n@end\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/ViewController.h",
    "content": "//\n//  ViewController.h\n//  HUPhotoBrowser Demo\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface ViewController : UIViewController\n\n\n@end\n\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/ViewController.m",
    "content": "//\n//  ViewController.m\n//  HUPhotoBrowser Demo\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import \"ViewController.h\"\n#import \"PhotoCell.h\"\n#import \"HUPhotoBrowser.h\"\n#import <UIImageView+WebCache.h>\n#import <UIImageView+HUWebImage.h>\n#import <HUPhotoPicker/HUPhotoPicker.h>\n\n\n@interface ViewController ()<UICollectionViewDataSource, UICollectionViewDelegate,UICollectionViewDelegateFlowLayout,HUImagePickerViewControllerDelegate,UINavigationControllerDelegate>\n{\n    BOOL _localImage;\n}\n\n@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;\n@property (nonatomic, strong) NSArray *images;\n@property (nonatomic, strong) NSArray *originalImages;\n@property (nonatomic, strong) NSMutableArray *URLStrings;\n\n@end\n\n@implementation ViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.title = @\"HUPhotoBrowser Demo\";\n    _URLStrings = [NSMutableArray array];\n    // Do any additional setup after loading the view, typically from a nib.\n    [self getWebImages];\n  \n}\n\n- (void)didReceiveMemoryWarning {\n    [super didReceiveMemoryWarning];\n    // Dispose of any resources that can be recreated.\n    \n}\n\n\n#pragma mark collection view data source\n\n- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {\n    return _localImage ? _images.count : _URLStrings.count;\n}\n\n- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {\n    PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@\"PhotoCell\" forIndexPath:indexPath];\n    if (_localImage) {\n        cell.imageView.image = self.images[indexPath.row];\n    }\n    else {\n      [cell.imageView hu_setImageWithURL:[NSURL URLWithString:_URLStrings[indexPath.row]]];\n    }\n    \n    return cell;\n}\n\n#pragma mark - collection view delegate\n\n- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {\n    \n    PhotoCell *cell = (PhotoCell *)[collectionView cellForItemAtIndexPath:indexPath];\n    if (_localImage) {\n        [HUPhotoBrowser showFromImageView:cell.imageView withImages:self.originalImages atIndex:indexPath.row];\n    }\n    else {\n        [HUPhotoBrowser showFromImageView:cell.imageView withURLStrings:_URLStrings placeholderImage:[UIImage imageNamed:@\"placeholder\"] atIndex:indexPath.row dismiss:nil];\n    }\n}\n\n#pragma mark - HUImagePickerViewControllerDelegate\n- (void)imagePickerViewController:(HUImagePickerViewController *)imagePickerViewController didFinishPickingImageWithImages:(NSArray<UIImage *> *)images assets:(NSArray<PHAsset *> *)assets {\n    [self dismissViewControllerAnimated:YES completion:nil];\n    \n    _images = images;\n    _originalImages = images;\n    _localImage = YES;\n    [self.collectionView reloadData];\n}\n\n#pragma mark - IBAction\n\n- (IBAction)pickImage:(id)sender {\n    HUImagePickerViewController *picker = [[HUImagePickerViewController alloc] init];\n    picker.delegate = self;\n    [self presentViewController:picker animated:YES completion:nil];\n}\n\n- (IBAction)refresh:(id)sender {\n    [self getWebImages];\n    _localImage = NO;\n    [self.collectionView reloadData];\n}\n\n\n#pragma mark - private \n\n- (void)getWebImages {\n    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];\n    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];\n    NSURL *url = [NSURL URLWithString:@\"https://pixabay.com/api/?key=4572819-33c1e1dcbac7521c915689a81&&image_type=photo\"];\n    \n    NSURLRequest *repuest = [NSURLRequest requestWithURL:url];\n    NSURLSessionDataTask *task = [session dataTaskWithRequest:repuest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {\n        \n        NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];\n        NSMutableArray *urlS = [NSMutableArray array];\n        for (NSDictionary *dict in result[@\"hits\"]) {\n            NSString *linkurl = dict[@\"webformatURL\"];\n            [urlS addObject:linkurl];\n        }\n        _URLStrings = urlS;\n        dispatch_async(dispatch_get_main_queue(), ^{\n         \n            [self.collectionView reloadData];\n        });\n        \n    }];\n    [task resume];\n}\n\n@end\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo/main.m",
    "content": "//\n//  main.m\n//  HUPhotoBrowser Demo\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"AppDelegate.h\"\n\nint main(int argc, char * argv[]) {\n    @autoreleasepool {\n        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));\n    }\n}\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t040623A31C7E9989005653C1 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 040623A21C7E9989005653C1 /* main.m */; };\n\t\t040623A61C7E9989005653C1 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 040623A51C7E9989005653C1 /* AppDelegate.m */; };\n\t\t040623A91C7E9989005653C1 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 040623A81C7E9989005653C1 /* ViewController.m */; };\n\t\t040623AC1C7E9989005653C1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 040623AA1C7E9989005653C1 /* Main.storyboard */; };\n\t\t040623AE1C7E9989005653C1 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 040623AD1C7E9989005653C1 /* Images.xcassets */; };\n\t\t040623B11C7E9989005653C1 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 040623AF1C7E9989005653C1 /* LaunchScreen.xib */; };\n\t\t040623BD1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 040623BC1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m */; };\n\t\t040624021C7E9BB6005653C1 /* PhotoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 040624011C7E9BB6005653C1 /* PhotoCell.m */; };\n\t\t044D06501CD34623005BDFF2 /* placeholder.png in Resources */ = {isa = PBXBuildFile; fileRef = 044D064F1CD34623005BDFF2 /* placeholder.png */; };\n\t\tBAE6B9A9C28D8D7FBAFBD61F /* libPods-HUPhotoBrowser DemoTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FB702EF6466173C9049EA4E3 /* libPods-HUPhotoBrowser DemoTests.a */; };\n\t\tC2CE112E20AE7956006DEB06 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = C2CE112B20AE7956006DEB06 /* README.md */; };\n\t\tC2CE112F20AE7956006DEB06 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = C2CE112C20AE7956006DEB06 /* LICENSE */; };\n\t\tC2CE113020AE7956006DEB06 /* HUPhotoBrowser.podspec in Resources */ = {isa = PBXBuildFile; fileRef = C2CE112D20AE7956006DEB06 /* HUPhotoBrowser.podspec */; };\n\t\tF5D16FEE5AB714F5360AD713 /* libPods-HUPhotoBrowser Demo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B3405AA6738D3B753050B7C /* libPods-HUPhotoBrowser Demo.a */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t040623B71C7E9989005653C1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 040623951C7E9989005653C1 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 0406239C1C7E9989005653C1;\n\t\t\tremoteInfo = \"HUPhotoBrowser Demo\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t0406239D1C7E9989005653C1 /* HUPhotoBrowser Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"HUPhotoBrowser Demo.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t040623A11C7E9989005653C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t040623A21C7E9989005653C1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\t040623A41C7E9989005653C1 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = \"<group>\"; };\n\t\t040623A51C7E9989005653C1 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = \"<group>\"; };\n\t\t040623A71C7E9989005653C1 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = \"<group>\"; };\n\t\t040623A81C7E9989005653C1 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = \"<group>\"; };\n\t\t040623AB1C7E9989005653C1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\t040623AD1C7E9989005653C1 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = \"<group>\"; };\n\t\t040623B01C7E9989005653C1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = \"<group>\"; };\n\t\t040623B61C7E9989005653C1 /* HUPhotoBrowser DemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"HUPhotoBrowser DemoTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t040623BB1C7E9989005653C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t040623BC1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HUPhotoBrowser_DemoTests.m; sourceTree = \"<group>\"; };\n\t\t040624001C7E9BB6005653C1 /* PhotoCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhotoCell.h; sourceTree = \"<group>\"; };\n\t\t040624011C7E9BB6005653C1 /* PhotoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhotoCell.m; sourceTree = \"<group>\"; };\n\t\t044D064F1CD34623005BDFF2 /* placeholder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = placeholder.png; sourceTree = \"<group>\"; };\n\t\t0B3405AA6738D3B753050B7C /* libPods-HUPhotoBrowser Demo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-HUPhotoBrowser Demo.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3F903672B8A30024BEB85314 /* Pods-HUPhotoBrowser Demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-HUPhotoBrowser Demo.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t5E779CEE89A1CB6936C03263 /* Pods-HUPhotoBrowser Demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-HUPhotoBrowser Demo.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tC2CE112B20AE7956006DEB06 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../../README.md; sourceTree = \"<group>\"; };\n\t\tC2CE112C20AE7956006DEB06 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LICENSE; path = ../../LICENSE; sourceTree = \"<group>\"; };\n\t\tC2CE112D20AE7956006DEB06 /* HUPhotoBrowser.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = HUPhotoBrowser.podspec; path = ../../HUPhotoBrowser.podspec; sourceTree = \"<group>\"; };\n\t\tE46B2F0916D241B35A9BD18C /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-HUPhotoBrowser DemoTests.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tF1491B717433294000E08563 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-HUPhotoBrowser DemoTests.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tFB702EF6466173C9049EA4E3 /* libPods-HUPhotoBrowser DemoTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-HUPhotoBrowser DemoTests.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t0406239A1C7E9989005653C1 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tF5D16FEE5AB714F5360AD713 /* libPods-HUPhotoBrowser Demo.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t040623B31C7E9989005653C1 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBAE6B9A9C28D8D7FBAFBD61F /* libPods-HUPhotoBrowser DemoTests.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t040623941C7E9989005653C1 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC2CE112A20AE7939006DEB06 /* Podspec Metadata */,\n\t\t\t\t0406239F1C7E9989005653C1 /* HUPhotoBrowser Demo */,\n\t\t\t\t040623B91C7E9989005653C1 /* HUPhotoBrowser DemoTests */,\n\t\t\t\t0406239E1C7E9989005653C1 /* Products */,\n\t\t\t\tAFAAEBF96020AD44718B49B4 /* Pods */,\n\t\t\t\tFAC6D30897335D2BCBFDD90B /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0406239E1C7E9989005653C1 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0406239D1C7E9989005653C1 /* HUPhotoBrowser Demo.app */,\n\t\t\t\t040623B61C7E9989005653C1 /* HUPhotoBrowser DemoTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0406239F1C7E9989005653C1 /* HUPhotoBrowser Demo */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t040623A41C7E9989005653C1 /* AppDelegate.h */,\n\t\t\t\t040623A51C7E9989005653C1 /* AppDelegate.m */,\n\t\t\t\t040623A71C7E9989005653C1 /* ViewController.h */,\n\t\t\t\t040623A81C7E9989005653C1 /* ViewController.m */,\n\t\t\t\t040624001C7E9BB6005653C1 /* PhotoCell.h */,\n\t\t\t\t040624011C7E9BB6005653C1 /* PhotoCell.m */,\n\t\t\t\t040623AA1C7E9989005653C1 /* Main.storyboard */,\n\t\t\t\t040623AD1C7E9989005653C1 /* Images.xcassets */,\n\t\t\t\t040623AF1C7E9989005653C1 /* LaunchScreen.xib */,\n\t\t\t\t040623A01C7E9989005653C1 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = \"HUPhotoBrowser Demo\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t040623A01C7E9989005653C1 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t044D064F1CD34623005BDFF2 /* placeholder.png */,\n\t\t\t\t040623A11C7E9989005653C1 /* Info.plist */,\n\t\t\t\t040623A21C7E9989005653C1 /* main.m */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t040623B91C7E9989005653C1 /* HUPhotoBrowser DemoTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t040623BC1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m */,\n\t\t\t\t040623BA1C7E9989005653C1 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = \"HUPhotoBrowser DemoTests\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t040623BA1C7E9989005653C1 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t040623BB1C7E9989005653C1 /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tAFAAEBF96020AD44718B49B4 /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t5E779CEE89A1CB6936C03263 /* Pods-HUPhotoBrowser Demo.debug.xcconfig */,\n\t\t\t\t3F903672B8A30024BEB85314 /* Pods-HUPhotoBrowser Demo.release.xcconfig */,\n\t\t\t\tF1491B717433294000E08563 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */,\n\t\t\t\tE46B2F0916D241B35A9BD18C /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */,\n\t\t\t);\n\t\t\tname = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC2CE112A20AE7939006DEB06 /* Podspec Metadata */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC2CE112D20AE7956006DEB06 /* HUPhotoBrowser.podspec */,\n\t\t\t\tC2CE112C20AE7956006DEB06 /* LICENSE */,\n\t\t\t\tC2CE112B20AE7956006DEB06 /* README.md */,\n\t\t\t);\n\t\t\tpath = \"Podspec Metadata\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tFAC6D30897335D2BCBFDD90B /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0B3405AA6738D3B753050B7C /* libPods-HUPhotoBrowser Demo.a */,\n\t\t\t\tFB702EF6466173C9049EA4E3 /* libPods-HUPhotoBrowser DemoTests.a */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t0406239C1C7E9989005653C1 /* HUPhotoBrowser Demo */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 040623C01C7E9989005653C1 /* Build configuration list for PBXNativeTarget \"HUPhotoBrowser Demo\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tA962A2954A15437EEDEDD01C /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t040623991C7E9989005653C1 /* Sources */,\n\t\t\t\t0406239A1C7E9989005653C1 /* Frameworks */,\n\t\t\t\t0406239B1C7E9989005653C1 /* Resources */,\n\t\t\t\tB0E9B81CB19068F4E9174942 /* [CP] Embed Pods Frameworks */,\n\t\t\t\t97981A438D22C17C60DAD2EE /* [CP] Copy Pods Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"HUPhotoBrowser Demo\";\n\t\t\tproductName = \"HUPhotoBrowser Demo\";\n\t\t\tproductReference = 0406239D1C7E9989005653C1 /* HUPhotoBrowser Demo.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\t040623B51C7E9989005653C1 /* HUPhotoBrowser DemoTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 040623C31C7E9989005653C1 /* Build configuration list for PBXNativeTarget \"HUPhotoBrowser DemoTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE0F2C44E94EA75AA6F5357CA /* [CP] Check Pods Manifest.lock */,\n\t\t\t\t040623B21C7E9989005653C1 /* Sources */,\n\t\t\t\t040623B31C7E9989005653C1 /* Frameworks */,\n\t\t\t\t040623B41C7E9989005653C1 /* Resources */,\n\t\t\t\t65F7F3B05B67ECD82A8D70B0 /* [CP] Embed Pods Frameworks */,\n\t\t\t\t4267A09C64DAB8DB54D72BE0 /* [CP] Copy Pods Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t040623B81C7E9989005653C1 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"HUPhotoBrowser DemoTests\";\n\t\t\tproductName = \"HUPhotoBrowser DemoTests\";\n\t\t\tproductReference = 040623B61C7E9989005653C1 /* HUPhotoBrowser DemoTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t040623951C7E9989005653C1 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0730;\n\t\t\t\tORGANIZATIONNAME = hujewelz;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t0406239C1C7E9989005653C1 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.4;\n\t\t\t\t\t\tDevelopmentTeam = 6E4KPH54E6;\n\t\t\t\t\t};\n\t\t\t\t\t040623B51C7E9989005653C1 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.4;\n\t\t\t\t\t\tTestTargetID = 0406239C1C7E9989005653C1;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 040623981C7E9989005653C1 /* Build configuration list for PBXProject \"HUPhotoBrowser Demo\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 040623941C7E9989005653C1;\n\t\t\tproductRefGroup = 0406239E1C7E9989005653C1 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t0406239C1C7E9989005653C1 /* HUPhotoBrowser Demo */,\n\t\t\t\t040623B51C7E9989005653C1 /* HUPhotoBrowser DemoTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t0406239B1C7E9989005653C1 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC2CE113020AE7956006DEB06 /* HUPhotoBrowser.podspec in Resources */,\n\t\t\t\tC2CE112F20AE7956006DEB06 /* LICENSE in Resources */,\n\t\t\t\t044D06501CD34623005BDFF2 /* placeholder.png in Resources */,\n\t\t\t\t040623AC1C7E9989005653C1 /* Main.storyboard in Resources */,\n\t\t\t\tC2CE112E20AE7956006DEB06 /* README.md in Resources */,\n\t\t\t\t040623B11C7E9989005653C1 /* LaunchScreen.xib in Resources */,\n\t\t\t\t040623AE1C7E9989005653C1 /* Images.xcassets in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t040623B41C7E9989005653C1 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t4267A09C64DAB8DB54D72BE0 /* [CP] Copy Pods Resources */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"[CP] Copy Pods Resources\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-resources.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t65F7F3B05B67ECD82A8D70B0 /* [CP] Embed Pods Frameworks */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"[CP] Embed Pods Frameworks\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-frameworks.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\t97981A438D22C17C60DAD2EE /* [CP] Copy Pods Resources */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-resources.sh\",\n\t\t\t\t$PODS_CONFIGURATION_BUILD_DIR/HUPhotoPicker/HUPhotoPicker.bundle,\n\t\t\t\t\"${PODS_ROOT}/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle\",\n\t\t\t);\n\t\t\tname = \"[CP] Copy Pods Resources\";\n\t\t\toutputPaths = (\n\t\t\t\t\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-resources.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tA962A2954A15437EEDEDD01C /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-HUPhotoBrowser Demo-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tB0E9B81CB19068F4E9174942 /* [CP] Embed Pods Frameworks */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"[CP] Embed Pods Frameworks\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"${SRCROOT}/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-frameworks.sh\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tE0F2C44E94EA75AA6F5357CA /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-HUPhotoBrowser DemoTests-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t040623991C7E9989005653C1 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t040624021C7E9BB6005653C1 /* PhotoCell.m in Sources */,\n\t\t\t\t040623A91C7E9989005653C1 /* ViewController.m in Sources */,\n\t\t\t\t040623A61C7E9989005653C1 /* AppDelegate.m in Sources */,\n\t\t\t\t040623A31C7E9989005653C1 /* main.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t040623B21C7E9989005653C1 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t040623BD1C7E9989005653C1 /* HUPhotoBrowser_DemoTests.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t040623B81C7E9989005653C1 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 0406239C1C7E9989005653C1 /* HUPhotoBrowser Demo */;\n\t\t\ttargetProxy = 040623B71C7E9989005653C1 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t040623AA1C7E9989005653C1 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t040623AB1C7E9989005653C1 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t040623AF1C7E9989005653C1 /* LaunchScreen.xib */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t040623B01C7E9989005653C1 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.xib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t040623BE1C7E9989005653C1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.4;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t040623BF1C7E9989005653C1 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.4;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t040623C11C7E9989005653C1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 5E779CEE89A1CB6936C03263 /* Pods-HUPhotoBrowser Demo.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tDEVELOPMENT_TEAM = 6E4KPH54E6;\n\t\t\t\tINFOPLIST_FILE = \"HUPhotoBrowser Demo/Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t040623C21C7E9989005653C1 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 3F903672B8A30024BEB85314 /* Pods-HUPhotoBrowser Demo.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tDEVELOPMENT_TEAM = 6E4KPH54E6;\n\t\t\t\tINFOPLIST_FILE = \"HUPhotoBrowser Demo/Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t040623C41C7E9989005653C1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = F1491B717433294000E08563 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"HUPhotoBrowser DemoTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/HUPhotoBrowser Demo.app/HUPhotoBrowser Demo\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t040623C51C7E9989005653C1 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = E46B2F0916D241B35A9BD18C /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = \"HUPhotoBrowser DemoTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/HUPhotoBrowser Demo.app/HUPhotoBrowser Demo\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t040623981C7E9989005653C1 /* Build configuration list for PBXProject \"HUPhotoBrowser Demo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t040623BE1C7E9989005653C1 /* Debug */,\n\t\t\t\t040623BF1C7E9989005653C1 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t040623C01C7E9989005653C1 /* Build configuration list for PBXNativeTarget \"HUPhotoBrowser Demo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t040623C11C7E9989005653C1 /* Debug */,\n\t\t\t\t040623C21C7E9989005653C1 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t040623C31C7E9989005653C1 /* Build configuration list for PBXNativeTarget \"HUPhotoBrowser DemoTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t040623C41C7E9989005653C1 /* Debug */,\n\t\t\t\t040623C51C7E9989005653C1 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 040623951C7E9989005653C1 /* Project object */;\n}\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:HUPhotoBrowser Demo.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/project.xcworkspace/xcshareddata/HUPhotoBrowser Demo.xccheckout",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDESourceControlProjectFavoriteDictionaryKey</key>\n\t<false/>\n\t<key>IDESourceControlProjectIdentifier</key>\n\t<string>CE29FB11-1DFE-4499-9106-1E1B43F85B28</string>\n\t<key>IDESourceControlProjectName</key>\n\t<string>HUPhotoBrowser Demo</string>\n\t<key>IDESourceControlProjectOriginsDictionary</key>\n\t<dict>\n\t\t<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>\n\t\t<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>\n\t</dict>\n\t<key>IDESourceControlProjectPath</key>\n\t<string>Example/HUPhotoBrowser Demo.xcodeproj</string>\n\t<key>IDESourceControlProjectRelativeInstallPathDictionary</key>\n\t<dict>\n\t\t<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>\n\t\t<string>../../..</string>\n\t</dict>\n\t<key>IDESourceControlProjectURL</key>\n\t<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>\n\t<key>IDESourceControlProjectVersion</key>\n\t<integer>111</integer>\n\t<key>IDESourceControlProjectWCCIdentifier</key>\n\t<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>\n\t<key>IDESourceControlProjectWCConfigurations</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>HUPhotoBrowser</string>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>HUPhotoBrowser Demo.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>7</integer>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoBrowser Demo.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0730\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"0406239C1C7E9989005653C1\"\n               BuildableName = \"HUPhotoBrowser Demo.app\"\n               BlueprintName = \"HUPhotoBrowser Demo\"\n               ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"040623B51C7E9989005653C1\"\n               BuildableName = \"HUPhotoBrowser DemoTests.xctest\"\n               BlueprintName = \"HUPhotoBrowser DemoTests\"\n               ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"040623B51C7E9989005653C1\"\n               BuildableName = \"HUPhotoBrowser DemoTests.xctest\"\n               BlueprintName = \"HUPhotoBrowser DemoTests\"\n               ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406239C1C7E9989005653C1\"\n            BuildableName = \"HUPhotoBrowser Demo.app\"\n            BlueprintName = \"HUPhotoBrowser Demo\"\n            ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406239C1C7E9989005653C1\"\n            BuildableName = \"HUPhotoBrowser Demo.app\"\n            BlueprintName = \"HUPhotoBrowser Demo\"\n            ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406239C1C7E9989005653C1\"\n            BuildableName = \"HUPhotoBrowser Demo.app\"\n            BlueprintName = \"HUPhotoBrowser Demo\"\n            ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>HUPhotoBrowser Demo.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t</dict>\n\t<key>SuppressBuildableAutocreation</key>\n\t<dict>\n\t\t<key>0406239C1C7E9989005653C1</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>040623B51C7E9989005653C1</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   type = \"1\"\n   version = \"2.0\">\n   <Breakpoints>\n      <BreakpointProxy\n         BreakpointExtensionID = \"Xcode.Breakpoint.FileBreakpoint\">\n         <BreakpointContent\n            shouldBeEnabled = \"Yes\"\n            ignoreCount = \"0\"\n            continueAfterRunningActions = \"No\"\n            filePath = \"HUPhotoBrowser Demo/HUPhotoBrowser/HUPhotoBrowser.m\"\n            timestampString = \"478142202.352438\"\n            startingColumnNumber = \"9223372036854775807\"\n            endingColumnNumber = \"9223372036854775807\"\n            startingLineNumber = \"31\"\n            endingLineNumber = \"31\"\n            landmarkName = \"-dealloc\"\n            landmarkType = \"5\">\n         </BreakpointContent>\n      </BreakpointProxy>\n   </Breakpoints>\n</Bucket>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HUPhotoBrowser Demo.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0640\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"0406239C1C7E9989005653C1\"\n               BuildableName = \"HUPhotoBrowser Demo.app\"\n               BlueprintName = \"HUPhotoBrowser Demo\"\n               ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"040623B51C7E9989005653C1\"\n               BuildableName = \"HUPhotoBrowser DemoTests.xctest\"\n               BlueprintName = \"HUPhotoBrowser DemoTests\"\n               ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"040623B51C7E9989005653C1\"\n               BuildableName = \"HUPhotoBrowser DemoTests.xctest\"\n               BlueprintName = \"HUPhotoBrowser DemoTests\"\n               ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406239C1C7E9989005653C1\"\n            BuildableName = \"HUPhotoBrowser Demo.app\"\n            BlueprintName = \"HUPhotoBrowser Demo\"\n            ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      buildConfiguration = \"Debug\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406239C1C7E9989005653C1\"\n            BuildableName = \"HUPhotoBrowser Demo.app\"\n            BlueprintName = \"HUPhotoBrowser Demo\"\n            ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      buildConfiguration = \"Release\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406239C1C7E9989005653C1\"\n            BuildableName = \"HUPhotoBrowser Demo.app\"\n            BlueprintName = \"HUPhotoBrowser Demo\"\n            ReferencedContainer = \"container:HUPhotoBrowser Demo.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>HUPhotoBrowser Demo.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t</dict>\n\t<key>SuppressBuildableAutocreation</key>\n\t<dict>\n\t\t<key>0406239C1C7E9989005653C1</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>040623B51C7E9989005653C1</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:HUPhotoBrowser Demo.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Pods/Pods.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcworkspace/xcshareddata/HUPhotoBrowser Demo.xccheckout",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDESourceControlProjectFavoriteDictionaryKey</key>\n\t<false/>\n\t<key>IDESourceControlProjectIdentifier</key>\n\t<string>06162301-A6AF-43BC-A098-A5C0AEEEF86B</string>\n\t<key>IDESourceControlProjectName</key>\n\t<string>HUPhotoBrowser Demo</string>\n\t<key>IDESourceControlProjectOriginsDictionary</key>\n\t<dict>\n\t\t<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>\n\t\t<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>\n\t</dict>\n\t<key>IDESourceControlProjectPath</key>\n\t<string>Example/HUPhotoBrowser Demo.xcworkspace</string>\n\t<key>IDESourceControlProjectRelativeInstallPathDictionary</key>\n\t<dict>\n\t\t<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>\n\t\t<string>../..</string>\n\t</dict>\n\t<key>IDESourceControlProjectURL</key>\n\t<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>\n\t<key>IDESourceControlProjectVersion</key>\n\t<integer>111</integer>\n\t<key>IDESourceControlProjectWCCIdentifier</key>\n\t<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>\n\t<key>IDESourceControlProjectWCConfigurations</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>HUPhotoBrowser</string>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/HUPhotoBrowser Demo.xcworkspace/xcuserdata/huluobo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   type = \"0\"\n   version = \"2.0\">\n</Bucket>\n"
  },
  {
    "path": "Example/HUPhotoBrowser DemoTests/HUPhotoBrowser_DemoTests.m",
    "content": "//\n//  HUPhotoBrowser_DemoTests.m\n//  HUPhotoBrowser DemoTests\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import <XCTest/XCTest.h>\n\n@interface HUPhotoBrowser_DemoTests : XCTestCase\n\n@end\n\n@implementation HUPhotoBrowser_DemoTests\n\n- (void)setUp {\n    [super setUp];\n    // Put setup code here. This method is called before the invocation of each test method in the class.\n}\n\n- (void)tearDown {\n    // Put teardown code here. This method is called after the invocation of each test method in the class.\n    [super tearDown];\n}\n\n- (void)testExample {\n    // This is an example of a functional test case.\n    XCTAssert(YES, @\"Pass\");\n}\n\n- (void)testPerformanceExample {\n    // This is an example of a performance test case.\n    [self measureBlock:^{\n        // Put the code you want to measure the time of here.\n    }];\n}\n\n@end\n"
  },
  {
    "path": "Example/HUPhotoBrowser DemoTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/Podfile",
    "content": "# Uncomment this line to define a global platform for your project\nplatform :ios, '8.0'\n# Uncomment this line if you're using Swift\n# use_frameworks!\n\ntarget 'HUPhotoBrowser Demo' do\n\npod 'HUPhotoBrowser', :path => '../'\npod 'SDWebImage'\npod 'HUPhotoPicker', '~> 1.0.3'\nend\n\ntarget 'HUPhotoBrowser DemoTests' do\n\nend\n\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Assets/HUAlbumCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"12121\" systemVersion=\"16F73\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12089\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" rowHeight=\"88\" id=\"KGk-i7-Jjw\" customClass=\"HUAlbumCell\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"368\" height=\"88\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"KGk-i7-Jjw\" id=\"H2p-sc-9uM\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"368\" height=\"88\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <imageView clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2WO-xF-Kx5\">\n                        <rect key=\"frame\" x=\"14\" y=\"14\" width=\"60\" height=\"60\"/>\n                        <color key=\"backgroundColor\" cocoaTouchSystemColor=\"groupTableViewBackgroundColor\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"width\" constant=\"60\" id=\"BgW-0x-Gj5\"/>\n                            <constraint firstAttribute=\"height\" constant=\"60\" id=\"QNg-iL-ogm\"/>\n                        </constraints>\n                    </imageView>\n                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Rkk-Yp-vqT\">\n                        <rect key=\"frame\" x=\"82\" y=\"14\" width=\"38\" height=\"18\"/>\n                        <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                        <color key=\"textColor\" red=\"0.1999788582\" green=\"0.20001345870000001\" blue=\"0.1999712884\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2nc-dY-mfx\">\n                        <rect key=\"frame\" x=\"82\" y=\"58\" width=\"33\" height=\"16\"/>\n                        <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"13\"/>\n                        <color key=\"textColor\" red=\"0.86666666670000003\" green=\"0.8862745098\" blue=\"0.92156862750000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                </subviews>\n                <constraints>\n                    <constraint firstItem=\"2nc-dY-mfx\" firstAttribute=\"leading\" secondItem=\"Rkk-Yp-vqT\" secondAttribute=\"leading\" id=\"Y4g-65-pqY\"/>\n                    <constraint firstItem=\"Rkk-Yp-vqT\" firstAttribute=\"top\" secondItem=\"2WO-xF-Kx5\" secondAttribute=\"top\" id=\"ZaK-NC-prn\"/>\n                    <constraint firstItem=\"2WO-xF-Kx5\" firstAttribute=\"leading\" secondItem=\"H2p-sc-9uM\" secondAttribute=\"leading\" constant=\"14\" id=\"cYJ-7r-2sh\"/>\n                    <constraint firstItem=\"2nc-dY-mfx\" firstAttribute=\"bottom\" secondItem=\"2WO-xF-Kx5\" secondAttribute=\"bottom\" id=\"eQi-vl-p9m\"/>\n                    <constraint firstItem=\"2WO-xF-Kx5\" firstAttribute=\"centerY\" secondItem=\"H2p-sc-9uM\" secondAttribute=\"centerY\" id=\"hv8-3G-LC1\"/>\n                    <constraint firstItem=\"Rkk-Yp-vqT\" firstAttribute=\"leading\" secondItem=\"2WO-xF-Kx5\" secondAttribute=\"trailing\" constant=\"8\" id=\"yav-Si-NDz\"/>\n                </constraints>\n            </tableViewCellContentView>\n            <connections>\n                <outlet property=\"album\" destination=\"2WO-xF-Kx5\" id=\"ZQ5-ao-JOR\"/>\n                <outlet property=\"countLabel\" destination=\"2nc-dY-mfx\" id=\"XWI-be-5Wo\"/>\n                <outlet property=\"titleLabel\" destination=\"Rkk-Yp-vqT\" id=\"qt7-UW-ePD\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"58\" y=\"76\"/>\n        </tableViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/Asset.h",
    "content": "//\n//  Asset.h\n//  HUPhotoPicker\n//\n//  Created by jewelz on 2017/7/28.\n//\n\n#ifndef Asset_h\n#define Asset_h\n\n#import \"NSBundle+HUPicker.h\"\n\n#define UIFontBoldMake(size) [UIFont boldSystemFontOfSize:(size)]\n#define UIFontMake(size) [UIFont systemFontOfSize:(size)]\n#define UIColorMake(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1]\n\n#define UIImageMake(named) [NSBundle hu_imageNamed:(named)]\n\n#endif /* Asset_h */\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumCell.h",
    "content": "//\n//  BAAlbumCell.h\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/26.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface HUAlbumCell : UITableViewCell\n\n+ (UINib *)nib;\n+ (NSString *)reuseIdentifier;\n\n@property (weak, nonatomic) IBOutlet UIImageView *album;\n@property (weak, nonatomic) IBOutlet UILabel *titleLabel;\n@property (weak, nonatomic) IBOutlet UILabel *countLabel;\n\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumCell.m",
    "content": "//\n//  BAAlbumCell.m\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/26.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import \"HUAlbumCell.h\"\n#import \"NSBundle+HUPicker.h\"\n#import \"NSBundle+HUPicker.h\"\n\n@implementation HUAlbumCell\n\n+ (UINib *)nib {\n   // NSBundle *podBundle = [NSBundle bundleForClass:[self class]];\n    \n    return [UINib nibWithNibName:@\"HUAlbumCell\" bundle:[NSBundle hu_bundle]];\n}\n\n+ (NSString *)reuseIdentifier {\n    return @\"BAAlbumCell\";\n}\n\n- (void)awakeFromNib {\n    [super awakeFromNib];\n    // Initialization code\n}\n\n- (void)setSelected:(BOOL)selected animated:(BOOL)animated {\n    [super setSelected:selected animated:animated];\n\n    // Configure the view for the selected state\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumTableViewController.h",
    "content": "//\n//  BAAlbumTableViewController.h\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@class PHFetchResult;\n@interface HUAlbumTableViewController : UITableViewController\n\n@property (nonatomic, copy) void (^didSelectedAlbum)(NSString *title, PHFetchResult *fetchResult);\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUAlbumTableViewController.m",
    "content": "//\n//  BAAlbumTableViewController.m\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import \"HUAlbumTableViewController.h\"\n#import \"HUImageGridViewController.h\"\n#import <Photos/Photos.h>\n#import \"HUAlbumCell.h\"\n#import \"HUPhotoAlbum.h\"\n\n@interface HUAlbumTableViewController () <PHPhotoLibraryChangeObserver> {\n    PHFetchResult<PHAssetCollection *> *_smartAlbums;\n    PHFetchResult<PHCollection *> *_userCollectons;\n}\n\n@property (nonatomic, strong) PHFetchResult<PHAsset *> *allPhotos;\n//@property (nonatomic, strong) NSArray<PHAssetCollection *> *smartAlbums;\n//@property (nonatomic, strong) NSArray<PHCollection *> *userCollectons;\n\n@property (nonatomic, strong) PHCachingImageManager *cachingImageManager;\n@property (nonatomic, strong) PHImageRequestOptions *options;\n\n\n@property (nonatomic, strong) NSArray<HUPhotoAlbum *>  *allAlbums;\n\n@end\n\n@implementation HUAlbumTableViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    \n    PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];\n    if (author == PHAuthorizationStatusNotDetermined) {\n        // 无权限\n        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {\n            if (status == PHAuthorizationStatusAuthorized) {\n                [self setupData];\n                return ;\n            }\n            [self rightBarItemClicked];\n        }];\n        return;\n    }\n    \n    if (author == PHAuthorizationStatusRestricted || author == PHAuthorizationStatusDenied) {\n        [self rightBarItemClicked];\n        return;\n    }\n    \n    [self setupData];\n    \n}\n\n- (void)dealloc {\n    if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized) {\n        [[PHPhotoLibrary sharedPhotoLibrary] unregisterChangeObserver:self];\n    }\n}\n\n\n- (void)didReceiveMemoryWarning {\n    [super didReceiveMemoryWarning];\n    // Dispose of any resources that can be recreated.\n}\n\n- (void)rightBarItemClicked {\n    \n    [self.navigationController dismissViewControllerAnimated:YES completion:nil];\n}\n\n\n#pragma mark - Table view data source\n\n//- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {\n//    return 2;\n//}\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    return self.allAlbums.count;\n}\n\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    \n    PHAsset *asset = nil;\n    HUAlbumCell *cell = [tableView dequeueReusableCellWithIdentifier:[HUAlbumCell reuseIdentifier] forIndexPath:indexPath];\n    HUPhotoAlbum *album = self.allAlbums[indexPath.row];\n    cell.titleLabel.text = album.title;\n    cell.countLabel.text = [NSString stringWithFormat:@\"%zd\", album.assetCount];\n    \n    PHFetchResult *results = [PHAsset fetchAssetsInAssetCollection:album.collection options:nil];\n    asset = [results firstObject];\n    \n    [_cachingImageManager requestImageForAsset:asset targetSize:CGSizeMake(120, 120) contentMode:PHImageContentModeDefault options:_options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {\n//        NSLog(@\"result: %@\", result);\n        cell.album.image = result;\n    }];\n    \n    return cell;\n}\n\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {\n    HUPhotoAlbum *album = self.allAlbums[indexPath.row];\n    \n    //HUImageGridViewController *vc = [[HUImageGridViewController alloc] init];\n    PHFetchOptions *options = [PHFetchOptions new];\n    options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@\"creationDate\" ascending:NO]];\n    PHFetchResult *results = [PHAsset fetchAssetsInAssetCollection:album.collection options:options];\n//    vc.title = album.title;\n//    vc.fetchResult = results;\n//    [self.navigationController pushViewController:vc animated:true];\n    \n    if (_didSelectedAlbum) {\n         _didSelectedAlbum(album.title, results);\n    }\n   \n}\n\n\n- (void)photoLibraryDidChange:(PHChange *)changeInstance {\n    dispatch_sync(dispatch_get_main_queue(), ^{\n        \n        PHFetchResultChangeDetails *all = [changeInstance changeDetailsForFetchResult:_allPhotos];\n        PHFetchResultChangeDetails *details = [changeInstance changeDetailsForFetchResult:_smartAlbums];\n        PHFetchResultChangeDetails *users = [changeInstance changeDetailsForFetchResult:_userCollectons];\n        \n        if (all) {\n            _allPhotos = [all fetchResultAfterChanges];\n        }\n        \n        if (details) {\n            _smartAlbums = [details fetchResultAfterChanges];\n        }\n        \n        if (users) {\n            _userCollectons = [users fetchResultAfterChanges];\n        }\n        \n        self.allAlbums = [self getPhotoAlbumsFromSmallAlbumsAndUserCollections];\n        [self.tableView reloadData];\n        \n    });\n}\n\n# pragma mark - Private\n\n- (void)setupData {\n    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@\"取消\" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked)];\n    \n    self.tableView.rowHeight = 80;\n    [self.tableView registerNib:[HUAlbumCell nib] forCellReuseIdentifier:[HUAlbumCell reuseIdentifier]];\n    _cachingImageManager = [[PHCachingImageManager alloc] init];\n    \n    PHFetchOptions *options = [PHFetchOptions new];\n    options.includeAssetSourceTypes = PHAssetResourceTypePhoto;\n    \n    _smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumSyncedAlbum options:options];\n    _userCollectons = [PHCollectionList fetchTopLevelUserCollectionsWithOptions:options];\n    \n    self.allAlbums = [self getPhotoAlbumsFromSmallAlbumsAndUserCollections];\n    \n    options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@\"creationDate\" ascending:NO]];\n    _allPhotos = [PHAsset fetchAssetsWithOptions:options];\n    \n    \n    [[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];\n}\n\n- (NSArray<HUPhotoAlbum *> *)getPhotoAlbumsFromSmallAlbumsAndUserCollections {\n    NSMutableArray<HUPhotoAlbum *> *allAlums = [NSMutableArray array];\n    NSArray<HUPhotoAlbum *> *smarts = [self getPhotoAlbumsWithPHAssetCollection:_smartAlbums];\n    [allAlums addObjectsFromArray:smarts];\n    NSArray<HUPhotoAlbum *> *users = [self getPhotoAlbumsWithPHAssetCollection:_userCollectons];\n    [allAlums addObjectsFromArray:users];\n    \n    return [allAlums copy];\n}\n\n- (NSArray<HUPhotoAlbum *> *)getPhotoAlbumsWithPHAssetCollection:(id)assetCollections {\n    NSMutableArray<HUPhotoAlbum *> *collections = [NSMutableArray array];\n    \n    HUPhotoAlbum *album = nil;\n    for (PHCollection *collection in assetCollections) {\n        if ([collection isKindOfClass:[PHAssetCollection class]]) {\n            PHFetchResult *results = [PHAsset fetchAssetsInAssetCollection:(PHAssetCollection *)collection options:nil];\n            if (results.count > 0) {\n                album = [HUPhotoAlbum photoAlbumWithAssetCollection:(PHAssetCollection*)collection assetCount:results.count];\n                [collections addObject: album];\n            }\n        }\n    }\n    \n    return collections;\n}\n\n#pragma mark - getter & setter\n\n- (NSArray *)allAlbums {\n    if (_allAlbums == nil) {\n        _allAlbums = [NSArray array];\n    }\n    return _allAlbums;\n}\n\n\n- (PHImageRequestOptions *)options {\n    if (_options == nil) {\n        _options = [PHImageRequestOptions new];\n        _options.resizeMode = PHImageRequestOptionsResizeModeFast;\n        [_options setSynchronous:false];\n        [_options setNetworkAccessAllowed:false];\n    }\n    return _options;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridCell.h",
    "content": "//\n//  BAImageGridCell.h\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"HUImageSelectModel.h\"\n\n@interface HUImageGridCell : UICollectionViewCell\n\n+ (NSString *)reuseIdentifier;\n\n@property (nonatomic, strong) UIImageView *thumbnail;\n@property (nonatomic, strong) UIButton *degradedButton;\n\n@property (nonatomic, assign) BOOL isDegraded;\n@property (nonatomic, copy) NSString *representedAssetIdentifier;\n\n@property (nonatomic, strong) HUImageSelectModel *model;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridCell.m",
    "content": "//\n//  HUImageGridCell.m\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import \"HUImageGridCell.h\"\n#import \"Asset.h\"\n#import \"UIView+HUConstraint.h\"\n//#import \"NSBundle+HUPicker.h\"\n\n@interface HUImageGridCell ()\n\n@property (nonatomic, strong) UIButton *checkButton;\n\n\n@end\n@implementation HUImageGridCell\n\n+ (NSString *)reuseIdentifier {\n    return @\"HUImageGridCell\";\n}\n\n- (instancetype)initWithFrame:(CGRect)frame {\n    self = [super initWithFrame:frame];\n    if (self) {\n        [self setupView];\n    }\n    return self;\n}\n\n- (void)setModel:(HUImageSelectModel *)model {\n    _model = model;\n    \n    [_checkButton setSelected:model.isSelected];\n    if (model.isSelected) {\n        NSString *title = [NSString stringWithFormat:@\"%zd\", model.index];\n        [_checkButton setTitle:title forState:UIControlStateSelected];\n    }\n}\n\n- (void)setIsDegraded:(BOOL)isDegraded {\n    _isDegraded = isDegraded;\n    self.degradedButton.hidden = !isDegraded;\n//    NSLog(@\"is degraded: %zd\", isDegraded);\n}\n\n- (void)setupView {\n    [self.contentView addSubview:self.thumbnail];\n    \n    [self.contentView addConstraintsWithVisualFormat:@\"H:|[v0]|\" views:@[self.thumbnail]];\n    [self.contentView addConstraintsWithVisualFormat:@\"V:|[v0]|\" views:@[self.thumbnail]];\n    \n    [self.contentView addSubview:self.checkButton];\n    [self.contentView addConstraintsWithVisualFormat:@\"H:[v0(==22)]-2-|\" views:@[self.checkButton]];\n    [self.contentView addConstraintsWithVisualFormat:@\"V:|-2-[v0(==22)]\" views:@[self.checkButton]];\n    \n    \n    [self.contentView addSubview:self.degradedButton];\n    [self.contentView addConstraintsWithVisualFormat:@\"H:|[v0]|\" views:@[self.degradedButton]];\n    [self.contentView addConstraintsWithVisualFormat:@\"V:|[v0]|\" views:@[self.degradedButton]];\n\n}\n\n- (UIImageView *)thumbnail {\n    if (_thumbnail == nil) {\n        _thumbnail = [UIImageView new];\n        _thumbnail.contentMode = UIViewContentModeScaleAspectFill;\n        _thumbnail.backgroundColor = [UIColor redColor];\n        _thumbnail.clipsToBounds = YES;\n    }\n    return _thumbnail;\n}\n\n- (UIButton *)checkButton {\n    if (_checkButton == nil) {\n        _checkButton = [UIButton buttonWithType:UIButtonTypeCustom];\n        [_checkButton setBackgroundImage:UIImageMake(@\"photo_button_normal\") forState:UIControlStateNormal];\n        [_checkButton setBackgroundImage:UIImageMake(@\"photo_button_selected\") forState:UIControlStateSelected];\n        [_checkButton setTitle:nil forState:UIControlStateNormal];\n        _checkButton.adjustsImageWhenHighlighted = NO;\n        _checkButton.userInteractionEnabled = NO;\n        [_checkButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];\n        _checkButton.titleLabel.font = [UIFont systemFontOfSize:13];\n    }\n    return _checkButton;\n}\n\n- (UIButton *)degradedButton {\n    if (_degradedButton == nil) {\n        _degradedButton = [UIButton buttonWithType:UIButtonTypeCustom];\n        _degradedButton.adjustsImageWhenHighlighted = NO;\n        //_degradedButton.backgroundColor = [UIColor redColor];\n        _degradedButton.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5];\n    }\n    return _degradedButton;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridViewController.h",
    "content": "//\n//  HUImageGridViewController.h\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import <Photos/Photos.h>\n\n@interface HUImageGridViewController : UIViewController\n\n@property (nonatomic, strong) PHFetchResult<PHAsset *> *fetchResult;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageGridViewController.m",
    "content": "//\n//  HUImageGridViewController.m\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import \"HUImageGridViewController.h\"\n#import \"HUImageGridCell.h\"\n#import \"HUTakePhotoCell.h\"\n#import \"HUNavTitleView.h\"\n#import \"HUImagePickerViewController.h\"\n#import \"HUImageSelectModel.h\"\n#import \"HUPHAuthorizationNotDeterminedView.h\"\n#import \"HUAlbumTableViewController.h\"\n#import \"Asset.h\"\n#import \"UIView+HUConstraint.m\"\n#import \"UIBarButtonItem+HUButton.h\"\n#import \"HUPhotoManager.h\"\n#import \"HUToast.h\"\n\n@interface HUImageGridViewController ()<UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, PHPhotoLibraryChangeObserver, UIGestureRecognizerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate> {\n    NSInteger _cloumns;\n    CGFloat _spacing;\n    __weak HUAlbumTableViewController *_albumVC;\n}\n\n@property (nonatomic, strong) UICollectionView *collectionView;\n@property (nonatomic, strong) HUNavTitleView *navTitleView;\n@property (nonatomic, strong) PHCachingImageManager *cachingImageManager;\n@property (nonatomic, strong) PHImageRequestOptions *options;\n@property (nonatomic, assign) CGSize targetSize;\n@property (nonatomic, strong) NSMutableArray<HUImageSelectModel *> *selectModels;\n@property (nonatomic, strong) NSMutableArray<NSIndexPath *> *selectIndexPaths;\n@property (nonatomic, strong) NSMutableArray *images;\n@property (nonatomic, strong) HUPHAuthorizationNotDeterminedView *notDeterminedView;\n@property (nonatomic, strong) UIView *bgMask;\n\n@end\n\n@implementation HUImageGridViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.view.backgroundColor = [UIColor whiteColor];\n    \n    self.navigationController.interactivePopGestureRecognizer.delegate = self;\n    \n    //self.navigationItem.leftBarButtonItem = [UIBarButtonItem leftItemWithImage:UIImageMake(@\"nav_back\") target:self action:@selector(back)];\n    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@\"取消\" style:UIBarButtonItemStylePlain target:self action:@selector(dismiss)];\n    \n    PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];\n    if (author == PHAuthorizationStatusNotDetermined) {\n        // 无权限\n        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {\n            if (status == PHAuthorizationStatusAuthorized) {\n                dispatch_async(dispatch_get_main_queue(), ^{\n                   [self setupData]; \n                });\n                \n                return ;\n            }\n            [self rightBarItemClicked];\n        }];\n        return;\n    }\n       \n    [self setupData];\n}\n\n- (void)dealloc {\n    \n    if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized) {\n        [[PHPhotoLibrary sharedPhotoLibrary] unregisterChangeObserver:self];\n    }\n}\n\n#pragma mark - Collection view data source\n\n- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {\n    return _fetchResult.count + 1;\n}\n\n- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {\n    if (indexPath.item == 0) {\n        HUTakePhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:[HUTakePhotoCell reuseIdentifier] forIndexPath:indexPath];\n        return cell;\n    }\n    PHAsset *asset = _fetchResult[indexPath.item - 1];\n    \n    HUImageGridCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:[HUImageGridCell reuseIdentifier] forIndexPath:indexPath];\n    cell.representedAssetIdentifier = asset.localIdentifier;\n    cell.model = self.selectModels[indexPath.item-1];\n    [_cachingImageManager requestImageForAsset:asset targetSize:_targetSize contentMode:PHImageContentModeDefault options:_options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {\n        BOOL isDegraded = [info[PHImageResultIsDegradedKey] boolValue];\n        \n        if (result && [cell.representedAssetIdentifier isEqualToString: asset.localIdentifier]) {\n            cell.thumbnail.image = result;\n            cell.isDegraded = isDegraded;\n        }\n    }];\n    return cell;\n}\n\n- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {\n    if (indexPath.item == 0) {\n        [self takePhoto];\n        return;\n    }\n    \n    \n    \n    PHAsset *asset = _fetchResult[indexPath.item-1];\n    if (asset.mediaType != PHAssetMediaTypeImage) {\n        return;\n    }\n    \n    HUImageSelectModel *model = self.selectModels[indexPath.item-1];\n    HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;\n    if (self.selectIndexPaths.count >= pickVc.maxCount && !model.isSelected) {\n        NSString *title = [NSString stringWithFormat:@\"你最多只能选择%zd张照片\", pickVc.maxCount];\n        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:nil delegate:nil cancelButtonTitle:@\"我知道了\" otherButtonTitles:nil, nil];\n        [alert show];\n        return;\n    }\n    \n    if (!model.isSelected) {\n        [[HUPhotoManager sharedInstance] checkPhotoIsAvaliableWithAsset:asset progress:^(double progress) {\n            \n        } completed:^(BOOL avaliable, UIImage * _Nonnull image) {\n            if (avaliable) {\n                \n                \n                model.isSelected = !model.isSelected;\n                \n                [self.selectIndexPaths addObject:indexPath];\n                model.index = self.selectIndexPaths.count;\n                model.asset = _fetchResult[indexPath.item-1];\n                [collectionView reloadItemsAtIndexPaths:@[indexPath]];\n                \n                [self resetRightBarButton];\n            } else {\n                [HUToast makeToast:@\"iCloud同步中\" inView:self.view];\n            }\n        }];\n    } else {\n        \n        model.isSelected = !model.isSelected;\n        \n        [self.selectIndexPaths removeObject:indexPath];\n        model.asset = nil;\n        NSMutableArray *indexPaths = [NSMutableArray array];\n        [indexPaths addObject:indexPath];\n        \n        for (HUImageSelectModel *obj in self.selectModels) {\n            if (obj != model && obj.index > model.index) {\n                obj.index -= 1;\n                [indexPaths addObject:obj.indexPath];\n            }\n        }\n        \n        [collectionView reloadItemsAtIndexPaths:indexPaths];\n        [self resetRightBarButton];\n    }\n    \n   \n//    return;\n//    \n//    \n//    HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;\n//    if (self.selectIndexPaths.count >= pickVc.maxCount && !model.isSelected) {\n//        NSString *title = [NSString stringWithFormat:@\"你最多只能选择%zd张照片\", pickVc.maxCount];\n//        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:nil delegate:nil cancelButtonTitle:@\"我知道了\" otherButtonTitles:nil, nil];\n//        [alert show];\n//        return;\n//    }\n//    \n//    model.isSelected = !model.isSelected;\n//    \n//    if (model.isSelected) {\n//        [self.selectIndexPaths addObject:indexPath];\n//        model.index = self.selectIndexPaths.count;\n//        model.asset = _fetchResult[indexPath.item-1];\n//        [collectionView reloadItemsAtIndexPaths:@[indexPath]];\n//    } else {\n//        [self.selectIndexPaths removeObject:indexPath];\n//        model.asset = nil;\n//        NSMutableArray *indexPaths = [NSMutableArray array];\n//        [indexPaths addObject:indexPath];\n//        \n//        for (HUImageSelectModel *obj in self.selectModels) {\n//            if (obj != model && obj.index > model.index) {\n//                obj.index -= 1;\n//                [indexPaths addObject:obj.indexPath];\n//            }\n//        }\n//        \n//        [collectionView reloadItemsAtIndexPaths:indexPaths];\n//    }\n    \n   // [self.uploadButton setTitle:[NSString stringWithFormat:@\"上传(%zd)\", self.selectIndexPaths.count] forState:UIControlStateNormal];\n}\n\n\n- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {\n    CGFloat space = _spacing * (_cloumns - 1);\n    CGFloat wh = (self.view.frame.size.width - space) / _cloumns;\n    return CGSizeMake(wh, wh);\n}\n\n#pragma mark - UIImagePickerControllerDelegate\n\n- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {\n    [picker dismissViewControllerAnimated:YES completion:nil];\n}\n\n- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {\n    [picker dismissViewControllerAnimated:YES completion:nil];\n    \n    UIImage *image = info[UIImagePickerControllerOriginalImage];\n    \n    HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;\n    if ([pickVc.delegate respondsToSelector:@selector(imagePickerViewController:didFinishPickingImageWithImages:assets:)]) {\n        [pickVc.delegate imagePickerViewController:pickVc didFinishPickingImageWithImages:@[image] assets:nil];\n    }\n\n}\n\n#pragma mark - PHPhotoLibraryChangeObserver\n\n- (void)photoLibraryDidChange:(PHChange *)changeInstance {\n//    dispatch_sync(dispatch_get_main_queue(), ^{\n//        \n//        PHFetchResultChangeDetails *details = [changeInstance changeDetailsForFetchResult:_fetchResult];\n//        if (details) {\n//            self.fetchResult = [details fetchResultAfterChanges];\n////            [self.collectionView reloadData];\n//        }\n//        \n//    });\n}\n\n#pragma mark - Action\n\n- (void)rightBarItemClicked {\n//    [SVProgressHUD dismiss];\n    \n    if (self.selectIndexPaths.count > 0) {\n        [self fetchPhotos];\n        return;\n    }\n    \n    if ([self.navigationController isKindOfClass:[HUImagePickerViewController class]]) {\n        [self.navigationController dismissViewControllerAnimated:YES completion:nil];\n    }\n}\n\n- (void)fetchPhotos {\n    \n    NSMutableArray *assets = [NSMutableArray arrayWithCapacity:self.selectIndexPaths.count];\n    \n    \n    for (HUImageSelectModel *model in self.selectModels) {\n        if (model.isSelected) {\n            [assets addObject:model.asset];\n        }\n    }\n    \n    if (assets.count == 0) {\n        return;\n    }\n    \n    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{\n        [self fetchPhotoWithAsset:assets];\n    });\n}\n\n- (void)selectPhotoAlbum:(UIButton *)sender {\n    sender.selected = !sender.selected;\n    if (sender.isSelected) {\n        self.bgMask.hidden = NO;\n        _albumVC.view.hidden = NO;\n        [UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:0.8 initialSpringVelocity:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{\n            self.bgMask.alpha = 1;\n            _albumVC.view.transform = CGAffineTransformMakeTranslation(0, CGRectGetHeight(self.view.frame)-200+64);\n        } completion:^(BOOL finished) {\n            \n        }];\n    } else {\n        [self dismissPhotoAlbum];\n    }\n    \n}\n\n- (void)dismissPhotoAlbum {\n    _navTitleView.selected = NO;\n    [UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:0.8 initialSpringVelocity:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{\n        self.bgMask.alpha = 0;\n        _albumVC.view.transform = CGAffineTransformIdentity;\n    } completion:^(BOOL finished) {\n        self.bgMask.hidden = YES;\n        _albumVC.view.hidden = YES;\n    }];\n}\n\n\n#pragma mark - Private\n\n- (void)fetchPhotoWithAsset:(NSArray<PHAsset *> *)assets {\n    \n    [[HUPhotoManager sharedInstance] fetchPhotosWithAssets:assets progress:nil completed:^(NSArray<UIImage *> * _Nonnull images) {\n        \n        dispatch_async(dispatch_get_main_queue(), ^{\n            if (![self.navigationController isKindOfClass:[HUImagePickerViewController class]]) {\n                return;\n            }\n            \n            HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;\n            if ([pickVc.delegate respondsToSelector:@selector(imagePickerViewController:didFinishPickingImageWithImages:assets:)]) {\n                [pickVc.delegate imagePickerViewController:pickVc didFinishPickingImageWithImages:images assets:assets];\n            }\n\n        });\n    }];\n\n}\n\n- (void)takePhoto {\n    \n    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {\n        [[[UIAlertView alloc] initWithTitle:@\"您的设备不支持相机\" message:nil delegate:nil cancelButtonTitle:@\"我知道了\" otherButtonTitles:nil, nil] show];\n        return;\n    }\n    UIImagePickerController *picker = [[UIImagePickerController alloc] init];\n    picker.delegate = self;\n    picker.sourceType = UIImagePickerControllerSourceTypeCamera;\n    [self presentViewController:picker animated:YES completion:nil];\n    \n}\n\n- (void)back {\n    [self.navigationController popViewControllerAnimated:YES];\n}\n\n- (void)dismiss {\n    [self dismissViewControllerAnimated:YES completion:nil];\n}\n\n- (void)resetRightBarButton {\n    \n    HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;\n    NSString *rightTitle = self.selectIndexPaths.count > 0 ? [NSString stringWithFormat:@\"确定(%zd/%zd)\", self.selectIndexPaths.count, pickVc.maxCount] : @\"确定\";\n    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:rightTitle style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked)];\n    self.navigationItem.rightBarButtonItem.enabled = self.selectIndexPaths.count > 0;\n    NSDictionary *attribute = @{NSForegroundColorAttributeName:UIColorMake(48, 144, 255), NSFontAttributeName:[UIFont systemFontOfSize:15]};\n    [self.navigationItem.rightBarButtonItem setTitleTextAttributes:attribute forState:UIControlStateNormal];\n}\n\n#pragma mark - UIGestureRecognizerDelegate\n\n- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {\n    return YES;\n}\n\n\n#pragma mark - getter\n\n- (void)setupView {\n    self.automaticallyAdjustsScrollViewInsets = NO;\n    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@\"确定\" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked)];\n    self.navigationItem.rightBarButtonItem.enabled = NO;\n    \n    [self.view addSubview:self.collectionView];\n    [self.view addConstraintsWithVisualFormat:@\"H:|[v0]|\" views:@[self.collectionView]];\n    [self.view addConstraintsWithVisualFormat:@\"V:|[v0]|\" views:@[self.collectionView]];\n    \n    self.navigationItem.titleView = self.navTitleView;\n    //self.navTitleView.title = @\"全部照片\";\n    \n    [self.view addSubview:self.bgMask];\n    [self.view addConstraintsWithVisualFormat:@\"H:|[v0]|\" views:@[self.bgMask]];\n    [self.view addConstraintsWithVisualFormat:@\"V:|[v0]|\" views:@[self.bgMask]];\n    \n    CGFloat height = CGRectGetHeight(self.view.frame)-200;\n    HUAlbumTableViewController *albumVC = [[HUAlbumTableViewController alloc] init];\n    albumVC.didSelectedAlbum = ^(NSString *title, PHFetchResult *fetchResult) {\n        [self dismissPhotoAlbum];\n        self.navTitleView.title = title;\n        self.fetchResult = fetchResult;\n    };\n    albumVC.view.frame = CGRectMake(0, -height, CGRectGetWidth(self.view.frame), height);\n    albumVC.view.hidden = YES;\n    [self.view addSubview:albumVC.view];\n    [self addChildViewController:albumVC];\n    [albumVC didMoveToParentViewController:self];\n    _albumVC = albumVC;\n\n}\n\n- (void)setupData {\n    \n    HUImagePickerViewController *pickVc = (HUImagePickerViewController *)self.navigationController;\n    _cloumns = pickVc.numberOfColumns;\n    _spacing = pickVc.spacing;\n    [[HUPhotoManager sharedInstance] setNetworkAccessAllowed:pickVc.isNetworkAccessAllowed];\n    \n    [self setupView];\n    \n    if (_fetchResult == nil) {\n        PHFetchOptions *options = [PHFetchOptions new];\n        options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@\"creationDate\" ascending:NO]];\n        self.fetchResult = [PHAsset fetchAssetsWithOptions:options];\n    }\n    \n    CGFloat space = _spacing * (_cloumns - 1);\n    CGFloat width = ((self.view.frame.size.width - space) / _cloumns) * [UIScreen mainScreen].scale;\n    _targetSize = CGSizeMake(width, width);\n    _cachingImageManager = [[PHCachingImageManager alloc] init];\n    \n    [[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];\n    \n}\n\n#pragma mark - getter & setter\n\n\n- (void)setFetchResult:(PHFetchResult<PHAsset *> *)fetchResult {\n    _fetchResult = fetchResult;\n    [self.selectModels removeAllObjects];\n    [self.selectIndexPaths removeAllObjects];\n    [self resetRightBarButton];\n    \n    for (NSInteger i=0; i<fetchResult.count; i++) {\n        HUImageSelectModel *model = [HUImageSelectModel new];\n        model.indexPath = [NSIndexPath indexPathForItem:i+1 inSection:0];\n        [self.selectModels addObject:model];\n    }\n    \n    [self.collectionView reloadData];\n}\n- (UICollectionView *)collectionView {\n    if (_collectionView == nil) {\n        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];\n        layout.minimumLineSpacing = _spacing;\n        layout.minimumInteritemSpacing = _spacing;\n        layout.sectionInset = UIEdgeInsetsMake(_spacing, 0, _spacing, 0);\n        _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];\n        _collectionView.dataSource = self;\n        _collectionView.delegate = self;\n        _collectionView.backgroundColor = UIColorMake(238, 241, 242);\n        _collectionView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0);\n//        if (@available(iOS 11.0, *)) {\n//            _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;\n//        }\n\n        [_collectionView setAlwaysBounceVertical:YES];\n        [_collectionView registerClass:[HUTakePhotoCell class] forCellWithReuseIdentifier:[HUTakePhotoCell reuseIdentifier]];\n        [_collectionView registerClass:[HUImageGridCell class] forCellWithReuseIdentifier:[HUImageGridCell reuseIdentifier]];\n        \n    }\n    return _collectionView;\n}\n\n\n\n- (HUNavTitleView *)navTitleView {\n    if (_navTitleView == nil) {\n        _navTitleView = [HUNavTitleView buttonWithType:UIButtonTypeCustom];\n        _navTitleView.bounds = CGRectMake(0, 0, 200, 44);\n        [_navTitleView setTitleColor:UIColorMake(30, 30, 30) forState:UIControlStateNormal];\n        [_navTitleView setImage:UIImageMake(@\"album_open_icon\") forState:UIControlStateNormal];\n        [_navTitleView setImage:UIImageMake(@\"album_close_icon\") forState:UIControlStateSelected];\n        _navTitleView.titleLabel.font = UIFontMake(16);\n        _navTitleView.title = @\"全部照片\";\n        [_navTitleView addTarget:self action:@selector(selectPhotoAlbum:) forControlEvents:UIControlEventTouchUpInside];\n    }\n    return _navTitleView;\n}\n\n- (UIView *)bgMask {\n    if (_bgMask == nil) {\n        _bgMask = [[UIView alloc] init];\n        _bgMask.backgroundColor = [UIColor colorWithWhite:0 alpha:0.45];\n        _bgMask.alpha = 0;\n    }\n    return _bgMask;\n}\n\n- (PHImageRequestOptions *)options {\n    if (_options == nil) {\n        _options = [PHImageRequestOptions new];\n        _options.resizeMode = PHImageRequestOptionsResizeModeExact;\n    }\n    return _options;\n}\n\n- (NSMutableArray<HUImageSelectModel *> *)selectModels {\n    if (_selectModels == nil) {\n        _selectModels = [NSMutableArray array];\n    }\n    return _selectModels;\n}\n\n- (NSMutableArray<NSIndexPath *> *)selectIndexPaths {\n    if (_selectIndexPaths == nil) {\n        _selectIndexPaths = [NSMutableArray array];\n    }\n    return _selectIndexPaths;\n}\n\n- (NSMutableArray *)images {\n    if (_images == nil) {\n        _images = [NSMutableArray array];\n    }\n    return _images;\n}\n\n- (HUPHAuthorizationNotDeterminedView *)notDeterminedView {\n    if (_notDeterminedView == nil) {\n        _notDeterminedView = [[HUPHAuthorizationNotDeterminedView alloc] initWithFrame:self.view.bounds];\n    }\n    return _notDeterminedView;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImagePickerViewController.h",
    "content": "//\n//  HUImagePickerViewController.h\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@class HUImagePickerViewController, PHAsset;\n@protocol HUImagePickerViewControllerDelegate <NSObject>\n\n@optional\n\n- (void)imagePickerViewController:(nonnull HUImagePickerViewController *)imagePickerViewController\n  didFinishPickingImageWithImages:(nonnull NSArray<UIImage *> *)images assets:(nullable NSArray<PHAsset *> *)assets;\n\n- (void)imagePickerViewControllerDidBeginUploadImage:(nonnull HUImagePickerViewController *)imagePickerViewController;\n\n\n@end\n\n@interface HUImagePickerViewController : UINavigationController\n\n- (instancetype _Nonnull )initWithMaxCount:(NSInteger)maxCount numberOfColumns:(NSInteger)columns;\n\n\n@property (nonatomic, weak, nullable) id <HUImagePickerViewControllerDelegate, UINavigationControllerDelegate> delegate;\n\n@property (nonatomic, assign) NSInteger maxCount;\n\n@property (nonatomic, assign) NSInteger numberOfColumns;\n\n@property (nonatomic, assign) CGFloat spacing;\n\n/// 是否允许通过网络下载iCloud图片，默认为 NO\n@property (nonatomic, assign, getter=isNetworkAccessAllowed) BOOL networkAccessAllowed;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImagePickerViewController.m",
    "content": "//\n//  HUImagePickerViewController.m\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import \"HUImagePickerViewController.h\"\n#import \"HUAlbumTableViewController.h\"\n#import \"HUImageGridViewController.h\"\n#import \"HUPHAuthorizationNotDeterminedView.h\"\n#import \"HUPHAuthorizationNotDeterminedViewController.h\"\n#import \"Asset.h\"\n#import <Photos/Photos.h>\n\n@interface HUImagePickerViewController ()\n\n@end\n\n@implementation HUImagePickerViewController\n@synthesize delegate = _delegate;\n\n- (instancetype)initWithMaxCount:(NSInteger)maxCount numberOfColumns:(NSInteger)columns {\n    \n    UIViewController *rootVc = nil;\n    PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];\n    if (author == PHAuthorizationStatusRestricted || author == PHAuthorizationStatusDenied) {\n        rootVc = [[HUPHAuthorizationNotDeterminedViewController alloc] init];\n    } else {\n        rootVc = [[HUImageGridViewController alloc] init];\n    }\n    self = [super initWithRootViewController:rootVc];\n    if (self) {\n        _maxCount = maxCount;\n        _numberOfColumns = columns;\n        _spacing = 1.5;\n    }\n    return self;\n}\n\n- (instancetype)init {\n    \n    return [self initWithMaxCount:10 numberOfColumns:4];\n}\n\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    \n    \n    [[UINavigationBar appearance] setTintColor:UIColorMake(30, 30, 30)];\n    NSDictionary *titleAttribute = @{NSForegroundColorAttributeName:UIColorMake(30, 30, 30), NSFontAttributeName:[UIFont systemFontOfSize:17]};\n    [[UINavigationBar appearance] setTitleTextAttributes:titleAttribute];\n    \n    //设置正常状态\n    NSDictionary *attribute = @{NSForegroundColorAttributeName:UIColorMake(81, 88, 102), NSFontAttributeName:[UIFont systemFontOfSize:15]};\n    [[UIBarButtonItem appearance] setTitleTextAttributes:attribute forState:UIControlStateNormal];\n    \n    //设置不可用状态\n    NSDictionary *disAttribute = @{NSForegroundColorAttributeName:UIColorMake(209, 209, 209), NSFontAttributeName:[UIFont systemFontOfSize:15]};\n    [[UIBarButtonItem appearance] setTitleTextAttributes:disAttribute forState:UIControlStateDisabled];\n    \n//    PHAuthorizationStatus author = [PHPhotoLibrary authorizationStatus];\n//    if (author == PHAuthorizationStatusNotDetermined || author == PHAuthorizationStatusAuthorized) {\n//        HUAlbumTableViewController *vc = [[HUAlbumTableViewController alloc] init];\n//        \n//        [self pushViewController:vc animated:true];\n//    }\n    \n}\n\n- (void)setDelegate:(id<HUImagePickerViewControllerDelegate,UINavigationControllerDelegate>)delegate {\n    _delegate = delegate;\n}\n\n- (id<HUImagePickerViewControllerDelegate,UINavigationControllerDelegate>)delegate {\n    return _delegate;\n}\n\n\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageSelectModel.h",
    "content": "//\n//  BAImageSelectModel.h\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@class PHAsset;\n@interface HUImageSelectModel : NSObject\n\n@property (nonatomic, assign) BOOL isSelected;\n@property (nonatomic, assign) NSInteger index;\n@property (nonatomic, strong) PHAsset *asset;\n@property (nonatomic, strong) NSIndexPath *indexPath;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUImageSelectModel.m",
    "content": "//\n//  BAImageSelectModel.m\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/6/22.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import \"HUImageSelectModel.h\"\n\n@implementation HUImageSelectModel\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUNavTitleView.h",
    "content": "//\n//  NavTitleView.h\n//  HUPhotoPicker\n//\n//  Created by jewelz on 2017/9/27.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface HUNavTitleView : UIButton\n\n@property (nonatomic, copy) NSString *title;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUNavTitleView.m",
    "content": "//\n//  NavTitleView.m\n//  HUPhotoPicker\n//\n//  Created by jewelz on 2017/9/27.\n//\n\n#import \"HUNavTitleView.h\"\n#import \"NSBundle+HUPicker.h\"\n\n@interface HUNavTitleView()\n\n@end\n\n@implementation HUNavTitleView\n\n- (void)setTitle:(NSString *)title {\n    _title = [title copy];\n    \n    [self setTitle:title forState:UIControlStateNormal];\n    [self setTitle:title forState:UIControlStateSelected];\n    [self setTitleEdgeInsets:UIEdgeInsetsMake(0, -self.imageView.image.size.width * 2 - 3, 0, 0)];\n    \n    CGFloat titleWidth = [title sizeWithAttributes:@{NSFontAttributeName: self.titleLabel.font}].width + 3;\n    //CGFloat titleWidth = self.titleLabel.bounds.size.width;\n    [self setImageEdgeInsets:UIEdgeInsetsMake(0, titleWidth, 0, -titleWidth)];\n   \n    \n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.h",
    "content": "//\n//  BAPHAuthorizationNotDeterminedView.h\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/7/20.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface HUPHAuthorizationNotDeterminedView : UIView\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.m",
    "content": "//\n//  BAPHAuthorizationNotDeterminedView.m\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/7/20.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import \"HUPHAuthorizationNotDeterminedView.h\"\n#import \"Asset.h\"\n#import \"UIView+HUConstraint.h\"\n\n@interface HUPHAuthorizationNotDeterminedView()\n\n@property (nonatomic, strong) UIImageView *imageView;\n@property (nonatomic, strong) UILabel *titleLabel;\n@property (nonatomic, strong) UILabel *descLabel;\n\n@end\n\n@implementation HUPHAuthorizationNotDeterminedView\n\n- (instancetype)initWithFrame:(CGRect)frame\n{\n    self = [super initWithFrame:frame];\n    if (self) {\n        [self setupView];\n    }\n    return self;\n}\n\n- (void)setupView {\n    \n    [self addSubview:self.imageView];\n    \n    [self centerXOffset:0 forView:self.imageView];\n    [self centerYOffset:-30 forView:self.imageView];\n    \n    \n    [self addSubview:self.titleLabel];\n    [self addConstraintsWithVisualFormat:@\"V:[v0]-30-[v1]\" views:@[self.imageView, self.titleLabel]];\n    [self centerXOffset:0 forView:self.titleLabel];\n\n    \n    [self addSubview:self.descLabel];\n    [self centerXOffset:0 forView:self.descLabel];\n    [self addConstraintsWithVisualFormat:@\"V:[v0]-8-[v1]\" views:@[self.titleLabel, self.descLabel]];\n\n    \n}\n\n- (UIImageView *)imageView {\n    if (_imageView == nil) {\n        _imageView = [[UIImageView alloc] init];\n        _imageView.image = UIImageMake(@\"Jurisdiction_icon\");\n    }\n    return _imageView;\n}\n\n- (UILabel *)titleLabel {\n    if (_titleLabel == nil) {\n        _titleLabel = [[UILabel alloc] init];\n        _titleLabel.font = UIFontBoldMake(17);\n        _titleLabel.text = @\"此应用没有权限访问您的照片或视频。\";\n        _titleLabel.textColor = UIColorMake(98, 107, 122);\n    }\n    return _titleLabel;\n}\n\n- (UILabel *)descLabel {\n    if (_descLabel == nil) {\n        _descLabel = [[UILabel alloc] init];\n        _descLabel.font = UIFontMake(15);\n        _descLabel.text = @\"您可以在\\\"隐私设置\\\"中启用访问。\";\n        _descLabel.textColor = [UIColor lightGrayColor];\n    }\n    return _descLabel;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.h",
    "content": "//\n//  BAPHAuthorizationNotDeterminedViewController.h\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/7/20.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface HUPHAuthorizationNotDeterminedViewController : UIViewController\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.m",
    "content": "//\n//  HUPHAuthorizationNotDeterminedViewController.m\n//  beautyAssistant\n//\n//  Created by jewelz on 2017/7/20.\n//  Copyright © 2017年 Service+. All rights reserved.\n//\n\n#import \"HUPHAuthorizationNotDeterminedViewController.h\"\n#import \"HUPHAuthorizationNotDeterminedView.h\"\n#import \"HUImagePickerViewController.h\"\n\n@interface HUPHAuthorizationNotDeterminedViewController ()\n\n@property (nonatomic, strong) HUPHAuthorizationNotDeterminedView *notDeterminedView;\n\n@end\n\n@implementation HUPHAuthorizationNotDeterminedViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.view.backgroundColor = [UIColor whiteColor];\n    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@\"取消\" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked)];\n\n    [self.view addSubview:self.notDeterminedView];\n}\n\n#pragma mark - Action\n\n- (void)rightBarItemClicked {\n    //[SVProgressHUD dismiss];\n    if ([self.navigationController isKindOfClass:[HUImagePickerViewController class]]) {\n        [self.navigationController dismissViewControllerAnimated:YES completion:nil];\n    }\n}\n\n- (HUPHAuthorizationNotDeterminedView *)notDeterminedView {\n    if (_notDeterminedView == nil) {\n        _notDeterminedView = [[HUPHAuthorizationNotDeterminedView alloc] initWithFrame:self.view.bounds];\n    }\n    return _notDeterminedView;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoAlbum.h",
    "content": "//\n//  HUPhotoAlbum.h\n//  Pods\n//\n//  Created by jewelz on 2017/9/15.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n@class PHAssetCollection;\n@interface HUPhotoAlbum : NSObject\n\n@property (nonatomic, copy) NSString *title;\n@property (nonatomic, assign) NSUInteger assetCount;\n@property (nonatomic, strong) PHAssetCollection *collection;\n\n+ (instancetype)photoAlbumWithAssetCollection:(PHAssetCollection *)collection assetCount:(NSUInteger)count;\n- (instancetype)initWithAssetCollection:(PHAssetCollection *)collection assetCount:(NSUInteger)count;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoAlbum.m",
    "content": "//\n//  HUPhotoAlbum.m\n//  Pods\n//\n//  Created by jewelz on 2017/9/15.\n//\n//\n\n#import \"HUPhotoAlbum.h\"\n#import <Photos/Photos.h>\n\n@implementation HUPhotoAlbum\n\n+ (instancetype)photoAlbumWithAssetCollection:(PHAssetCollection *)collection assetCount:(NSUInteger)count {\n    return [[self alloc] initWithAssetCollection:collection assetCount:count];\n}\n\n- (instancetype)initWithAssetCollection:(PHAssetCollection *)collection assetCount:(NSUInteger)count {\n    self = [super init];\n    if (self) {\n        self.title = collection.localizedTitle;\n        self.collection = collection;\n        self.assetCount = count;\n    }\n    return self;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoManager.h",
    "content": "//\n//  HUPhotoHelper.h\n//  Pods\n//\n//  Created by jewelz on 2017/7/29.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n@class PHAsset;\n@interface HUPhotoManager : NSObject\n\n@property (nonatomic, assign, getter=isNetworkAccessAllowed) BOOL networkAccessAllowed;\n\n\n+ (nonnull instancetype)sharedInstance;\n\n- (void)fetchPhotoWithAsset:(nonnull PHAsset *)asset\n                   progress:(nullable void(^)(double progress))progress\n                  completed:(nullable void(^)(BOOL success,  UIImage * _Nonnull image))completed;\n\n- (void)fetchPhotosWithAssets:(nonnull NSArray<PHAsset *> *)assets\n                   progress:(nullable void(^)(double progress))progress\n                  completed:(nullable void(^)(NSArray<UIImage *> * _Nonnull images))completed;\n\n- (void)cancelPhotoRequest;\n\n- (void)checkPhotoIsAvaliableWithAsset:(nonnull PHAsset *)asset\n                              progress:(nullable void(^)(double progress))progress\n                             completed:(nullable void(^)(BOOL avaliable, UIImage * _Nonnull  image))completed;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoManager.m",
    "content": "//\n//  HUPhotoHelper.m\n//  Pods\n//\n//  Created by jewelz on 2017/7/29.\n//\n//\n\n#import \"HUPhotoManager.h\"\n#import <Photos/Photos.h>\n\n\n@interface HUPhotoManager()\n\n@property (nonatomic, copy) NSMutableDictionary<NSString *, UIImage *> *imageCache;\n@property (nonatomic, copy) NSMutableDictionary<NSString *, NSNumber *> * imageRequestIDs;\n@property (nonatomic, strong) PHImageRequestOptions *requestOptions;\n\n@end\n\n@implementation HUPhotoManager\n\n+ (instancetype)sharedInstance {\n    static HUPhotoManager *shared = nil;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        shared = [[HUPhotoManager alloc] init];\n    });\n    return shared;\n}\n\n- (instancetype)init {\n    if (self == [super init]) {\n        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(clearCache) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];\n    }\n    return self;\n}\n\n\n\n- (void)dealloc {\n    [[NSNotificationCenter defaultCenter] removeObserver:self];\n}\n\n- (void)fetchPhotosWithAssets:(nonnull NSArray<PHAsset *> *)assets\n                     progress:(nullable void(^)(double progress))progress\n                    completed:(nullable void(^)(NSArray<UIImage *> * _Nonnull images))completed {\n\n    __block NSMutableArray *downloadeds = [NSMutableArray array];\n    NSMutableArray *shouldDownlds = [NSMutableArray array];\n    \n    for (PHAsset *asset in assets) {\n        UIImage *cachedImage = [self.imageCache objectForKey:asset.localIdentifier];\n        if (cachedImage) {\n            [downloadeds addObject:cachedImage];\n        } else {\n            [shouldDownlds addObject:asset];\n        }\n    }\n    \n    \n    if (downloadeds.count >= assets.count) {\n        if (progress) {\n            progress(1);\n        }\n        if (completed) {\n            completed(downloadeds);\n        }\n        return;\n    }\n    \n    double count = shouldDownlds.count;\n    for (PHAsset *asset in shouldDownlds) {\n        [self fetchPhotoWithAsset:asset progress:^(double _progress) {\n             if (progress) {\n                 dispatch_async(dispatch_get_main_queue(), ^{\n                     progress(_progress / count);\n                 });\n             }\n            \n        } completed:^(BOOL success, UIImage * _Nullable image) {\n            \n            [downloadeds addObject:image];\n            \n            if (downloadeds.count >= assets.count) {\n                if (progress) {\n                    dispatch_async(dispatch_get_main_queue(), ^{\n                        progress(1);\n                    });\n                    \n                }\n                if (completed) {\n                    dispatch_async(dispatch_get_main_queue(), ^{\n                         completed(downloadeds);\n                    });\n                }\n            }\n            \n        }];\n    }\n    \n\n}\n\n\n- (void)fetchPhotoWithAsset:(nonnull PHAsset *)asset\n                   progress:(nullable void(^)(double progress))progress\n                  completed:(nullable void(^)(BOOL avaliable, UIImage * _Nonnull  image))completed {\n    \n    UIImage *cachedImage = [self.imageCache objectForKey:asset.localIdentifier];\n    if (cachedImage) {\n        if (progress) {\n            progress(1);\n        }\n        if (completed) {\n            completed(YES, cachedImage);\n        }\n        return;\n    }\n    \n    [self.requestOptions setProgressHandler: ^(double _progress, NSError *__nullable error, BOOL *stop, NSDictionary *__nullable info) {\n        dispatch_async(dispatch_get_main_queue(), ^{\n            if (progress) {\n                progress(_progress);\n            }\n        });\n    }];\n    \n    PHImageRequestID requestID = [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:self.requestOptions resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {\n    \n        if (result) {\n            [self.imageCache setObject:result forKey:asset.localIdentifier];\n        }\n    \n        BOOL downloadFinined = ![[info objectForKey:PHImageCancelledKey] boolValue] && ![info objectForKey:PHImageErrorKey] && ![[info objectForKey:PHImageResultIsDegradedKey] boolValue];\n        BOOL isInCloudKey = [[info objectForKey:PHImageResultIsInCloudKey] boolValue];\n        // 从iCloud下载图片\n        if (result && downloadFinined) {\n    \n            dispatch_async(dispatch_get_main_queue(), ^{\n                if (completed) {\n                    completed(YES, result);\n                }\n            });\n            \n        } else if (isInCloudKey && !result) {\n            UIImage *image = [self.imageCache objectForKey:asset.localIdentifier];\n            if (image) {\n                dispatch_async(dispatch_get_main_queue(), ^{\n                    if (completed) {\n                        completed(YES, image);\n                    }\n                });\n            }\n        }\n        \n    }];\n    \n    [self.imageRequestIDs setObject:@(requestID) forKey:asset.localIdentifier];\n    \n\n}\n\n- (void)checkPhotoIsAvaliableWithAsset:(nonnull PHAsset *)asset\n                   progress:(nullable void(^)(double progress))progress\n                  completed:(nullable void(^)(BOOL avaliable, UIImage * _Nonnull  image))completed {\n    UIImage *cachedImage = [self.imageCache objectForKey:asset.localIdentifier];\n    if (cachedImage) {\n        if (progress) {\n            progress(1);\n        }\n        if (completed) {\n            completed(YES, cachedImage);\n        }\n        return;\n    }\n    \n    PHImageRequestOptions *options = [PHImageRequestOptions new];\n    [options setNetworkAccessAllowed:NO];\n    [options setSynchronous:YES];\n    [options setProgressHandler: ^(double _progress, NSError *__nullable error, BOOL *stop, NSDictionary *__nullable info) {\n        dispatch_async(dispatch_get_main_queue(), ^{\n            if (progress) {\n                progress(_progress);\n            }\n        });\n    }];\n    \n    PHImageRequestID requestID = [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {\n        \n        if (result) {\n            [self.imageCache setObject:result forKey:asset.localIdentifier];\n            dispatch_async(dispatch_get_main_queue(), ^{\n                if (completed) {\n                    completed(YES, result);\n                }\n            });\n        } else {\n            if (self.isNetworkAccessAllowed) {\n                [self fetchPhotoWithAsset:asset progress:nil completed:nil];\n            }\n            \n            dispatch_async(dispatch_get_main_queue(), ^{\n                if (completed) {\n                    completed(NO, result);\n                }\n            });\n        }\n        \n    }];\n    \n    [self.imageRequestIDs setObject:@(requestID) forKey:asset.localIdentifier];\n    \n    \n}\n\n- (void)cancelPhotoRequest {\n    \n    for (NSNumber *obj in self.imageRequestIDs) {\n        [[PHImageManager defaultManager] cancelImageRequest:obj.intValue];\n    }\n}\n\n- (BOOL)isPhotoDownloaded:(PHAsset *)asset {\n    return true;\n}\n\n- (void)cancelPhotoRequestWithAsset:(PHAsset *)asset {\n    NSNumber *idNumber = [self.imageRequestIDs objectForKey:asset.localIdentifier];\n    if (!idNumber) {\n        return;\n    }\n    \n    [[PHImageManager defaultManager] cancelImageRequest:idNumber.intValue];\n}\n\n- (void)clearCache {\n    [self.imageCache removeAllObjects];\n    [self.imageRequestIDs removeAllObjects];\n}\n\n#pragma mark - getter\n\n- (NSMutableDictionary<NSString *,UIImage *> *)imageCache {\n    if (_imageCache == nil) {\n        _imageCache = [NSMutableDictionary dictionary];\n    }\n    return _imageCache;\n}\n\n- (NSMutableDictionary<NSString *,NSNumber *> *)imageRequestIDs {\n    if (_imageRequestIDs == nil) {\n        _imageRequestIDs = [NSMutableDictionary dictionary];\n    }\n    return _imageRequestIDs;\n}\n\n- (PHImageRequestOptions *)requestOptions {\n    if (_requestOptions == nil) {\n        _requestOptions = [PHImageRequestOptions new];\n        [_requestOptions setNetworkAccessAllowed:YES];\n    }\n    return _requestOptions;\n}\n\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUPhotoPicker.h",
    "content": "//\n//  HUPhotoPicker.h\n//  Pods\n//\n//  Created by jewelz on 2017/7/28.\n//\n//\n\n#ifndef HUPhotoPicker_h\n#define HUPhotoPicker_h\n\n#import <Photos/PHAsset.h>\n#import \"HUImagePickerViewController.h\"\n\n#endif /* HUPhotoPicker_h */\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUTakePhotoCell.h",
    "content": "//\n//  HUTakePhotoCell.h\n//  Pods\n//\n//  Created by jewelz on 2017/9/15.\n//\n//\n\n#import <UIKit/UIKit.h>\n\n@interface HUTakePhotoCell : UICollectionViewCell\n\n+ (NSString *)reuseIdentifier;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUTakePhotoCell.m",
    "content": "//\n//  HUTakePhotoCell.m\n//  Pods\n//\n//  Created by jewelz on 2017/9/15.\n//\n//\n\n#import \"HUTakePhotoCell.h\"\n#import \"UIView+HUConstraint.h\"\n#import \"Asset.h\"\n\n@implementation HUTakePhotoCell\n\n- (instancetype)initWithFrame:(CGRect)frame {\n    self = [super initWithFrame:frame];\n    if (self) {\n        [self setupView];\n    }\n    return self;\n}\n\n\n- (void)setupView {\n    \n    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];\n    button.backgroundColor = [UIColor whiteColor];\n    [button setImage:UIImageMake(@\"album_photograph_icon\") forState:UIControlStateNormal];\n    button.userInteractionEnabled = NO;\n    [self.contentView addSubview:button];\n    \n    [self.contentView addConstraintsWithVisualFormat:@\"H:|[v0]|\" views:@[button]];\n    [self.contentView addConstraintsWithVisualFormat:@\"V:|[v0]|\" views:@[button]];\n    \n}\n\n\n+ (NSString *)reuseIdentifier {\n    return @\"HUTakePhotoCell\";\n}\n\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUToast.h",
    "content": "//\n//  Toast.h\n//  Pods\n//\n//  Created by jewelz on 2017/9/16.\n//\n//\n\n#import <UIKit/UIKit.h>\n\n@interface HUToast : UIView\n\n\n+ (void)makeToast:(NSString *)message inView:(UIView *)view;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/HUToast.m",
    "content": "//\n//  Toast.m\n//  Pods\n//\n//  Created by jewelz on 2017/9/16.\n//\n//\n\n#import \"HUToast.h\"\n#import \"UIView+HUConstraint.h\"\n\n@interface HUToast ()\n\n@property (nonatomic, strong) UILabel *messageLabel;\n\n@end\n\n@implementation HUToast\n\n+ (instancetype)sharedInstance {\n    static HUToast *toast = nil;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        toast = [[self alloc] init];\n    });\n    return toast;\n}\n\n+ (void)makeToast:(NSString *)message inView:(UIView *)view {\n    [[HUToast sharedInstance] makeToast:message inView:view];\n}\n\n- (instancetype)initWithFrame:(CGRect)frame {\n    self = [super initWithFrame:CGRectMake(0, 0, 160, 100)];\n    if (self) {\n        [self setupView];\n    }\n    return self;\n}\n\n- (void)layoutSubviews {\n    [super layoutSubviews];\n    \n    self.messageLabel.frame = self.bounds;\n}\n\n- (void)makeToast:(NSString *)message inView:(UIView *)view {\n    \n    if ([view.subviews containsObject:self]) {\n        return;\n    }\n    \n    self.alpha = 0;\n    self.messageLabel.text = message;\n    self.center = CGPointMake(view.frame.size.width/2, view.frame.size.height/2);\n    [view addSubview:self];\n    [UIView animateWithDuration:0.25 animations:^{\n        self.alpha = 1;\n    } completion:^(BOOL finished) {\n        NSTimer *timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(hide:) userInfo:nil repeats:NO];\n        [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];\n    }];\n    \n}\n\n- (void)hide:(NSTimer *)timer {\n    \n    [UIView animateWithDuration:0.25 animations:^{\n        self.alpha = 0;\n    } completion:^(BOOL finished) {\n        [self removeFromSuperview];\n        [timer invalidate];\n       \n    }];\n    \n}\n\n- (void)setupView {\n    self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.75];\n    self.layer.cornerRadius = 6;\n    self.layer.masksToBounds = YES;\n    \n    [self addSubview:self.messageLabel];\n    \n}\n\n- (UILabel *)messageLabel {\n    if (_messageLabel == nil) {\n        _messageLabel = [[UILabel alloc] init];\n        _messageLabel.textColor = [UIColor whiteColor];\n        _messageLabel.font = [UIFont systemFontOfSize:15];\n        _messageLabel.numberOfLines = 0;\n        _messageLabel.textAlignment = NSTextAlignmentCenter;\n    }\n    return _messageLabel;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/NSBundle+HUPicker.h",
    "content": "//\n//  NSBundle+HUPicker.h\n//  Pods\n//\n//  Created by jewelz on 2017/7/28.\n//\n//\n\n#import <Foundation/Foundation.h>\n\n@interface NSBundle (HUPicker)\n\n+ (instancetype)hu_bundle;\n\n+ (UIImage *)hu_imageNamed:(NSString *)name;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/NSBundle+HUPicker.m",
    "content": "//\n//  NSBundle+HUPicker.m\n//  Pods\n//\n//  Created by jewelz on 2017/7/28.\n//\n//\n\n#import \"NSBundle+HUPicker.h\"\n#import \"HUImagePickerViewController.h\"\n\n@implementation NSBundle (HUPicker)\n\n+ (instancetype)hu_bundle {\n    static NSBundle *bundle = nil;\n    if (bundle == nil) {\n        NSBundle *podBundle = [NSBundle bundleForClass:[HUImagePickerViewController class]];\n        \n        bundle = [NSBundle bundleWithPath:[podBundle pathForResource:@\"HUPhotoPicker\" ofType:@\"bundle\"]];\n    }\n    return bundle;\n}\n\n+ (UIImage *)hu_imageNamed:(NSString *)name {\n    return [UIImage imageNamed:name inBundle:[self hu_bundle] compatibleWithTraitCollection:nil];\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIBarButtonItem+HUButton.h",
    "content": "//\n//  UIBarButtonItem+HUButton.h\n//  Pods\n//\n//  Created by jewelz on 2017/7/29.\n//\n//\n\n#import <UIKit/UIKit.h>\n\n@interface UIBarButtonItem (HUButton)\n\n+ (instancetype)leftItemWithImage:(UIImage *)image target:(id)target action:(SEL)action;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIBarButtonItem+HUButton.m",
    "content": "//\n//  UIBarButtonItem+HUButton.m\n//  Pods\n//\n//  Created by jewelz on 2017/7/29.\n//\n//\n\n#import \"UIBarButtonItem+HUButton.h\"\n\n@implementation UIBarButtonItem (HUButton)\n\n+ (instancetype)leftItemWithImage:(UIImage *)image target:(id)target action:(SEL)action {\n    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];\n    button.frame = CGRectMake(0, 0, 60, 44);\n    button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;\n    [button setImage:image forState:UIControlStateNormal];\n    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];\n    \n    return [[UIBarButtonItem alloc] initWithCustomView:button];\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIView+HUConstraint.h",
    "content": "//\n//  UIView+Constraint.h\n//  HUPhotoPicker\n//\n//  Created by jewelz on 2017/7/28.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface UIView (HUConstraint)\n\n- (void)addConstraintsWithVisualFormat:(nonnull  NSString *)formate views:(nonnull NSArray <UIView *>*)views;\n\n- (void)centerView:(nonnull UIView *)view;\n\n- (void)centerXOffset:(CGFloat)offsetX forView:(nonnull UIView *)view;\n\n- (void)centerYOffset:(CGFloat)offsetY forView:(nonnull UIView *)view;\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/HUPhotoPicker/Classes/UIView+HUConstraint.m",
    "content": "//\n//  UIView+Constraint.m\n//  HUPhotoPicker\n//\n//  Created by jewelz on 2017/7/28.\n//\n\n#import \"UIView+HUConstraint.h\"\n\n@implementation UIView (HUConstraint)\n\n- (void)addConstraintsWithVisualFormat:(nonnull  NSString *)formate views:(nonnull NSArray <UIView *>*)views {\n    if (views.count == 0) {\n        return;\n    }\n    \n    NSMutableDictionary *dict = [NSMutableDictionary dictionary];\n    __block NSString *key = @\"\";\n    [views enumerateObjectsUsingBlock:^(UIView * _Nonnull view, NSUInteger idx, BOOL * _Nonnull stop) {\n        view.translatesAutoresizingMaskIntoConstraints = NO;\n        key = [NSString stringWithFormat:@\"v%zd\", idx];\n        [dict setObject:view forKey:key];\n    }];\n    \n    [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:formate options:0 metrics:nil views:dict]];\n}\n\n- (void)centerView:(nonnull UIView *)view {\n    [self centerXOffset:0 forView:view];\n    [self centerYOffset:0 forView:view];\n}\n\n- (void)centerXOffset:(CGFloat)offsetX forView:(nonnull UIView *)view {\n    view.translatesAutoresizingMaskIntoConstraints = NO;\n    [self addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterX multiplier:1 constant:offsetX]];\n}\n\n- (void)centerYOffset:(CGFloat)offsetY forView:(nonnull UIView *)view {\n    [self addConstraint:[NSLayoutConstraint constraintWithItem:view attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterY multiplier:1 constant:offsetY]];\n\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2017 Jewelz Hu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Example/Pods/HUPhotoPicker/README.md",
    "content": "# HUPhotoPicker\n\n[![CI Status](http://img.shields.io/travis/hujewelz/HUPhotoPicker.svg?style=flat)](https://travis-ci.org/hujewelz/HUPhotoPicker)\n[![Version](https://img.shields.io/cocoapods/v/HUPhotoPicker.svg?style=flat)](http://cocoapods.org/pods/HUPhotoPicker)\n[![License](https://img.shields.io/cocoapods/l/HUPhotoPicker.svg?style=flat)](http://cocoapods.org/pods/HUPhotoPicker)\n[![Platform](https://img.shields.io/cocoapods/p/HUPhotoPicker.svg?style=flat)](http://cocoapods.org/pods/HUPhotoPicker)\n\n## Example\n\nTo run the example project, clone the repo, and run `pod install` from the Example directory first.\n\n## Requirements\n\n## Installation\n\nHUPhotoPicker is available through [CocoaPods](http://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\n```ruby\npod \"HUPhotoPicker\"\n```\n\n## Author\n\nJewelz Hu, hujewelz@163.com\n\n## License\n\nHUPhotoPicker is available under the MIT license. See the LICENSE file for more info.\n"
  },
  {
    "path": "Example/Pods/Local Podspecs/HUPhotoBrowser.podspec.json",
    "content": "{\n  \"name\": \"HUPhotoBrowser\",\n  \"version\": \"1.3.0\",\n  \"summary\": \"photo browser for ios, which can browse Photo library and web image\",\n  \"homepage\": \"https://github.com/hujewelz/HUPhotoBrowser\",\n  \"license\": \"MIT\",\n  \"authors\": {\n    \"Jewelz Hu\": \"https://github.com/hujewelz/HUPhotoBrowser\"\n  },\n  \"platforms\": {\n    \"ios\": \"7.0\"\n  },\n  \"source\": {\n    \"git\": \"https://github.com/hujewelz/HUPhotoBrowser.git\",\n    \"tag\": \"1.3.0\"\n  },\n  \"source_files\": \"HUPhotoBrowser/**/*.{h,m}\",\n  \"requires_arc\": true,\n  \"frameworks\": [\n    \"UIKit\",\n    \"Photos\",\n    \"AssetsLibrary\"\n  ],\n  \"public_header_files\": [\n    \"HUPhotoBrowser/HUPhotoBrowser.h\",\n    \"HUPhotoBrowser/HUPhotoPicker/HUImagePickerViewController.h\",\n    \"HUPhotoBrowser/HUWebImageDownloader/{UIImageView+HUWebImage,HUWebImageDownloader}.h\"\n  ],\n  \"dependencies\": {\n    \"SVProgressHUD\": [\n\n    ]\n  }\n}\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t02735D8436E3DB9E7EA79694C58BE6F4 /* UIImage+HUExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE18F7ECC383B6860F958FFE3E22296 /* UIImage+HUExtension.m */; };\n\t\t053D329FAA96B749E2FD97CB6D096A85 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C800A6F02590F678225961616F0E14 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t0615F5F2ABF3C6D02B66F471EAEE37BA /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 441D9E0D8C2033CBCB8EBD66CB4EDC11 /* SDWebImageManager.m */; };\n\t\t0801E52B09E882BB1E2441347E566214 /* SVRadialGradientLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = EBB4E8043E0015F89FDA55D0CA569CC4 /* SVRadialGradientLayer.m */; };\n\t\t086F8C085ABB04F9C8C5C422DFDF1412 /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 545C51AB7AB0CB14DF4ECCA613BAFEA5 /* SDWebImageCompat.m */; };\n\t\t0A4BFCC90ABBFF825C70EFE9F9B7CD34 /* HUTakePhotoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EB29BC0DA93559B0D44D7C78426356 /* HUTakePhotoCell.m */; };\n\t\t0B674BD1EC01B2F2E5B86BC361C2032B /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A68BB2127299F79461E6F6B3AB52869 /* UIImage+MultiFormat.m */; };\n\t\t0CE6A5C6B62A9FD71E66BD0B202273A4 /* SVProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C51BE05478A10C56BD6FF53686494E7 /* SVProgressHUD.m */; };\n\t\t1241C92252F5500B6FA1782A66AF6432 /* HUPhotoBrowser-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A524D07B783D67E8F7BC7A33A47770AE /* HUPhotoBrowser-dummy.m */; };\n\t\t12B9BC6E6EC8792296CED4F0C56ED6E2 /* nav_back@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9B6C41B0E78CD3F337D9DA8131A22914 /* nav_back@3x.png */; };\n\t\t13944C33461BCA0868BC17FC8D7E6252 /* NSImage+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 21F56FEF368B49D93D7E4F418AAE8296 /* NSImage+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t152BF7BE0AA241A5C6BE4F608CA9E6A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };\n\t\t154E25C8A639BD2855EF6ED1CE1311D0 /* HUAlbumTableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D9DC81E5EBE3E1913E938646E03C2E9 /* HUAlbumTableViewController.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t1B055DEC5A93B3430137EDFD63E1A62E /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F8305A2C6089188628736DDD2F370A /* ImageIO.framework */; };\n\t\t1C531B0E4A281E5F1CCFD426B5C59F50 /* HUWebImageDownloadOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 91040B2B94B6447A1D4D9387C627B02A /* HUWebImageDownloadOperation.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t1D14675094EB2982854BBDE56D642F7F /* album_close_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3A7B323C6C7AA5954DD661A569FA77CD /* album_close_icon@2x.png */; };\n\t\t1DA19173FBBEE7D11EBFD489D002ECB3 /* HUPhotoAlbum.m in Sources */ = {isa = PBXBuildFile; fileRef = F527FE5669CA594E88CADC793838CDAF /* HUPhotoAlbum.m */; };\n\t\t1E766D1CE8821B1AA0F0BA3769BD750E /* HUImageGridViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AFDEF6B3F68ABAD646B955014670B32D /* HUImageGridViewController.m */; };\n\t\t1E868873A8CF56F277977C0F28D6D54D /* HUImageSelectModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D2A1832C622E09402E5443E39EEB7C17 /* HUImageSelectModel.m */; };\n\t\t24AC460FDE1C0610A111CCF67FC835D8 /* image_selected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C137D78D8E705BFC3E79578F84BA3413 /* image_selected@2x.png */; };\n\t\t29CD90FDAAB316F204CEEAFB5564A5A7 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2BFA65B10054FC241F1C3ABB96E68B /* SDWebImageDownloader.m */; };\n\t\t2AC999D34D8A6DEECCC2D91261A67865 /* SVIndefiniteAnimatedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7787CCB41A739DF35AC7AF65005F5384 /* SVIndefiniteAnimatedView.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t2BD3489F5F1D3B0D47C57D3506A372F8 /* HUImageGridCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 13320B73B1EEDEC7054B6BA67D32D4EB /* HUImageGridCell.m */; };\n\t\t2C61EAC4DA7890F245FBD68AE417C4CA /* image_selected@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D68944CA5223A84064F95C057951163C /* image_selected@3x.png */; };\n\t\t2FFFCBCE6865FEDD745574FD47A69FD6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };\n\t\t35C11FA48B4F1C25AEC21C72FFDF51B5 /* nav_back@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C3D0023A3AA419520B006770CC4B9FD4 /* nav_back@2x.png */; };\n\t\t35D8BA8171A586B59D48614BCBC18DDA /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AF0D9B0557E593C2184912CC905AA5E1 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t36081993A921C1EECB74335B1EE0F34C /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F48C3A3A0784AB826CDC951A03656357 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t384A9AAA97DAB3A480C1DD84170AD1A8 /* NSImage+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 919847A9F94E2FACD0E3E3CB08A71F90 /* NSImage+WebCache.m */; };\n\t\t3A7A90BB67EA1197192AC12C57CB9585 /* Jurisdiction_icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C2818BB53593BDAB01B9BE25C54FB07 /* Jurisdiction_icon@3x.png */; };\n\t\t3D9390CD8F716E217F034C87639ABBAD /* HUToast.m in Sources */ = {isa = PBXBuildFile; fileRef = BEF559DE20B55C84DA7DE88F2DC3674F /* HUToast.m */; };\n\t\t3E845D3F5BC22756CFE33576ECF38EDF /* SVProgressAnimatedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 865ECDF17E5F581EC036DA88C8EA5EC6 /* SVProgressAnimatedView.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t400FEBC5B5E78F7BC76B9FB21DC02912 /* album_photograph_icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 73B08799CBB6E6C520DFDC31692B4B3A /* album_photograph_icon@3x.png */; };\n\t\t41E3EC52537EB6280D7DE2DFEB19F369 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 61CE96D2977D382BDBEF6EB6C360CAA5 /* SDImageCacheConfig.m */; };\n\t\t441F9F02296486E9F50BB59E0105966E /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 804666883EC6B1A30EE2C0C21974EA4E /* Photos.framework */; };\n\t\t44315C1D5AA06EC4516CC016F4505054 /* UIView+HUConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = F0DACE5743EF9203F95EDC4F0FF77FC3 /* UIView+HUConstraint.m */; };\n\t\t4B8779A43D1E81C6FFE4593B5F8D6288 /* NSBundle+HUPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = FB68DA04853D2044F150D9165DD4AD40 /* NSBundle+HUPicker.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t4DAB2E3EAFE5D4EF3806D2A76036F4FF /* photo_button_selected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 703F045B6E13F9E59046173B939701EC /* photo_button_selected@2x.png */; };\n\t\t527E140533AFB0472E5D59561053EDD2 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DE8F32142A47511484566FE4535744C4 /* UIButton+WebCache.m */; };\n\t\t53A14922CA39A52C1926D0246C2BB1F0 /* HUAlbumCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E14F497E11E651AC49123BA06F5ED79 /* HUAlbumCell.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t580058559154D3B6A975DDAE7EFBA3C5 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0687350693844A2E9E522786088D90F3 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t598BA4AEFD2B722B093B57F23D516DF1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };\n\t\t5A90BA62A73A14336AE2A28E5D320B0A /* HUImagePickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D6B30683558D738F4DE543582F7189B1 /* HUImagePickerViewController.m */; };\n\t\t5BA328FA29936FC6602FA2AC66CA7023 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };\n\t\t5D4A489B188F4BCA1B89DE0F17BB8FA7 /* HUWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = BBCE812D3697587EE47CA1B5C2F315CC /* HUWebImageDownloader.m */; };\n\t\t5DCEE92ACF66523B2A394A8FCD937EA5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE05B0A93E7AC961E35AFD6B72A43F53 /* UIKit.framework */; };\n\t\t605A413ED7A7834E43679FB47E2C1110 /* HUPhotoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DA652A6053BD21B7B631581A9AE77F8 /* HUPhotoManager.m */; };\n\t\t6169115EC8E6EFE24CFCEF5D1E02D736 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = F475A7C707C8FB377AC19C870CEAFFF2 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t62E71CA9C06816E2FB7E729AF2283634 /* HUNavTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D3BF58C096E8B3557DBD41DD70D03B /* HUNavTitleView.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t641BF2B026B2E09570949CEAAA1CEC79 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F0FBC46E4BB9737994EE2E35E6E07A4 /* SDWebImagePrefetcher.m */; };\n\t\t65B63AB881AA74C306596717363C5E0F /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 20FB595B908B4DA42B12C10B3B74A2FA /* UIImageView+WebCache.m */; };\n\t\t65CEECC1600B3EB655A0EB242D354A88 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };\n\t\t66025EBA8B6D98C392958C8520F6D7E5 /* HUPHAuthorizationNotDeterminedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C6EAE39BE0B78BD51FA0C8578DFC6215 /* HUPHAuthorizationNotDeterminedViewController.m */; };\n\t\t66DECE27B5EF416042C9FF26AD43EF00 /* HUToast.h in Headers */ = {isa = PBXBuildFile; fileRef = 9103C49F8D840C91E18ED85756AB0BBB /* HUToast.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t671D941A03C1E763513AAA4857DC51BD /* HUImageGridCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 69AED5B69BC460F980416E86560D5348 /* HUImageGridCell.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t694DC69113D8FC517034EC5FBC00950A /* HUImagePickerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E8491134C958BC38C9F082D5CE0C36B /* HUImagePickerViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t6A2EE1939C21B95571A77B65094E505D /* album_close_icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C86AB20D8D71D526A8202973E9A1F545 /* album_close_icon@3x.png */; };\n\t\t74302A6E58181E6596A1BB389365F43F /* HUAlbumTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C61601A866B0B6F3B1CC15879939A46 /* HUAlbumTableViewController.m */; };\n\t\t746F598854C3DB3E9DB0D0726148FD94 /* hu_const.h in Headers */ = {isa = PBXBuildFile; fileRef = F157F1452E6D4EAE236DA49C7C0E894B /* hu_const.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t768C9F5C502E68F2914072040FFA71E1 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = D4E456D947C1E3759C029BA645213B74 /* NSData+ImageContentType.m */; };\n\t\t78DBC6F454ABC5112579DF6275C4461A /* Jurisdiction_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C68E7235956D835ADFBE6514D8E96EFA /* Jurisdiction_icon@2x.png */; };\n\t\t79996630838668D04EA3BFB57560995E /* HUImageSelectModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE6CBF80A2939FE6F1C7C149A1C1F4A /* HUImageSelectModel.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t7C3459B05690C13218F9F23C827FE21A /* UIView+frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FBCA5CAA0922972DB941FA957456C36 /* UIView+frame.m */; };\n\t\t7E071687325BF5B296A25A75974490C3 /* SVProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B72FB7B35A719AFAD18FAA1C4F6EDAC /* SVProgressHUD-dummy.m */; };\n\t\t7E813E032E1B31658FCF923F78B479B5 /* HUPHAuthorizationNotDeterminedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 02090B8A152D8EA57D43A1D41FC3FAE1 /* HUPHAuthorizationNotDeterminedView.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t814F5D3D6EE077DCD1A25EDF6DB63CAA /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C796604D26CF43514817953954C5AF9 /* UIView+WebCache.m */; };\n\t\t822C18350931407D1EE15B2BB719E3F3 /* HUPhotoAlbum.h in Headers */ = {isa = PBXBuildFile; fileRef = 10F59DBE0AF6AAF69E10F159B417661A /* HUPhotoAlbum.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t8392C6FF89FEE6B0FB3042AA0925313D /* HUPhotoPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = D49449D610A39E04D4C2A121F5E4FD32 /* HUPhotoPicker.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t83C575C5E394FD4869BEAE2FE3FD5B02 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = F69008F697735A74BE8C45DDAEF29A41 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t841A407A7C5DC32F91DA0EB3D8014C2E /* SVProgressAnimatedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BFA6105989E1129CE256E52520269E1 /* SVProgressAnimatedView.m */; };\n\t\t86FB723DD88559EC1E288B9FA5B7EE4A /* HUPhotoManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 13B5E72269741E51831AA307A834D172 /* HUPhotoManager.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t873C75AB9B12A76E90DAF9EAB44A991C /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4F9ECEA64607144F85BC468769B68C2 /* QuartzCore.framework */; };\n\t\t8A96738F5A80EDF3797B7716F8F12E63 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */; };\n\t\t8B6C609B4E035A892066DC53BBFB119E /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 17F5F8ED6AD15C8E85169BF85D772348 /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t8BAB9550CAA0B5A7EA5F2F828130E136 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 45587FF486C1EEDF876807B8E8CC935E /* SDWebImageDownloaderOperation.m */; };\n\t\t8CFB4E2A821C8946F972B52F14E1EAB3 /* HUPHAuthorizationNotDeterminedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 56232916A8D191E1DEB3601409A09124 /* HUPHAuthorizationNotDeterminedView.m */; };\n\t\t8DC69158558D4AB7EE00575DA0CDD675 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9BF87558582615F2810E72AC339206 /* UIImageView+HighlightedWebCache.m */; };\n\t\t8E653B2F5B6D7E3A285833A5888AC3D6 /* HUAlbumCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 51C9CC5C6680C06B24AEC9DF433CC87C /* HUAlbumCell.xib */; };\n\t\t909372963DBA08C68992835EB86061EA /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = D958A56255E71ADC24D80C094DAC1A7A /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t91AB44B5B7DB95A7BA5B5B5D3DAF775D /* Asset.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A7056DF7B1C83091325D3DF07123CB6 /* Asset.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t91D498E3B268ECC94289A8EBE57FDB14 /* HUPhotoBrowserCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B6A27FBC85A69196B8297F1235D2027 /* HUPhotoBrowserCell.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\t935F70349715265D86E8FD0597447AC5 /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5440CAABC38EE84F75266A36CB50E346 /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t93E2D3CD516D98158E5D06EAD5EF4868 /* album_open_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A4D56D45B44D3173C51062AD8CE60193 /* album_open_icon@2x.png */; };\n\t\t97EB8C5178E22A872B36A788152AA571 /* SVProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 753A0AD8EE029D65DDC636A68F7A5D56 /* SVProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t98C136139F278CFA1281924A853F23F0 /* HUPhotoBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A0250C4B3D552BA4CADE666439B13D /* HUPhotoBrowser.m */; };\n\t\t99B738B37205FF969C2BDB51627CD71A /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 08214ABFFF911AC79EAD4722979DDB29 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t9BC35B29E439FAC7E11246F5898D0BD1 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F057D640CB9E60D7D53423DD283C9A4B /* SDWebImage-dummy.m */; };\n\t\t9BDE24BE44A77B9E0CB09814CE3941E3 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 286D66F5AAD3686AC8D9AB22677CBCE9 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t9EA3B8E135E065F0914BEB70EDFE6775 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 19064ABD4D32F1FA7743601441F135D1 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tA0CC6C2D247E55AE7E6E4CE552C7B270 /* photo_button_normal@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = BDADDF678F3ECC6FEB0547730DB2AF2D /* photo_button_normal@3x.png */; };\n\t\tA0DB532409564F8DF18924EA2CBB0929 /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E825E9268F7A21ED4A10CACA6DAC8C9 /* SDWebImageDecoder.m */; };\n\t\tA2B42E2B533938834E83B3957FA83837 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2F66A76856B26ADEC9C3296F0FE0B5A /* AssetsLibrary.framework */; };\n\t\tA3E65E80FAA621CA37687E721E440540 /* album_photograph_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C28CA3BBDBA583094087A2890A7C7FE0 /* album_photograph_icon@2x.png */; };\n\t\tA3F0B52FC22E648C3D8783934613B1BA /* photo_button_normal@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B6BCF7F14A2A289DFB89DA8D608C1796 /* photo_button_normal@2x.png */; };\n\t\tA5D6462FB49CAFF292C5EDE70BD65784 /* Pods-HUPhotoBrowser Demo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A39260F4921A34460754C96BF086B62 /* Pods-HUPhotoBrowser Demo-dummy.m */; };\n\t\tA60F3472AD558A5C66E269AD32F0A160 /* HUAlbumCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAD901633A161CB4C35C1A9466869C3 /* HUAlbumCell.m */; };\n\t\tA63D39295D405569DCE488454011DBAB /* HUTakePhotoCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1277B0BF2774C41E61B74F8F3F084D87 /* HUTakePhotoCell.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\tA7DB2E7B837586BE06497232D65B3BA8 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DCC6D86420229BFAB1F056871A12607 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tAA2B867A047A62006345CABCFC932C81 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F476C600975412D143CA6797F9B48AF /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tB45672895B70B90CBB854A69850A112F /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6DFDC2D8A016511F4AED26F3544CF6 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tB68A1F5A13355D589240D8E774D7F10D /* UIImageView+HUWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = C843E13541704A189B1DAD2DBC088F04 /* UIImageView+HUWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tBBAEBB6AF61E7D4AD565BBF9FF8A16DB /* HUPhotoPicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EBCCDDCFD3DA396C62681DC281319765 /* HUPhotoPicker-dummy.m */; };\n\t\tBC0BFD421A71955FE7C83DC3EAC0BBCB /* HUWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 293ACC9890E0C871FC279737AA8EF8D3 /* HUWebImage.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\tBD16BBCD6291F236455D1FBC72D33281 /* UIImage+HUExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D96800D9444348C9EF862C9797663E8 /* UIImage+HUExtension.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\tC3518915CEB45A87EF5DCAFC9F93696E /* HUWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = C9B410728A89C72F649567CB946115D1 /* HUWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tC58B4014568B8705E8A620707CA28F51 /* UIImageView+HUWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ACFB56952A75327CCF7A9D285F61319 /* UIImageView+HUWebImage.m */; };\n\t\tC7CA5364C6A3B19A1590369A9FC85A65 /* HUImageGridViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = BE78CD177B2F07E683BFE658848BA2A0 /* HUImageGridViewController.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\tC86C2E7953283ED2B5B845B676B038AC /* album_open_icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = A316B140C3B1474605CDE6512EA540FA /* album_open_icon@3x.png */; };\n\t\tC8FAE843C4BA0303449B6E4D579EDBED /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE05B0A93E7AC961E35AFD6B72A43F53 /* UIKit.framework */; };\n\t\tCDBA2121509F504062E1BDF268CB6D58 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B38EF6EE351405BFF1A723C71A0CF97 /* UIImage+GIF.m */; };\n\t\tCDC033EC56BCF03AB75E7DCB77B8AC39 /* HUPhotoBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A8EC596D9BEBB2A682737B6979B9945 /* HUPhotoBrowserCell.m */; };\n\t\tD02959EAAE84300F7DFFF1EF28CD4C2B /* NSBundle+HUPicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE15A73A5C43C841A105D61C78AC511 /* NSBundle+HUPicker.m */; };\n\t\tD6B3DEABE7F25211FF3923A5F2116532 /* HUPHAuthorizationNotDeterminedViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 49A6EFC2685278E2DF77BF2A0DDBE083 /* HUPHAuthorizationNotDeterminedViewController.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\tD779890F7370C5C5554D8094AA4C5A13 /* UIBarButtonItem+HUButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 94E349128851E2C8898702890C40F4F9 /* UIBarButtonItem+HUButton.m */; };\n\t\tD9746CBC85CFFE20D7E72B131EB4F8D0 /* UIBarButtonItem+HUButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A9A3289CAC5E7F9A6A2E7A0833F5790 /* UIBarButtonItem+HUButton.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\tD9D4B596A996B4F4AC367E8CA9209AF8 /* UIView+HUConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DC223C3C761C783185E1FFB1A7A05E3 /* UIView+HUConstraint.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\tDBC6A6834B7CA85141141A9FC59E08C7 /* Photos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 804666883EC6B1A30EE2C0C21974EA4E /* Photos.framework */; };\n\t\tDC5D856B421A8DF82260E61BF79F08E8 /* HUWebImageDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 94DDDEAEFD125C897C744D5C9F295F28 /* HUWebImageDownloadOperation.m */; };\n\t\tDF3321CF3E41B83F87AAD7F08BC3C764 /* SVIndefiniteAnimatedView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6872A62128DF0B9C337DD8EB551B99F /* SVIndefiniteAnimatedView.m */; };\n\t\tE1A09732EB1D4DEE543E57BC9E75B181 /* UIView+frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB976DB4DE69AA197DACE8A0AE44DEA /* UIView+frame.h */; settings = {ATTRIBUTES = (Project, ); }; };\n\t\tE283E46931867F7EBF81F3B55978CE76 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D7387A90A4E52BF5ADF9DC82A56D31E2 /* SDImageCache.m */; };\n\t\tE91D8B354A89AC323FFB8E81B00780ED /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = E31DD5A02B0033EA77659E77DFEDD15A /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tEA5C2EE172234721DA4FFBE1E3EFAA18 /* HUNavTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA2109BCE58B9B9827024FE7D6C2905 /* HUNavTitleView.m */; };\n\t\tEB3B763E8A293AC718BF7B221FCAF395 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 34B7D74B34C33201DFB7105711BABE76 /* UIView+WebCacheOperation.m */; };\n\t\tF22AFC90A1EA932CB3EB26F29B6181C5 /* photo_button_selected@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = E25CC34B1906BD764E3B6AF5807B0175 /* photo_button_selected@3x.png */; };\n\t\tF7E2ED980B54D1F1209B33A72877F145 /* Pods-HUPhotoBrowser DemoTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 224779CFFFD95B16021CB8EA8C4F9BBD /* Pods-HUPhotoBrowser DemoTests-dummy.m */; };\n\t\tFCB0CF77447303B45928AB44BA7B4973 /* HUPhotoBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A5EB8FFE503BA9B41DE8F099A20CC64 /* HUPhotoBrowser.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tFD49D93DB71B5A970FEE2A166A3D24D0 /* SVRadialGradientLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = C1D4A6B3E3FA774837EEE83CCC78A605 /* SVRadialGradientLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tFDB4A416E19DF7AAF581FD0A2D0597A8 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FFA0F53632825CF88AB2EB6B22A7F07 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t1DF3B04FD0110B3430E6B386516516E5 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = E5C155FFDDFCD74237E4D301D504CD59;\n\t\t\tremoteInfo = SVProgressHUD;\n\t\t};\n\t\t790BB20FF7770EDCDBFB4B49BC5FB78B /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 156B947C8425573AB59F6FB4E33470DD;\n\t\t\tremoteInfo = SDWebImage;\n\t\t};\n\t\t951FFE9A507AEB3DD9B0AC20F7350526 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = E5C155FFDDFCD74237E4D301D504CD59;\n\t\t\tremoteInfo = SVProgressHUD;\n\t\t};\n\t\tB3BDC557D51B9B0E3D9C0C7BDED7FF6F /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = B006CA1FB9E74F505B0BC5CD2168B0BA;\n\t\t\tremoteInfo = HUPhotoPicker;\n\t\t};\n\t\tDE2931CB4A9D219A88807CD989EBA434 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 4772B77F4E0FA787DC9FD7562D377C5F;\n\t\t\tremoteInfo = \"HUPhotoPicker-HUPhotoPicker\";\n\t\t};\n\t\tEB5B8CC38E68E7B676CB7C254E06C558 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = F61EABE2A50F74AE114AA3F4367121A8;\n\t\t\tremoteInfo = HUPhotoBrowser;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t00C800A6F02590F678225961616F0E14 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = \"<group>\"; };\n\t\t02090B8A152D8EA57D43A1D41FC3FAE1 /* HUPHAuthorizationNotDeterminedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPHAuthorizationNotDeterminedView.h; path = HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.h; sourceTree = \"<group>\"; };\n\t\t0687350693844A2E9E522786088D90F3 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = \"<group>\"; };\n\t\t08214ABFFF911AC79EAD4722979DDB29 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIView+WebCacheOperation.h\"; path = \"SDWebImage/UIView+WebCacheOperation.h\"; sourceTree = \"<group>\"; };\n\t\t0ACFB56952A75327CCF7A9D285F61319 /* UIImageView+HUWebImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"UIImageView+HUWebImage.m\"; sourceTree = \"<group>\"; };\n\t\t0AE18F7ECC383B6860F958FFE3E22296 /* UIImage+HUExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"UIImage+HUExtension.m\"; sourceTree = \"<group>\"; };\n\t\t0C2818BB53593BDAB01B9BE25C54FB07 /* Jurisdiction_icon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"Jurisdiction_icon@3x.png\"; path = \"HUPhotoPicker/Assets/Jurisdiction_icon@3x.png\"; sourceTree = \"<group>\"; };\n\t\t0CECA8E62DF6B3D72EBDAB13B981D010 /* libHUPhotoBrowser.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libHUPhotoBrowser.a; path = libHUPhotoBrowser.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t0D54E71FD9E8FE32D095B20904DE434C /* SVProgressHUD.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SVProgressHUD.xcconfig; sourceTree = \"<group>\"; };\n\t\t0DA652A6053BD21B7B631581A9AE77F8 /* HUPhotoManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPhotoManager.m; path = HUPhotoPicker/Classes/HUPhotoManager.m; sourceTree = \"<group>\"; };\n\t\t0F6B03278E85DE641CB5405289304121 /* libSVProgressHUD.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSVProgressHUD.a; path = libSVProgressHUD.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t10F59DBE0AF6AAF69E10F159B417661A /* HUPhotoAlbum.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoAlbum.h; path = HUPhotoPicker/Classes/HUPhotoAlbum.h; sourceTree = \"<group>\"; };\n\t\t1277B0BF2774C41E61B74F8F3F084D87 /* HUTakePhotoCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUTakePhotoCell.h; path = HUPhotoPicker/Classes/HUTakePhotoCell.h; sourceTree = \"<group>\"; };\n\t\t13320B73B1EEDEC7054B6BA67D32D4EB /* HUImageGridCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUImageGridCell.m; path = HUPhotoPicker/Classes/HUImageGridCell.m; sourceTree = \"<group>\"; };\n\t\t13917CA1D52B803DA4188D30BE4F189D /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = \"Pods-HUPhotoBrowser DemoTests.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t13B5E72269741E51831AA307A834D172 /* HUPhotoManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoManager.h; path = HUPhotoPicker/Classes/HUPhotoManager.h; sourceTree = \"<group>\"; };\n\t\t14E9CC31888031CF04ADADBFC41C548F /* Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = \"Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown\"; sourceTree = \"<group>\"; };\n\t\t17F3D3D171070259473E37C17EC3308E /* HUPhotoPicker.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = HUPhotoPicker.bundle; path = HUPhotoPicker.bundle; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t17F5F8ED6AD15C8E85169BF85D772348 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = \"<group>\"; };\n\t\t183AA6FF36B86D6F3D84C9F33EC0E537 /* Pods-HUPhotoBrowser DemoTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = \"Pods-HUPhotoBrowser DemoTests-acknowledgements.plist\"; sourceTree = \"<group>\"; };\n\t\t19064ABD4D32F1FA7743601441F135D1 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/SDImageCacheConfig.h; sourceTree = \"<group>\"; };\n\t\t1A5EB8FFE503BA9B41DE8F099A20CC64 /* HUPhotoBrowser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoBrowser.h; path = HUPhotoBrowser/HUPhotoBrowser.h; sourceTree = \"<group>\"; };\n\t\t1B6A27FBC85A69196B8297F1235D2027 /* HUPhotoBrowserCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoBrowserCell.h; path = HUPhotoBrowser/HUPhotoBrowserCell.h; sourceTree = \"<group>\"; };\n\t\t1C51BE05478A10C56BD6FF53686494E7 /* SVProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVProgressHUD.m; path = SVProgressHUD/SVProgressHUD.m; sourceTree = \"<group>\"; };\n\t\t1D96800D9444348C9EF862C9797663E8 /* UIImage+HUExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"UIImage+HUExtension.h\"; sourceTree = \"<group>\"; };\n\t\t1EB976DB4DE69AA197DACE8A0AE44DEA /* UIView+frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIView+frame.h\"; path = \"HUPhotoBrowser/UIView+frame.h\"; sourceTree = \"<group>\"; };\n\t\t20FB595B908B4DA42B12C10B3B74A2FA /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIImageView+WebCache.m\"; path = \"SDWebImage/UIImageView+WebCache.m\"; sourceTree = \"<group>\"; };\n\t\t21F56FEF368B49D93D7E4F418AAE8296 /* NSImage+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"NSImage+WebCache.h\"; path = \"SDWebImage/NSImage+WebCache.h\"; sourceTree = \"<group>\"; };\n\t\t224779CFFFD95B16021CB8EA8C4F9BBD /* Pods-HUPhotoBrowser DemoTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"Pods-HUPhotoBrowser DemoTests-dummy.m\"; sourceTree = \"<group>\"; };\n\t\t286D66F5AAD3686AC8D9AB22677CBCE9 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIImageView+HighlightedWebCache.h\"; path = \"SDWebImage/UIImageView+HighlightedWebCache.h\"; sourceTree = \"<group>\"; };\n\t\t293ACC9890E0C871FC279737AA8EF8D3 /* HUWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HUWebImage.h; sourceTree = \"<group>\"; };\n\t\t2A39260F4921A34460754C96BF086B62 /* Pods-HUPhotoBrowser Demo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"Pods-HUPhotoBrowser Demo-dummy.m\"; sourceTree = \"<group>\"; };\n\t\t2A7056DF7B1C83091325D3DF07123CB6 /* Asset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Asset.h; path = HUPhotoPicker/Classes/Asset.h; sourceTree = \"<group>\"; };\n\t\t2B72FB7B35A719AFAD18FAA1C4F6EDAC /* SVProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"SVProgressHUD-dummy.m\"; sourceTree = \"<group>\"; };\n\t\t2E14F497E11E651AC49123BA06F5ED79 /* HUAlbumCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUAlbumCell.h; path = HUPhotoPicker/Classes/HUAlbumCell.h; sourceTree = \"<group>\"; };\n\t\t2F476C600975412D143CA6797F9B48AF /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIImageView+WebCache.h\"; path = \"SDWebImage/UIImageView+WebCache.h\"; sourceTree = \"<group>\"; };\n\t\t33DFF64EE6E05602EBA5701E00859628 /* Pods-HUPhotoBrowser DemoTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = \"Pods-HUPhotoBrowser DemoTests-frameworks.sh\"; sourceTree = \"<group>\"; };\n\t\t34B7D74B34C33201DFB7105711BABE76 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIView+WebCacheOperation.m\"; path = \"SDWebImage/UIView+WebCacheOperation.m\"; sourceTree = \"<group>\"; };\n\t\t34F8305A2C6089188628736DDD2F370A /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; };\n\t\t3999B1A812D487DC85FA889ED46EED0C /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"SDWebImage-prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t3A7B323C6C7AA5954DD661A569FA77CD /* album_close_icon@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"album_close_icon@2x.png\"; path = \"HUPhotoPicker/Assets/album_close_icon@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3AEF36E1AC343442B9AD72564C0B21A8 /* HUPhotoBrowser.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HUPhotoBrowser.xcconfig; sourceTree = \"<group>\"; };\n\t\t3BFA6105989E1129CE256E52520269E1 /* SVProgressAnimatedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVProgressAnimatedView.m; path = SVProgressHUD/SVProgressAnimatedView.m; sourceTree = \"<group>\"; };\n\t\t3C61601A866B0B6F3B1CC15879939A46 /* HUAlbumTableViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUAlbumTableViewController.m; path = HUPhotoPicker/Classes/HUAlbumTableViewController.m; sourceTree = \"<group>\"; };\n\t\t3CA2109BCE58B9B9827024FE7D6C2905 /* HUNavTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUNavTitleView.m; path = HUPhotoPicker/Classes/HUNavTitleView.m; sourceTree = \"<group>\"; };\n\t\t3F0FBC46E4BB9737994EE2E35E6E07A4 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = \"<group>\"; };\n\t\t441D9E0D8C2033CBCB8EBD66CB4EDC11 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = \"<group>\"; };\n\t\t45587FF486C1EEDF876807B8E8CC935E /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = \"<group>\"; };\n\t\t49A6EFC2685278E2DF77BF2A0DDBE083 /* HUPHAuthorizationNotDeterminedViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPHAuthorizationNotDeterminedViewController.h; path = HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.h; sourceTree = \"<group>\"; };\n\t\t4A8EC596D9BEBB2A682737B6979B9945 /* HUPhotoBrowserCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPhotoBrowserCell.m; path = HUPhotoBrowser/HUPhotoBrowserCell.m; sourceTree = \"<group>\"; };\n\t\t4C6DFDC2D8A016511F4AED26F3544CF6 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = \"<group>\"; };\n\t\t4C796604D26CF43514817953954C5AF9 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIView+WebCache.m\"; path = \"SDWebImage/UIView+WebCache.m\"; sourceTree = \"<group>\"; };\n\t\t4D9DC81E5EBE3E1913E938646E03C2E9 /* HUAlbumTableViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUAlbumTableViewController.h; path = HUPhotoPicker/Classes/HUAlbumTableViewController.h; sourceTree = \"<group>\"; };\n\t\t4E825E9268F7A21ED4A10CACA6DAC8C9 /* SDWebImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDecoder.m; path = SDWebImage/SDWebImageDecoder.m; sourceTree = \"<group>\"; };\n\t\t4FF76196D9A0CB2559E6874B8EEF173B /* Pods-HUPhotoBrowser Demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = \"Pods-HUPhotoBrowser Demo.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t51C9CC5C6680C06B24AEC9DF433CC87C /* HUAlbumCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = HUAlbumCell.xib; path = HUPhotoPicker/Assets/HUAlbumCell.xib; sourceTree = \"<group>\"; };\n\t\t5440CAABC38EE84F75266A36CB50E346 /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = \"<group>\"; };\n\t\t545C51AB7AB0CB14DF4ECCA613BAFEA5 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = \"<group>\"; };\n\t\t56232916A8D191E1DEB3601409A09124 /* HUPHAuthorizationNotDeterminedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPHAuthorizationNotDeterminedView.m; path = HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedView.m; sourceTree = \"<group>\"; };\n\t\t5DCC6D86420229BFAB1F056871A12607 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = \"<group>\"; };\n\t\t5FBCA5CAA0922972DB941FA957456C36 /* UIView+frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIView+frame.m\"; path = \"HUPhotoBrowser/UIView+frame.m\"; sourceTree = \"<group>\"; };\n\t\t5FFA0F53632825CF88AB2EB6B22A7F07 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = \"<group>\"; };\n\t\t61CE96D2977D382BDBEF6EB6C360CAA5 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/SDImageCacheConfig.m; sourceTree = \"<group>\"; };\n\t\t69AED5B69BC460F980416E86560D5348 /* HUImageGridCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUImageGridCell.h; path = HUPhotoPicker/Classes/HUImageGridCell.h; sourceTree = \"<group>\"; };\n\t\t69B7717C3661262547C2C6D471CC6BAC /* Pods-HUPhotoBrowser Demo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = \"Pods-HUPhotoBrowser Demo-resources.sh\"; sourceTree = \"<group>\"; };\n\t\t6DC223C3C761C783185E1FFB1A7A05E3 /* UIView+HUConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIView+HUConstraint.h\"; path = \"HUPhotoPicker/Classes/UIView+HUConstraint.h\"; sourceTree = \"<group>\"; };\n\t\t6E8491134C958BC38C9F082D5CE0C36B /* HUImagePickerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUImagePickerViewController.h; path = HUPhotoPicker/Classes/HUImagePickerViewController.h; sourceTree = \"<group>\"; };\n\t\t703F045B6E13F9E59046173B939701EC /* photo_button_selected@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"photo_button_selected@2x.png\"; path = \"HUPhotoPicker/Assets/photo_button_selected@2x.png\"; sourceTree = \"<group>\"; };\n\t\t73B08799CBB6E6C520DFDC31692B4B3A /* album_photograph_icon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"album_photograph_icon@3x.png\"; path = \"HUPhotoPicker/Assets/album_photograph_icon@3x.png\"; sourceTree = \"<group>\"; };\n\t\t753A0AD8EE029D65DDC636A68F7A5D56 /* SVProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVProgressHUD.h; path = SVProgressHUD/SVProgressHUD.h; sourceTree = \"<group>\"; };\n\t\t77001B333D5BD6024B8AD5FA9543880D /* Pods-HUPhotoBrowser Demo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = \"Pods-HUPhotoBrowser Demo-acknowledgements.plist\"; sourceTree = \"<group>\"; };\n\t\t7787CCB41A739DF35AC7AF65005F5384 /* SVIndefiniteAnimatedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVIndefiniteAnimatedView.h; path = SVProgressHUD/SVIndefiniteAnimatedView.h; sourceTree = \"<group>\"; };\n\t\t78840C91637E1D69D68C079ABE539DF4 /* HUPhotoPicker.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HUPhotoPicker.xcconfig; sourceTree = \"<group>\"; };\n\t\t7A7709F2BB2881894A4943D95A289521 /* libPods-HUPhotoBrowser DemoTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = \"libPods-HUPhotoBrowser DemoTests.a\"; path = \"libPods-HUPhotoBrowser DemoTests.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t7CE6CBF80A2939FE6F1C7C149A1C1F4A /* HUImageSelectModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUImageSelectModel.h; path = HUPhotoPicker/Classes/HUImageSelectModel.h; sourceTree = \"<group>\"; };\n\t\t7F8B57C69320D79163431A32CD7C2404 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = \"Pods-HUPhotoBrowser DemoTests.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t804666883EC6B1A30EE2C0C21974EA4E /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Photos.framework; sourceTree = DEVELOPER_DIR; };\n\t\t865ECDF17E5F581EC036DA88C8EA5EC6 /* SVProgressAnimatedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVProgressAnimatedView.h; path = SVProgressHUD/SVProgressAnimatedView.h; sourceTree = \"<group>\"; };\n\t\t86EB8878AB1588D8FA0267B6BE6C0FCC /* libSDWebImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSDWebImage.a; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t895A080761ACCC7F75D47125CB036CDD /* Pods-HUPhotoBrowser Demo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = \"Pods-HUPhotoBrowser Demo-acknowledgements.markdown\"; sourceTree = \"<group>\"; };\n\t\t8A9A3289CAC5E7F9A6A2E7A0833F5790 /* UIBarButtonItem+HUButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIBarButtonItem+HUButton.h\"; path = \"HUPhotoPicker/Classes/UIBarButtonItem+HUButton.h\"; sourceTree = \"<group>\"; };\n\t\t8AE15A73A5C43C841A105D61C78AC511 /* NSBundle+HUPicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"NSBundle+HUPicker.m\"; path = \"HUPhotoPicker/Classes/NSBundle+HUPicker.m\"; sourceTree = \"<group>\"; };\n\t\t8B38EF6EE351405BFF1A723C71A0CF97 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIImage+GIF.m\"; path = \"SDWebImage/UIImage+GIF.m\"; sourceTree = \"<group>\"; };\n\t\t90B6845A1227E66671DC5581A96EB9F6 /* SVProgressHUD.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = \"wrapper.plug-in\"; name = SVProgressHUD.bundle; path = SVProgressHUD/SVProgressHUD.bundle; sourceTree = \"<group>\"; };\n\t\t9103C49F8D840C91E18ED85756AB0BBB /* HUToast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUToast.h; path = HUPhotoPicker/Classes/HUToast.h; sourceTree = \"<group>\"; };\n\t\t91040B2B94B6447A1D4D9387C627B02A /* HUWebImageDownloadOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HUWebImageDownloadOperation.h; sourceTree = \"<group>\"; };\n\t\t919847A9F94E2FACD0E3E3CB08A71F90 /* NSImage+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"NSImage+WebCache.m\"; path = \"SDWebImage/NSImage+WebCache.m\"; sourceTree = \"<group>\"; };\n\t\t93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };\n\t\t94DDDEAEFD125C897C744D5C9F295F28 /* HUWebImageDownloadOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = HUWebImageDownloadOperation.m; sourceTree = \"<group>\"; };\n\t\t94E349128851E2C8898702890C40F4F9 /* UIBarButtonItem+HUButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIBarButtonItem+HUButton.m\"; path = \"HUPhotoPicker/Classes/UIBarButtonItem+HUButton.m\"; sourceTree = \"<group>\"; };\n\t\t9A68BB2127299F79461E6F6B3AB52869 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIImage+MultiFormat.m\"; path = \"SDWebImage/UIImage+MultiFormat.m\"; sourceTree = \"<group>\"; };\n\t\t9B2BFA65B10054FC241F1C3ABB96E68B /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = \"<group>\"; };\n\t\t9B6C41B0E78CD3F337D9DA8131A22914 /* nav_back@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"nav_back@3x.png\"; path = \"HUPhotoPicker/Assets/nav_back@3x.png\"; sourceTree = \"<group>\"; };\n\t\t9B9BF87558582615F2810E72AC339206 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIImageView+HighlightedWebCache.m\"; path = \"SDWebImage/UIImageView+HighlightedWebCache.m\"; sourceTree = \"<group>\"; };\n\t\t9BAD901633A161CB4C35C1A9466869C3 /* HUAlbumCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUAlbumCell.m; path = HUPhotoPicker/Classes/HUAlbumCell.m; sourceTree = \"<group>\"; };\n\t\tA2D3BF58C096E8B3557DBD41DD70D03B /* HUNavTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUNavTitleView.h; path = HUPhotoPicker/Classes/HUNavTitleView.h; sourceTree = \"<group>\"; };\n\t\tA316B140C3B1474605CDE6512EA540FA /* album_open_icon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"album_open_icon@3x.png\"; path = \"HUPhotoPicker/Assets/album_open_icon@3x.png\"; sourceTree = \"<group>\"; };\n\t\tA4D56D45B44D3173C51062AD8CE60193 /* album_open_icon@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"album_open_icon@2x.png\"; path = \"HUPhotoPicker/Assets/album_open_icon@2x.png\"; sourceTree = \"<group>\"; };\n\t\tA524D07B783D67E8F7BC7A33A47770AE /* HUPhotoBrowser-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"HUPhotoBrowser-dummy.m\"; sourceTree = \"<group>\"; };\n\t\tA686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };\n\t\tA6872A62128DF0B9C337DD8EB551B99F /* SVIndefiniteAnimatedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVIndefiniteAnimatedView.m; path = SVProgressHUD/SVIndefiniteAnimatedView.m; sourceTree = \"<group>\"; };\n\t\tAEC8F5C50FA9C44CF017CDCDCBA68D75 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = \"<group>\"; };\n\t\tAF0D9B0557E593C2184912CC905AA5E1 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIView+WebCache.h\"; path = \"SDWebImage/UIView+WebCache.h\"; sourceTree = \"<group>\"; };\n\t\tAFDEF6B3F68ABAD646B955014670B32D /* HUImageGridViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUImageGridViewController.m; path = HUPhotoPicker/Classes/HUImageGridViewController.m; sourceTree = \"<group>\"; };\n\t\tB6BCF7F14A2A289DFB89DA8D608C1796 /* photo_button_normal@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"photo_button_normal@2x.png\"; path = \"HUPhotoPicker/Assets/photo_button_normal@2x.png\"; sourceTree = \"<group>\"; };\n\t\tBBCE812D3697587EE47CA1B5C2F315CC /* HUWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = HUWebImageDownloader.m; sourceTree = \"<group>\"; };\n\t\tBCDA6B8A731D286647BA9FE57E672D58 /* HUPhotoPicker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"HUPhotoPicker-prefix.pch\"; sourceTree = \"<group>\"; };\n\t\tBD226A51E4C093FE0AA6EB24430D4C53 /* ResourceBundle-HUPhotoPicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = \"ResourceBundle-HUPhotoPicker-Info.plist\"; sourceTree = \"<group>\"; };\n\t\tBDADDF678F3ECC6FEB0547730DB2AF2D /* photo_button_normal@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"photo_button_normal@3x.png\"; path = \"HUPhotoPicker/Assets/photo_button_normal@3x.png\"; sourceTree = \"<group>\"; };\n\t\tBE78CD177B2F07E683BFE658848BA2A0 /* HUImageGridViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUImageGridViewController.h; path = HUPhotoPicker/Classes/HUImageGridViewController.h; sourceTree = \"<group>\"; };\n\t\tBEF559DE20B55C84DA7DE88F2DC3674F /* HUToast.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUToast.m; path = HUPhotoPicker/Classes/HUToast.m; sourceTree = \"<group>\"; };\n\t\tC137D78D8E705BFC3E79578F84BA3413 /* image_selected@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"image_selected@2x.png\"; path = \"HUPhotoPicker/Assets/image_selected@2x.png\"; sourceTree = \"<group>\"; };\n\t\tC1D4A6B3E3FA774837EEE83CCC78A605 /* SVRadialGradientLayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SVRadialGradientLayer.h; path = SVProgressHUD/SVRadialGradientLayer.h; sourceTree = \"<group>\"; };\n\t\tC28CA3BBDBA583094087A2890A7C7FE0 /* album_photograph_icon@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"album_photograph_icon@2x.png\"; path = \"HUPhotoPicker/Assets/album_photograph_icon@2x.png\"; sourceTree = \"<group>\"; };\n\t\tC3D0023A3AA419520B006770CC4B9FD4 /* nav_back@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"nav_back@2x.png\"; path = \"HUPhotoPicker/Assets/nav_back@2x.png\"; sourceTree = \"<group>\"; };\n\t\tC4F9ECEA64607144F85BC468769B68C2 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };\n\t\tC68E7235956D835ADFBE6514D8E96EFA /* Jurisdiction_icon@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"Jurisdiction_icon@2x.png\"; path = \"HUPhotoPicker/Assets/Jurisdiction_icon@2x.png\"; sourceTree = \"<group>\"; };\n\t\tC6EAE39BE0B78BD51FA0C8578DFC6215 /* HUPHAuthorizationNotDeterminedViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPHAuthorizationNotDeterminedViewController.m; path = HUPhotoPicker/Classes/HUPHAuthorizationNotDeterminedViewController.m; sourceTree = \"<group>\"; };\n\t\tC843E13541704A189B1DAD2DBC088F04 /* UIImageView+HUWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"UIImageView+HUWebImage.h\"; sourceTree = \"<group>\"; };\n\t\tC86AB20D8D71D526A8202973E9A1F545 /* album_close_icon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"album_close_icon@3x.png\"; path = \"HUPhotoPicker/Assets/album_close_icon@3x.png\"; sourceTree = \"<group>\"; };\n\t\tC913A7B67CFC7768421A5A3DC7F2D166 /* SVProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"SVProgressHUD-prefix.pch\"; sourceTree = \"<group>\"; };\n\t\tC9B410728A89C72F649567CB946115D1 /* HUWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = HUWebImageDownloader.h; sourceTree = \"<group>\"; };\n\t\tCA6CD145963CCB8E08499D36ECDCCB66 /* HUPhotoBrowser-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = \"HUPhotoBrowser-prefix.pch\"; sourceTree = \"<group>\"; };\n\t\tCB4C960A4ED6443011407CED0D78F10A /* Pods-HUPhotoBrowser Demo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = \"Pods-HUPhotoBrowser Demo-frameworks.sh\"; sourceTree = \"<group>\"; };\n\t\tCEE283977FB59654D573A812CE050DE1 /* libHUPhotoPicker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libHUPhotoPicker.a; path = libHUPhotoPicker.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tD2A1832C622E09402E5443E39EEB7C17 /* HUImageSelectModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUImageSelectModel.m; path = HUPhotoPicker/Classes/HUImageSelectModel.m; sourceTree = \"<group>\"; };\n\t\tD2F66A76856B26ADEC9C3296F0FE0B5A /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/AssetsLibrary.framework; sourceTree = DEVELOPER_DIR; };\n\t\tD49449D610A39E04D4C2A121F5E4FD32 /* HUPhotoPicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HUPhotoPicker.h; path = HUPhotoPicker/Classes/HUPhotoPicker.h; sourceTree = \"<group>\"; };\n\t\tD4E456D947C1E3759C029BA645213B74 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"NSData+ImageContentType.m\"; path = \"SDWebImage/NSData+ImageContentType.m\"; sourceTree = \"<group>\"; };\n\t\tD68944CA5223A84064F95C057951163C /* image_selected@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"image_selected@3x.png\"; path = \"HUPhotoPicker/Assets/image_selected@3x.png\"; sourceTree = \"<group>\"; };\n\t\tD6B30683558D738F4DE543582F7189B1 /* HUImagePickerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUImagePickerViewController.m; path = HUPhotoPicker/Classes/HUImagePickerViewController.m; sourceTree = \"<group>\"; };\n\t\tD7387A90A4E52BF5ADF9DC82A56D31E2 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = \"<group>\"; };\n\t\tD958A56255E71ADC24D80C094DAC1A7A /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"NSData+ImageContentType.h\"; path = \"SDWebImage/NSData+ImageContentType.h\"; sourceTree = \"<group>\"; };\n\t\tD9EB29BC0DA93559B0D44D7C78426356 /* HUTakePhotoCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUTakePhotoCell.m; path = HUPhotoPicker/Classes/HUTakePhotoCell.m; sourceTree = \"<group>\"; };\n\t\tDB229E87D174F577903EA3558BBCFFE8 /* Pods-HUPhotoBrowser Demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = \"Pods-HUPhotoBrowser Demo.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tDE8F32142A47511484566FE4535744C4 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIButton+WebCache.m\"; path = \"SDWebImage/UIButton+WebCache.m\"; sourceTree = \"<group>\"; };\n\t\tE25CC34B1906BD764E3B6AF5807B0175 /* photo_button_selected@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = \"photo_button_selected@3x.png\"; path = \"HUPhotoPicker/Assets/photo_button_selected@3x.png\"; sourceTree = \"<group>\"; };\n\t\tE31DD5A02B0033EA77659E77DFEDD15A /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIImage+GIF.h\"; path = \"SDWebImage/UIImage+GIF.h\"; sourceTree = \"<group>\"; };\n\t\tEBB4E8043E0015F89FDA55D0CA569CC4 /* SVRadialGradientLayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SVRadialGradientLayer.m; path = SVProgressHUD/SVRadialGradientLayer.m; sourceTree = \"<group>\"; };\n\t\tEBCCDDCFD3DA396C62681DC281319765 /* HUPhotoPicker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"HUPhotoPicker-dummy.m\"; sourceTree = \"<group>\"; };\n\t\tEE05B0A93E7AC961E35AFD6B72A43F53 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };\n\t\tEF9E2A9B5D26C80D040D929EE90F0842 /* Pods-HUPhotoBrowser DemoTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = \"Pods-HUPhotoBrowser DemoTests-resources.sh\"; sourceTree = \"<group>\"; };\n\t\tF057D640CB9E60D7D53423DD283C9A4B /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = \"SDWebImage-dummy.m\"; sourceTree = \"<group>\"; };\n\t\tF0DACE5743EF9203F95EDC4F0FF77FC3 /* UIView+HUConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = \"UIView+HUConstraint.m\"; path = \"HUPhotoPicker/Classes/UIView+HUConstraint.m\"; sourceTree = \"<group>\"; };\n\t\tF157F1452E6D4EAE236DA49C7C0E894B /* hu_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hu_const.h; path = HUPhotoBrowser/hu_const.h; sourceTree = \"<group>\"; };\n\t\tF40275D281978286F1EF17FFD2F1EE13 /* libPods-HUPhotoBrowser Demo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = \"libPods-HUPhotoBrowser Demo.a\"; path = \"libPods-HUPhotoBrowser Demo.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tF475A7C707C8FB377AC19C870CEAFFF2 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = \"<group>\"; };\n\t\tF48C3A3A0784AB826CDC951A03656357 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIButton+WebCache.h\"; path = \"SDWebImage/UIButton+WebCache.h\"; sourceTree = \"<group>\"; };\n\t\tF527FE5669CA594E88CADC793838CDAF /* HUPhotoAlbum.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPhotoAlbum.m; path = HUPhotoPicker/Classes/HUPhotoAlbum.m; sourceTree = \"<group>\"; };\n\t\tF69008F697735A74BE8C45DDAEF29A41 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"UIImage+MultiFormat.h\"; path = \"SDWebImage/UIImage+MultiFormat.h\"; sourceTree = \"<group>\"; };\n\t\tF7A0250C4B3D552BA4CADE666439B13D /* HUPhotoBrowser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HUPhotoBrowser.m; path = HUPhotoBrowser/HUPhotoBrowser.m; sourceTree = \"<group>\"; };\n\t\tFB68DA04853D2044F150D9165DD4AD40 /* NSBundle+HUPicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = \"NSBundle+HUPicker.h\"; path = \"HUPhotoPicker/Classes/NSBundle+HUPicker.h\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t063B674068CF89B7BFAB7DAB46D19676 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t5BA328FA29936FC6602FA2AC66CA7023 /* Foundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t095D2746327D112F8F7CBD22F201924D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA2B42E2B533938834E83B3957FA83837 /* AssetsLibrary.framework in Frameworks */,\n\t\t\t\t65CEECC1600B3EB655A0EB242D354A88 /* Foundation.framework in Frameworks */,\n\t\t\t\tDBC6A6834B7CA85141141A9FC59E08C7 /* Photos.framework in Frameworks */,\n\t\t\t\t5DCEE92ACF66523B2A394A8FCD937EA5 /* UIKit.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t41D0CC7A5EFB3510D6C83AC852997328 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t152BF7BE0AA241A5C6BE4F608CA9E6A0 /* Foundation.framework in Frameworks */,\n\t\t\t\t1B055DEC5A93B3430137EDFD63E1A62E /* ImageIO.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t4263BA91AB5BCADF1771D24F8B500824 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t598BA4AEFD2B722B093B57F23D516DF1 /* Foundation.framework in Frameworks */,\n\t\t\t\t441F9F02296486E9F50BB59E0105966E /* Photos.framework in Frameworks */,\n\t\t\t\tC8FAE843C4BA0303449B6E4D579EDBED /* UIKit.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t47B8E4B05887106AD2FABDF9FDB9A1DE /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2FFFCBCE6865FEDD745574FD47A69FD6 /* Foundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t94C0498FB46DB156178D97C655D33798 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tF68052484B2C480C016CF638BDADF9B7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t8A96738F5A80EDF3797B7716F8F12E63 /* Foundation.framework in Frameworks */,\n\t\t\t\t873C75AB9B12A76E90DAF9EAB44A991C /* QuartzCore.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t0313090EF36336C32E2DBF682981D6E3 /* HUWebImageDownloader */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t293ACC9890E0C871FC279737AA8EF8D3 /* HUWebImage.h */,\n\t\t\t\tC9B410728A89C72F649567CB946115D1 /* HUWebImageDownloader.h */,\n\t\t\t\tBBCE812D3697587EE47CA1B5C2F315CC /* HUWebImageDownloader.m */,\n\t\t\t\t91040B2B94B6447A1D4D9387C627B02A /* HUWebImageDownloadOperation.h */,\n\t\t\t\t94DDDEAEFD125C897C744D5C9F295F28 /* HUWebImageDownloadOperation.m */,\n\t\t\t\t1D96800D9444348C9EF862C9797663E8 /* UIImage+HUExtension.h */,\n\t\t\t\t0AE18F7ECC383B6860F958FFE3E22296 /* UIImage+HUExtension.m */,\n\t\t\t\tC843E13541704A189B1DAD2DBC088F04 /* UIImageView+HUWebImage.h */,\n\t\t\t\t0ACFB56952A75327CCF7A9D285F61319 /* UIImageView+HUWebImage.m */,\n\t\t\t);\n\t\t\tname = HUWebImageDownloader;\n\t\t\tpath = HUPhotoBrowser/HUWebImageDownloader;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t19787ECAF53623DF874C61875B53D08D /* iOS */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t171418DC06B5B64C6711C5E5FEFC5197 /* Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD958A56255E71ADC24D80C094DAC1A7A /* NSData+ImageContentType.h */,\n\t\t\t\tD4E456D947C1E3759C029BA645213B74 /* NSData+ImageContentType.m */,\n\t\t\t\t21F56FEF368B49D93D7E4F418AAE8296 /* NSImage+WebCache.h */,\n\t\t\t\t919847A9F94E2FACD0E3E3CB08A71F90 /* NSImage+WebCache.m */,\n\t\t\t\t17F5F8ED6AD15C8E85169BF85D772348 /* SDImageCache.h */,\n\t\t\t\tD7387A90A4E52BF5ADF9DC82A56D31E2 /* SDImageCache.m */,\n\t\t\t\t19064ABD4D32F1FA7743601441F135D1 /* SDImageCacheConfig.h */,\n\t\t\t\t61CE96D2977D382BDBEF6EB6C360CAA5 /* SDImageCacheConfig.m */,\n\t\t\t\t0687350693844A2E9E522786088D90F3 /* SDWebImageCompat.h */,\n\t\t\t\t545C51AB7AB0CB14DF4ECCA613BAFEA5 /* SDWebImageCompat.m */,\n\t\t\t\t5440CAABC38EE84F75266A36CB50E346 /* SDWebImageDecoder.h */,\n\t\t\t\t4E825E9268F7A21ED4A10CACA6DAC8C9 /* SDWebImageDecoder.m */,\n\t\t\t\tF475A7C707C8FB377AC19C870CEAFFF2 /* SDWebImageDownloader.h */,\n\t\t\t\t9B2BFA65B10054FC241F1C3ABB96E68B /* SDWebImageDownloader.m */,\n\t\t\t\t5DCC6D86420229BFAB1F056871A12607 /* SDWebImageDownloaderOperation.h */,\n\t\t\t\t45587FF486C1EEDF876807B8E8CC935E /* SDWebImageDownloaderOperation.m */,\n\t\t\t\t4C6DFDC2D8A016511F4AED26F3544CF6 /* SDWebImageManager.h */,\n\t\t\t\t441D9E0D8C2033CBCB8EBD66CB4EDC11 /* SDWebImageManager.m */,\n\t\t\t\t5FFA0F53632825CF88AB2EB6B22A7F07 /* SDWebImageOperation.h */,\n\t\t\t\t00C800A6F02590F678225961616F0E14 /* SDWebImagePrefetcher.h */,\n\t\t\t\t3F0FBC46E4BB9737994EE2E35E6E07A4 /* SDWebImagePrefetcher.m */,\n\t\t\t\tF48C3A3A0784AB826CDC951A03656357 /* UIButton+WebCache.h */,\n\t\t\t\tDE8F32142A47511484566FE4535744C4 /* UIButton+WebCache.m */,\n\t\t\t\tE31DD5A02B0033EA77659E77DFEDD15A /* UIImage+GIF.h */,\n\t\t\t\t8B38EF6EE351405BFF1A723C71A0CF97 /* UIImage+GIF.m */,\n\t\t\t\tF69008F697735A74BE8C45DDAEF29A41 /* UIImage+MultiFormat.h */,\n\t\t\t\t9A68BB2127299F79461E6F6B3AB52869 /* UIImage+MultiFormat.m */,\n\t\t\t\t286D66F5AAD3686AC8D9AB22677CBCE9 /* UIImageView+HighlightedWebCache.h */,\n\t\t\t\t9B9BF87558582615F2810E72AC339206 /* UIImageView+HighlightedWebCache.m */,\n\t\t\t\t2F476C600975412D143CA6797F9B48AF /* UIImageView+WebCache.h */,\n\t\t\t\t20FB595B908B4DA42B12C10B3B74A2FA /* UIImageView+WebCache.m */,\n\t\t\t\tAF0D9B0557E593C2184912CC905AA5E1 /* UIView+WebCache.h */,\n\t\t\t\t4C796604D26CF43514817953954C5AF9 /* UIView+WebCache.m */,\n\t\t\t\t08214ABFFF911AC79EAD4722979DDB29 /* UIView+WebCacheOperation.h */,\n\t\t\t\t34B7D74B34C33201DFB7105711BABE76 /* UIView+WebCacheOperation.m */,\n\t\t\t);\n\t\t\tname = Core;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t19787ECAF53623DF874C61875B53D08D /* iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tD2F66A76856B26ADEC9C3296F0FE0B5A /* AssetsLibrary.framework */,\n\t\t\t\tA686FEEDCC01B1622154D0E4BEB71DAA /* Foundation.framework */,\n\t\t\t\t34F8305A2C6089188628736DDD2F370A /* ImageIO.framework */,\n\t\t\t\t804666883EC6B1A30EE2C0C21974EA4E /* Photos.framework */,\n\t\t\t\tC4F9ECEA64607144F85BC468769B68C2 /* QuartzCore.framework */,\n\t\t\t\tEE05B0A93E7AC961E35AFD6B72A43F53 /* UIKit.framework */,\n\t\t\t);\n\t\t\tname = iOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t1E9E8D26106091BD0A1AF0E73CC18238 /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7A7A9D3DA9027E12C10548EB5B176F39 /* HUPhotoPicker */,\n\t\t\t\tC141E24DAE503BE8A1C686D6407C04DC /* SDWebImage */,\n\t\t\t\t8563363B161204C619CD121C1456AD0E /* SVProgressHUD */,\n\t\t\t);\n\t\t\tname = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t334FE9B6CB0E7FFB4B425A33D010C366 /* Support Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAEC8F5C50FA9C44CF017CDCDCBA68D75 /* SDWebImage.xcconfig */,\n\t\t\t\tF057D640CB9E60D7D53423DD283C9A4B /* SDWebImage-dummy.m */,\n\t\t\t\t3999B1A812D487DC85FA889ED46EED0C /* SDWebImage-prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Support Files\";\n\t\t\tpath = \"../Target Support Files/SDWebImage\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65B20E1911D3952C4690E2D9624E3A12 /* Resources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3A7B323C6C7AA5954DD661A569FA77CD /* album_close_icon@2x.png */,\n\t\t\t\tC86AB20D8D71D526A8202973E9A1F545 /* album_close_icon@3x.png */,\n\t\t\t\tA4D56D45B44D3173C51062AD8CE60193 /* album_open_icon@2x.png */,\n\t\t\t\tA316B140C3B1474605CDE6512EA540FA /* album_open_icon@3x.png */,\n\t\t\t\tC28CA3BBDBA583094087A2890A7C7FE0 /* album_photograph_icon@2x.png */,\n\t\t\t\t73B08799CBB6E6C520DFDC31692B4B3A /* album_photograph_icon@3x.png */,\n\t\t\t\t51C9CC5C6680C06B24AEC9DF433CC87C /* HUAlbumCell.xib */,\n\t\t\t\tC137D78D8E705BFC3E79578F84BA3413 /* image_selected@2x.png */,\n\t\t\t\tD68944CA5223A84064F95C057951163C /* image_selected@3x.png */,\n\t\t\t\tC68E7235956D835ADFBE6514D8E96EFA /* Jurisdiction_icon@2x.png */,\n\t\t\t\t0C2818BB53593BDAB01B9BE25C54FB07 /* Jurisdiction_icon@3x.png */,\n\t\t\t\tC3D0023A3AA419520B006770CC4B9FD4 /* nav_back@2x.png */,\n\t\t\t\t9B6C41B0E78CD3F337D9DA8131A22914 /* nav_back@3x.png */,\n\t\t\t\tB6BCF7F14A2A289DFB89DA8D608C1796 /* photo_button_normal@2x.png */,\n\t\t\t\tBDADDF678F3ECC6FEB0547730DB2AF2D /* photo_button_normal@3x.png */,\n\t\t\t\t703F045B6E13F9E59046173B939701EC /* photo_button_selected@2x.png */,\n\t\t\t\tE25CC34B1906BD764E3B6AF5807B0175 /* photo_button_selected@3x.png */,\n\t\t\t);\n\t\t\tname = Resources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t687C06316E780C503C03DE72FFF157D8 /* Resources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t90B6845A1227E66671DC5581A96EB9F6 /* SVProgressHUD.bundle */,\n\t\t\t);\n\t\t\tname = Resources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t72C0920D2EF08E5B40D7784A8BFE23D7 /* Development Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tF4206806B2C20A1252CCC9E9F647F909 /* HUPhotoBrowser */,\n\t\t\t);\n\t\t\tname = \"Development Pods\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7593731E7B5C3D86B3F569016D3EA381 /* Support Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3AEF36E1AC343442B9AD72564C0B21A8 /* HUPhotoBrowser.xcconfig */,\n\t\t\t\tA524D07B783D67E8F7BC7A33A47770AE /* HUPhotoBrowser-dummy.m */,\n\t\t\t\tCA6CD145963CCB8E08499D36ECDCCB66 /* HUPhotoBrowser-prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Support Files\";\n\t\t\tpath = \"Example/Pods/Target Support Files/HUPhotoBrowser\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7A7A9D3DA9027E12C10548EB5B176F39 /* HUPhotoPicker */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t2A7056DF7B1C83091325D3DF07123CB6 /* Asset.h */,\n\t\t\t\t2E14F497E11E651AC49123BA06F5ED79 /* HUAlbumCell.h */,\n\t\t\t\t9BAD901633A161CB4C35C1A9466869C3 /* HUAlbumCell.m */,\n\t\t\t\t4D9DC81E5EBE3E1913E938646E03C2E9 /* HUAlbumTableViewController.h */,\n\t\t\t\t3C61601A866B0B6F3B1CC15879939A46 /* HUAlbumTableViewController.m */,\n\t\t\t\t69AED5B69BC460F980416E86560D5348 /* HUImageGridCell.h */,\n\t\t\t\t13320B73B1EEDEC7054B6BA67D32D4EB /* HUImageGridCell.m */,\n\t\t\t\tBE78CD177B2F07E683BFE658848BA2A0 /* HUImageGridViewController.h */,\n\t\t\t\tAFDEF6B3F68ABAD646B955014670B32D /* HUImageGridViewController.m */,\n\t\t\t\t6E8491134C958BC38C9F082D5CE0C36B /* HUImagePickerViewController.h */,\n\t\t\t\tD6B30683558D738F4DE543582F7189B1 /* HUImagePickerViewController.m */,\n\t\t\t\t7CE6CBF80A2939FE6F1C7C149A1C1F4A /* HUImageSelectModel.h */,\n\t\t\t\tD2A1832C622E09402E5443E39EEB7C17 /* HUImageSelectModel.m */,\n\t\t\t\tA2D3BF58C096E8B3557DBD41DD70D03B /* HUNavTitleView.h */,\n\t\t\t\t3CA2109BCE58B9B9827024FE7D6C2905 /* HUNavTitleView.m */,\n\t\t\t\t02090B8A152D8EA57D43A1D41FC3FAE1 /* HUPHAuthorizationNotDeterminedView.h */,\n\t\t\t\t56232916A8D191E1DEB3601409A09124 /* HUPHAuthorizationNotDeterminedView.m */,\n\t\t\t\t49A6EFC2685278E2DF77BF2A0DDBE083 /* HUPHAuthorizationNotDeterminedViewController.h */,\n\t\t\t\tC6EAE39BE0B78BD51FA0C8578DFC6215 /* HUPHAuthorizationNotDeterminedViewController.m */,\n\t\t\t\t10F59DBE0AF6AAF69E10F159B417661A /* HUPhotoAlbum.h */,\n\t\t\t\tF527FE5669CA594E88CADC793838CDAF /* HUPhotoAlbum.m */,\n\t\t\t\t13B5E72269741E51831AA307A834D172 /* HUPhotoManager.h */,\n\t\t\t\t0DA652A6053BD21B7B631581A9AE77F8 /* HUPhotoManager.m */,\n\t\t\t\tD49449D610A39E04D4C2A121F5E4FD32 /* HUPhotoPicker.h */,\n\t\t\t\t1277B0BF2774C41E61B74F8F3F084D87 /* HUTakePhotoCell.h */,\n\t\t\t\tD9EB29BC0DA93559B0D44D7C78426356 /* HUTakePhotoCell.m */,\n\t\t\t\t9103C49F8D840C91E18ED85756AB0BBB /* HUToast.h */,\n\t\t\t\tBEF559DE20B55C84DA7DE88F2DC3674F /* HUToast.m */,\n\t\t\t\tFB68DA04853D2044F150D9165DD4AD40 /* NSBundle+HUPicker.h */,\n\t\t\t\t8AE15A73A5C43C841A105D61C78AC511 /* NSBundle+HUPicker.m */,\n\t\t\t\t8A9A3289CAC5E7F9A6A2E7A0833F5790 /* UIBarButtonItem+HUButton.h */,\n\t\t\t\t94E349128851E2C8898702890C40F4F9 /* UIBarButtonItem+HUButton.m */,\n\t\t\t\t6DC223C3C761C783185E1FFB1A7A05E3 /* UIView+HUConstraint.h */,\n\t\t\t\tF0DACE5743EF9203F95EDC4F0FF77FC3 /* UIView+HUConstraint.m */,\n\t\t\t\t65B20E1911D3952C4690E2D9624E3A12 /* Resources */,\n\t\t\t\tF682F651A42C817B34DE17ECE43BAAE0 /* Support Files */,\n\t\t\t);\n\t\t\tname = HUPhotoPicker;\n\t\t\tpath = HUPhotoPicker;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7DB346D0F39D3F0E887471402A8071AB = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */,\n\t\t\t\t72C0920D2EF08E5B40D7784A8BFE23D7 /* Development Pods */,\n\t\t\t\t0F75DF6C7C5F002280EC53F48E80B587 /* Frameworks */,\n\t\t\t\t1E9E8D26106091BD0A1AF0E73CC18238 /* Pods */,\n\t\t\t\tB49F57C580B2CCB2292C58C91277F4A9 /* Products */,\n\t\t\t\tF248E4B88C8D370AF4CF4006577CE639 /* Targets Support Files */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t8563363B161204C619CD121C1456AD0E /* SVProgressHUD */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7787CCB41A739DF35AC7AF65005F5384 /* SVIndefiniteAnimatedView.h */,\n\t\t\t\tA6872A62128DF0B9C337DD8EB551B99F /* SVIndefiniteAnimatedView.m */,\n\t\t\t\t865ECDF17E5F581EC036DA88C8EA5EC6 /* SVProgressAnimatedView.h */,\n\t\t\t\t3BFA6105989E1129CE256E52520269E1 /* SVProgressAnimatedView.m */,\n\t\t\t\t753A0AD8EE029D65DDC636A68F7A5D56 /* SVProgressHUD.h */,\n\t\t\t\t1C51BE05478A10C56BD6FF53686494E7 /* SVProgressHUD.m */,\n\t\t\t\tC1D4A6B3E3FA774837EEE83CCC78A605 /* SVRadialGradientLayer.h */,\n\t\t\t\tEBB4E8043E0015F89FDA55D0CA569CC4 /* SVRadialGradientLayer.m */,\n\t\t\t\t687C06316E780C503C03DE72FFF157D8 /* Resources */,\n\t\t\t\tC98B5D2FB360673444C19E9D0A391537 /* Support Files */,\n\t\t\t);\n\t\t\tname = SVProgressHUD;\n\t\t\tpath = SVProgressHUD;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tB49F57C580B2CCB2292C58C91277F4A9 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t17F3D3D171070259473E37C17EC3308E /* HUPhotoPicker.bundle */,\n\t\t\t\t0CECA8E62DF6B3D72EBDAB13B981D010 /* libHUPhotoBrowser.a */,\n\t\t\t\tCEE283977FB59654D573A812CE050DE1 /* libHUPhotoPicker.a */,\n\t\t\t\tF40275D281978286F1EF17FFD2F1EE13 /* libPods-HUPhotoBrowser Demo.a */,\n\t\t\t\t7A7709F2BB2881894A4943D95A289521 /* libPods-HUPhotoBrowser DemoTests.a */,\n\t\t\t\t86EB8878AB1588D8FA0267B6BE6C0FCC /* libSDWebImage.a */,\n\t\t\t\t0F6B03278E85DE641CB5405289304121 /* libSVProgressHUD.a */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC13FB43381584AC30D896899D52394C3 /* Pods-HUPhotoBrowser Demo */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t895A080761ACCC7F75D47125CB036CDD /* Pods-HUPhotoBrowser Demo-acknowledgements.markdown */,\n\t\t\t\t77001B333D5BD6024B8AD5FA9543880D /* Pods-HUPhotoBrowser Demo-acknowledgements.plist */,\n\t\t\t\t2A39260F4921A34460754C96BF086B62 /* Pods-HUPhotoBrowser Demo-dummy.m */,\n\t\t\t\tCB4C960A4ED6443011407CED0D78F10A /* Pods-HUPhotoBrowser Demo-frameworks.sh */,\n\t\t\t\t69B7717C3661262547C2C6D471CC6BAC /* Pods-HUPhotoBrowser Demo-resources.sh */,\n\t\t\t\t4FF76196D9A0CB2559E6874B8EEF173B /* Pods-HUPhotoBrowser Demo.debug.xcconfig */,\n\t\t\t\tDB229E87D174F577903EA3558BBCFFE8 /* Pods-HUPhotoBrowser Demo.release.xcconfig */,\n\t\t\t);\n\t\t\tname = \"Pods-HUPhotoBrowser Demo\";\n\t\t\tpath = \"Target Support Files/Pods-HUPhotoBrowser Demo\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC141E24DAE503BE8A1C686D6407C04DC /* SDWebImage */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t171418DC06B5B64C6711C5E5FEFC5197 /* Core */,\n\t\t\t\t334FE9B6CB0E7FFB4B425A33D010C366 /* Support Files */,\n\t\t\t);\n\t\t\tname = SDWebImage;\n\t\t\tpath = SDWebImage;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC98B5D2FB360673444C19E9D0A391537 /* Support Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0D54E71FD9E8FE32D095B20904DE434C /* SVProgressHUD.xcconfig */,\n\t\t\t\t2B72FB7B35A719AFAD18FAA1C4F6EDAC /* SVProgressHUD-dummy.m */,\n\t\t\t\tC913A7B67CFC7768421A5A3DC7F2D166 /* SVProgressHUD-prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Support Files\";\n\t\t\tpath = \"../Target Support Files/SVProgressHUD\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE7C2E1910DB4FFCA95881AED687FDB64 /* Pods-HUPhotoBrowser DemoTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t14E9CC31888031CF04ADADBFC41C548F /* Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown */,\n\t\t\t\t183AA6FF36B86D6F3D84C9F33EC0E537 /* Pods-HUPhotoBrowser DemoTests-acknowledgements.plist */,\n\t\t\t\t224779CFFFD95B16021CB8EA8C4F9BBD /* Pods-HUPhotoBrowser DemoTests-dummy.m */,\n\t\t\t\t33DFF64EE6E05602EBA5701E00859628 /* Pods-HUPhotoBrowser DemoTests-frameworks.sh */,\n\t\t\t\tEF9E2A9B5D26C80D040D929EE90F0842 /* Pods-HUPhotoBrowser DemoTests-resources.sh */,\n\t\t\t\t7F8B57C69320D79163431A32CD7C2404 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */,\n\t\t\t\t13917CA1D52B803DA4188D30BE4F189D /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */,\n\t\t\t);\n\t\t\tname = \"Pods-HUPhotoBrowser DemoTests\";\n\t\t\tpath = \"Target Support Files/Pods-HUPhotoBrowser DemoTests\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tF248E4B88C8D370AF4CF4006577CE639 /* Targets Support Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC13FB43381584AC30D896899D52394C3 /* Pods-HUPhotoBrowser Demo */,\n\t\t\t\tE7C2E1910DB4FFCA95881AED687FDB64 /* Pods-HUPhotoBrowser DemoTests */,\n\t\t\t);\n\t\t\tname = \"Targets Support Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tF4206806B2C20A1252CCC9E9F647F909 /* HUPhotoBrowser */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tF157F1452E6D4EAE236DA49C7C0E894B /* hu_const.h */,\n\t\t\t\t1A5EB8FFE503BA9B41DE8F099A20CC64 /* HUPhotoBrowser.h */,\n\t\t\t\tF7A0250C4B3D552BA4CADE666439B13D /* HUPhotoBrowser.m */,\n\t\t\t\t1B6A27FBC85A69196B8297F1235D2027 /* HUPhotoBrowserCell.h */,\n\t\t\t\t4A8EC596D9BEBB2A682737B6979B9945 /* HUPhotoBrowserCell.m */,\n\t\t\t\t1EB976DB4DE69AA197DACE8A0AE44DEA /* UIView+frame.h */,\n\t\t\t\t5FBCA5CAA0922972DB941FA957456C36 /* UIView+frame.m */,\n\t\t\t\t0313090EF36336C32E2DBF682981D6E3 /* HUWebImageDownloader */,\n\t\t\t\t7593731E7B5C3D86B3F569016D3EA381 /* Support Files */,\n\t\t\t);\n\t\t\tname = HUPhotoBrowser;\n\t\t\tpath = ../..;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tF682F651A42C817B34DE17ECE43BAAE0 /* Support Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t78840C91637E1D69D68C079ABE539DF4 /* HUPhotoPicker.xcconfig */,\n\t\t\t\tEBCCDDCFD3DA396C62681DC281319765 /* HUPhotoPicker-dummy.m */,\n\t\t\t\tBCDA6B8A731D286647BA9FE57E672D58 /* HUPhotoPicker-prefix.pch */,\n\t\t\t\tBD226A51E4C093FE0AA6EB24430D4C53 /* ResourceBundle-HUPhotoPicker-Info.plist */,\n\t\t\t);\n\t\t\tname = \"Support Files\";\n\t\t\tpath = \"../Target Support Files/HUPhotoPicker\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\tC833D1D1AEE942105B1A1C3FA5E85408 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t91AB44B5B7DB95A7BA5B5B5D3DAF775D /* Asset.h in Headers */,\n\t\t\t\t53A14922CA39A52C1926D0246C2BB1F0 /* HUAlbumCell.h in Headers */,\n\t\t\t\t154E25C8A639BD2855EF6ED1CE1311D0 /* HUAlbumTableViewController.h in Headers */,\n\t\t\t\t671D941A03C1E763513AAA4857DC51BD /* HUImageGridCell.h in Headers */,\n\t\t\t\tC7CA5364C6A3B19A1590369A9FC85A65 /* HUImageGridViewController.h in Headers */,\n\t\t\t\t694DC69113D8FC517034EC5FBC00950A /* HUImagePickerViewController.h in Headers */,\n\t\t\t\t79996630838668D04EA3BFB57560995E /* HUImageSelectModel.h in Headers */,\n\t\t\t\t62E71CA9C06816E2FB7E729AF2283634 /* HUNavTitleView.h in Headers */,\n\t\t\t\t7E813E032E1B31658FCF923F78B479B5 /* HUPHAuthorizationNotDeterminedView.h in Headers */,\n\t\t\t\tD6B3DEABE7F25211FF3923A5F2116532 /* HUPHAuthorizationNotDeterminedViewController.h in Headers */,\n\t\t\t\t822C18350931407D1EE15B2BB719E3F3 /* HUPhotoAlbum.h in Headers */,\n\t\t\t\t86FB723DD88559EC1E288B9FA5B7EE4A /* HUPhotoManager.h in Headers */,\n\t\t\t\t8392C6FF89FEE6B0FB3042AA0925313D /* HUPhotoPicker.h in Headers */,\n\t\t\t\tA63D39295D405569DCE488454011DBAB /* HUTakePhotoCell.h in Headers */,\n\t\t\t\t66DECE27B5EF416042C9FF26AD43EF00 /* HUToast.h in Headers */,\n\t\t\t\t4B8779A43D1E81C6FFE4593B5F8D6288 /* NSBundle+HUPicker.h in Headers */,\n\t\t\t\tD9746CBC85CFFE20D7E72B131EB4F8D0 /* UIBarButtonItem+HUButton.h in Headers */,\n\t\t\t\tD9D4B596A996B4F4AC367E8CA9209AF8 /* UIView+HUConstraint.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tE269ABD59815D8090277FDC9CB16E700 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t746F598854C3DB3E9DB0D0726148FD94 /* hu_const.h in Headers */,\n\t\t\t\tFCB0CF77447303B45928AB44BA7B4973 /* HUPhotoBrowser.h in Headers */,\n\t\t\t\t91D498E3B268ECC94289A8EBE57FDB14 /* HUPhotoBrowserCell.h in Headers */,\n\t\t\t\tBC0BFD421A71955FE7C83DC3EAC0BBCB /* HUWebImage.h in Headers */,\n\t\t\t\tC3518915CEB45A87EF5DCAFC9F93696E /* HUWebImageDownloader.h in Headers */,\n\t\t\t\t1C531B0E4A281E5F1CCFD426B5C59F50 /* HUWebImageDownloadOperation.h in Headers */,\n\t\t\t\tBD16BBCD6291F236455D1FBC72D33281 /* UIImage+HUExtension.h in Headers */,\n\t\t\t\tB68A1F5A13355D589240D8E774D7F10D /* UIImageView+HUWebImage.h in Headers */,\n\t\t\t\tE1A09732EB1D4DEE543E57BC9E75B181 /* UIView+frame.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tEEB07E5BA3422DDE3C45990A51895A12 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t909372963DBA08C68992835EB86061EA /* NSData+ImageContentType.h in Headers */,\n\t\t\t\t13944C33461BCA0868BC17FC8D7E6252 /* NSImage+WebCache.h in Headers */,\n\t\t\t\t8B6C609B4E035A892066DC53BBFB119E /* SDImageCache.h in Headers */,\n\t\t\t\t9EA3B8E135E065F0914BEB70EDFE6775 /* SDImageCacheConfig.h in Headers */,\n\t\t\t\t580058559154D3B6A975DDAE7EFBA3C5 /* SDWebImageCompat.h in Headers */,\n\t\t\t\t935F70349715265D86E8FD0597447AC5 /* SDWebImageDecoder.h in Headers */,\n\t\t\t\t6169115EC8E6EFE24CFCEF5D1E02D736 /* SDWebImageDownloader.h in Headers */,\n\t\t\t\tA7DB2E7B837586BE06497232D65B3BA8 /* SDWebImageDownloaderOperation.h in Headers */,\n\t\t\t\tB45672895B70B90CBB854A69850A112F /* SDWebImageManager.h in Headers */,\n\t\t\t\tFDB4A416E19DF7AAF581FD0A2D0597A8 /* SDWebImageOperation.h in Headers */,\n\t\t\t\t053D329FAA96B749E2FD97CB6D096A85 /* SDWebImagePrefetcher.h in Headers */,\n\t\t\t\t36081993A921C1EECB74335B1EE0F34C /* UIButton+WebCache.h in Headers */,\n\t\t\t\tE91D8B354A89AC323FFB8E81B00780ED /* UIImage+GIF.h in Headers */,\n\t\t\t\t83C575C5E394FD4869BEAE2FE3FD5B02 /* UIImage+MultiFormat.h in Headers */,\n\t\t\t\t9BDE24BE44A77B9E0CB09814CE3941E3 /* UIImageView+HighlightedWebCache.h in Headers */,\n\t\t\t\tAA2B867A047A62006345CABCFC932C81 /* UIImageView+WebCache.h in Headers */,\n\t\t\t\t35D8BA8171A586B59D48614BCBC18DDA /* UIView+WebCache.h in Headers */,\n\t\t\t\t99B738B37205FF969C2BDB51627CD71A /* UIView+WebCacheOperation.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tF8C0AAF3DC5EDAB41DD5F48225CEAD49 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t2AC999D34D8A6DEECCC2D91261A67865 /* SVIndefiniteAnimatedView.h in Headers */,\n\t\t\t\t3E845D3F5BC22756CFE33576ECF38EDF /* SVProgressAnimatedView.h in Headers */,\n\t\t\t\t97EB8C5178E22A872B36A788152AA571 /* SVProgressHUD.h in Headers */,\n\t\t\t\tFD49D93DB71B5A970FEE2A166A3D24D0 /* SVRadialGradientLayer.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t156B947C8425573AB59F6FB4E33470DD /* SDWebImage */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 1CFE1EF6C9D0CD7F16160CFEEF22DC0B /* Build configuration list for PBXNativeTarget \"SDWebImage\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tAAD613155F792B1ADD908AC91B3E2D3B /* Sources */,\n\t\t\t\t41D0CC7A5EFB3510D6C83AC852997328 /* Frameworks */,\n\t\t\t\tEEB07E5BA3422DDE3C45990A51895A12 /* Headers */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = SDWebImage;\n\t\t\tproductName = SDWebImage;\n\t\t\tproductReference = 86EB8878AB1588D8FA0267B6BE6C0FCC /* libSDWebImage.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n\t\t4772B77F4E0FA787DC9FD7562D377C5F /* HUPhotoPicker-HUPhotoPicker */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 01A81BE7749D71E2120346BFA3BACEF7 /* Build configuration list for PBXNativeTarget \"HUPhotoPicker-HUPhotoPicker\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tA513A3F7610B8DEE82E16BB9312A2C84 /* Sources */,\n\t\t\t\t94C0498FB46DB156178D97C655D33798 /* Frameworks */,\n\t\t\t\t97C9896AE3F6AD1770134355F813EDCD /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"HUPhotoPicker-HUPhotoPicker\";\n\t\t\tproductName = \"HUPhotoPicker-HUPhotoPicker\";\n\t\t\tproductReference = 17F3D3D171070259473E37C17EC3308E /* HUPhotoPicker.bundle */;\n\t\t\tproductType = \"com.apple.product-type.bundle\";\n\t\t};\n\t\tA967FC69F45B325EC7CF38A222A0F061 /* Pods-HUPhotoBrowser Demo */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 869C987873DBAD36D192B53483FD0EB2 /* Build configuration list for PBXNativeTarget \"Pods-HUPhotoBrowser Demo\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t8AA4BBF919CD430E8B00B1CA777D551D /* Sources */,\n\t\t\t\t47B8E4B05887106AD2FABDF9FDB9A1DE /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t1F651011E8A3C6EA78948E36FC5E84A2 /* PBXTargetDependency */,\n\t\t\t\tEC74BF93658F924EFF80CBC17CDFF3B2 /* PBXTargetDependency */,\n\t\t\t\t0B15C14E27ABC4FA96416EA9A433CD13 /* PBXTargetDependency */,\n\t\t\t\t417B3E9CF133B89A8FF2A217789AF193 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"Pods-HUPhotoBrowser Demo\";\n\t\t\tproductName = \"Pods-HUPhotoBrowser Demo\";\n\t\t\tproductReference = F40275D281978286F1EF17FFD2F1EE13 /* libPods-HUPhotoBrowser Demo.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n\t\tB006CA1FB9E74F505B0BC5CD2168B0BA /* HUPhotoPicker */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 0DD8A5F759F4079DEF53C494F2577FBD /* Build configuration list for PBXNativeTarget \"HUPhotoPicker\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t972D6D65117094EF26E3D25BD1A98931 /* Sources */,\n\t\t\t\t4263BA91AB5BCADF1771D24F8B500824 /* Frameworks */,\n\t\t\t\tC833D1D1AEE942105B1A1C3FA5E85408 /* Headers */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t63C04A309F7DFEBC58DE1F156B1B0EA5 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = HUPhotoPicker;\n\t\t\tproductName = HUPhotoPicker;\n\t\t\tproductReference = CEE283977FB59654D573A812CE050DE1 /* libHUPhotoPicker.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n\t\tE5C155FFDDFCD74237E4D301D504CD59 /* SVProgressHUD */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 9003DDA5075FE3C75CA206B7E041DA44 /* Build configuration list for PBXNativeTarget \"SVProgressHUD\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t02B4C68DA2988726742D262656479F9E /* Sources */,\n\t\t\t\tF68052484B2C480C016CF638BDADF9B7 /* Frameworks */,\n\t\t\t\tF8C0AAF3DC5EDAB41DD5F48225CEAD49 /* Headers */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = SVProgressHUD;\n\t\t\tproductName = SVProgressHUD;\n\t\t\tproductReference = 0F6B03278E85DE641CB5405289304121 /* libSVProgressHUD.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n\t\tF04AE9B453427EDFA1DD604800D07CDB /* Pods-HUPhotoBrowser DemoTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 49D9422F3E6B2B15945506AC7A664D58 /* Build configuration list for PBXNativeTarget \"Pods-HUPhotoBrowser DemoTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t0F85E94F8C0D2A54EC51AF10F44D15F6 /* Sources */,\n\t\t\t\t063B674068CF89B7BFAB7DAB46D19676 /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"Pods-HUPhotoBrowser DemoTests\";\n\t\t\tproductName = \"Pods-HUPhotoBrowser DemoTests\";\n\t\t\tproductReference = 7A7709F2BB2881894A4943D95A289521 /* libPods-HUPhotoBrowser DemoTests.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n\t\tF61EABE2A50F74AE114AA3F4367121A8 /* HUPhotoBrowser */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 9D555F1499957E226484E6F3D66A967C /* Build configuration list for PBXNativeTarget \"HUPhotoBrowser\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t54366A947FD33DEEBF300A7ACDB91720 /* Sources */,\n\t\t\t\t095D2746327D112F8F7CBD22F201924D /* Frameworks */,\n\t\t\t\tE269ABD59815D8090277FDC9CB16E700 /* Headers */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tADBD3F6F55D7EE158445FD3E0B8D71AE /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = HUPhotoBrowser;\n\t\t\tproductName = HUPhotoBrowser;\n\t\t\tproductReference = 0CECA8E62DF6B3D72EBDAB13B981D010 /* libHUPhotoBrowser.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tD41D8CD98F00B204E9800998ECF8427E /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0830;\n\t\t\t\tLastUpgradeCheck = 0700;\n\t\t\t};\n\t\t\tbuildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject \"Pods\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = 7DB346D0F39D3F0E887471402A8071AB;\n\t\t\tproductRefGroup = B49F57C580B2CCB2292C58C91277F4A9 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tF61EABE2A50F74AE114AA3F4367121A8 /* HUPhotoBrowser */,\n\t\t\t\tB006CA1FB9E74F505B0BC5CD2168B0BA /* HUPhotoPicker */,\n\t\t\t\t4772B77F4E0FA787DC9FD7562D377C5F /* HUPhotoPicker-HUPhotoPicker */,\n\t\t\t\tA967FC69F45B325EC7CF38A222A0F061 /* Pods-HUPhotoBrowser Demo */,\n\t\t\t\tF04AE9B453427EDFA1DD604800D07CDB /* Pods-HUPhotoBrowser DemoTests */,\n\t\t\t\t156B947C8425573AB59F6FB4E33470DD /* SDWebImage */,\n\t\t\t\tE5C155FFDDFCD74237E4D301D504CD59 /* SVProgressHUD */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t97C9896AE3F6AD1770134355F813EDCD /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1D14675094EB2982854BBDE56D642F7F /* album_close_icon@2x.png in Resources */,\n\t\t\t\t6A2EE1939C21B95571A77B65094E505D /* album_close_icon@3x.png in Resources */,\n\t\t\t\t93E2D3CD516D98158E5D06EAD5EF4868 /* album_open_icon@2x.png in Resources */,\n\t\t\t\tC86C2E7953283ED2B5B845B676B038AC /* album_open_icon@3x.png in Resources */,\n\t\t\t\tA3E65E80FAA621CA37687E721E440540 /* album_photograph_icon@2x.png in Resources */,\n\t\t\t\t400FEBC5B5E78F7BC76B9FB21DC02912 /* album_photograph_icon@3x.png in Resources */,\n\t\t\t\t8E653B2F5B6D7E3A285833A5888AC3D6 /* HUAlbumCell.xib in Resources */,\n\t\t\t\t24AC460FDE1C0610A111CCF67FC835D8 /* image_selected@2x.png in Resources */,\n\t\t\t\t2C61EAC4DA7890F245FBD68AE417C4CA /* image_selected@3x.png in Resources */,\n\t\t\t\t78DBC6F454ABC5112579DF6275C4461A /* Jurisdiction_icon@2x.png in Resources */,\n\t\t\t\t3A7A90BB67EA1197192AC12C57CB9585 /* Jurisdiction_icon@3x.png in Resources */,\n\t\t\t\t35C11FA48B4F1C25AEC21C72FFDF51B5 /* nav_back@2x.png in Resources */,\n\t\t\t\t12B9BC6E6EC8792296CED4F0C56ED6E2 /* nav_back@3x.png in Resources */,\n\t\t\t\tA3F0B52FC22E648C3D8783934613B1BA /* photo_button_normal@2x.png in Resources */,\n\t\t\t\tA0CC6C2D247E55AE7E6E4CE552C7B270 /* photo_button_normal@3x.png in Resources */,\n\t\t\t\t4DAB2E3EAFE5D4EF3806D2A76036F4FF /* photo_button_selected@2x.png in Resources */,\n\t\t\t\tF22AFC90A1EA932CB3EB26F29B6181C5 /* photo_button_selected@3x.png in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t02B4C68DA2988726742D262656479F9E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tDF3321CF3E41B83F87AAD7F08BC3C764 /* SVIndefiniteAnimatedView.m in Sources */,\n\t\t\t\t841A407A7C5DC32F91DA0EB3D8014C2E /* SVProgressAnimatedView.m in Sources */,\n\t\t\t\t7E071687325BF5B296A25A75974490C3 /* SVProgressHUD-dummy.m in Sources */,\n\t\t\t\t0CE6A5C6B62A9FD71E66BD0B202273A4 /* SVProgressHUD.m in Sources */,\n\t\t\t\t0801E52B09E882BB1E2441347E566214 /* SVRadialGradientLayer.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t0F85E94F8C0D2A54EC51AF10F44D15F6 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tF7E2ED980B54D1F1209B33A72877F145 /* Pods-HUPhotoBrowser DemoTests-dummy.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t54366A947FD33DEEBF300A7ACDB91720 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t1241C92252F5500B6FA1782A66AF6432 /* HUPhotoBrowser-dummy.m in Sources */,\n\t\t\t\t98C136139F278CFA1281924A853F23F0 /* HUPhotoBrowser.m in Sources */,\n\t\t\t\tCDC033EC56BCF03AB75E7DCB77B8AC39 /* HUPhotoBrowserCell.m in Sources */,\n\t\t\t\t5D4A489B188F4BCA1B89DE0F17BB8FA7 /* HUWebImageDownloader.m in Sources */,\n\t\t\t\tDC5D856B421A8DF82260E61BF79F08E8 /* HUWebImageDownloadOperation.m in Sources */,\n\t\t\t\t02735D8436E3DB9E7EA79694C58BE6F4 /* UIImage+HUExtension.m in Sources */,\n\t\t\t\tC58B4014568B8705E8A620707CA28F51 /* UIImageView+HUWebImage.m in Sources */,\n\t\t\t\t7C3459B05690C13218F9F23C827FE21A /* UIView+frame.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t8AA4BBF919CD430E8B00B1CA777D551D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA5D6462FB49CAFF292C5EDE70BD65784 /* Pods-HUPhotoBrowser Demo-dummy.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t972D6D65117094EF26E3D25BD1A98931 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA60F3472AD558A5C66E269AD32F0A160 /* HUAlbumCell.m in Sources */,\n\t\t\t\t74302A6E58181E6596A1BB389365F43F /* HUAlbumTableViewController.m in Sources */,\n\t\t\t\t2BD3489F5F1D3B0D47C57D3506A372F8 /* HUImageGridCell.m in Sources */,\n\t\t\t\t1E766D1CE8821B1AA0F0BA3769BD750E /* HUImageGridViewController.m in Sources */,\n\t\t\t\t5A90BA62A73A14336AE2A28E5D320B0A /* HUImagePickerViewController.m in Sources */,\n\t\t\t\t1E868873A8CF56F277977C0F28D6D54D /* HUImageSelectModel.m in Sources */,\n\t\t\t\tEA5C2EE172234721DA4FFBE1E3EFAA18 /* HUNavTitleView.m in Sources */,\n\t\t\t\t8CFB4E2A821C8946F972B52F14E1EAB3 /* HUPHAuthorizationNotDeterminedView.m in Sources */,\n\t\t\t\t66025EBA8B6D98C392958C8520F6D7E5 /* HUPHAuthorizationNotDeterminedViewController.m in Sources */,\n\t\t\t\t1DA19173FBBEE7D11EBFD489D002ECB3 /* HUPhotoAlbum.m in Sources */,\n\t\t\t\t605A413ED7A7834E43679FB47E2C1110 /* HUPhotoManager.m in Sources */,\n\t\t\t\tBBAEBB6AF61E7D4AD565BBF9FF8A16DB /* HUPhotoPicker-dummy.m in Sources */,\n\t\t\t\t0A4BFCC90ABBFF825C70EFE9F9B7CD34 /* HUTakePhotoCell.m in Sources */,\n\t\t\t\t3D9390CD8F716E217F034C87639ABBAD /* HUToast.m in Sources */,\n\t\t\t\tD02959EAAE84300F7DFFF1EF28CD4C2B /* NSBundle+HUPicker.m in Sources */,\n\t\t\t\tD779890F7370C5C5554D8094AA4C5A13 /* UIBarButtonItem+HUButton.m in Sources */,\n\t\t\t\t44315C1D5AA06EC4516CC016F4505054 /* UIView+HUConstraint.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tA513A3F7610B8DEE82E16BB9312A2C84 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tAAD613155F792B1ADD908AC91B3E2D3B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t768C9F5C502E68F2914072040FFA71E1 /* NSData+ImageContentType.m in Sources */,\n\t\t\t\t384A9AAA97DAB3A480C1DD84170AD1A8 /* NSImage+WebCache.m in Sources */,\n\t\t\t\tE283E46931867F7EBF81F3B55978CE76 /* SDImageCache.m in Sources */,\n\t\t\t\t41E3EC52537EB6280D7DE2DFEB19F369 /* SDImageCacheConfig.m in Sources */,\n\t\t\t\t9BC35B29E439FAC7E11246F5898D0BD1 /* SDWebImage-dummy.m in Sources */,\n\t\t\t\t086F8C085ABB04F9C8C5C422DFDF1412 /* SDWebImageCompat.m in Sources */,\n\t\t\t\tA0DB532409564F8DF18924EA2CBB0929 /* SDWebImageDecoder.m in Sources */,\n\t\t\t\t29CD90FDAAB316F204CEEAFB5564A5A7 /* SDWebImageDownloader.m in Sources */,\n\t\t\t\t8BAB9550CAA0B5A7EA5F2F828130E136 /* SDWebImageDownloaderOperation.m in Sources */,\n\t\t\t\t0615F5F2ABF3C6D02B66F471EAEE37BA /* SDWebImageManager.m in Sources */,\n\t\t\t\t641BF2B026B2E09570949CEAAA1CEC79 /* SDWebImagePrefetcher.m in Sources */,\n\t\t\t\t527E140533AFB0472E5D59561053EDD2 /* UIButton+WebCache.m in Sources */,\n\t\t\t\tCDBA2121509F504062E1BDF268CB6D58 /* UIImage+GIF.m in Sources */,\n\t\t\t\t0B674BD1EC01B2F2E5B86BC361C2032B /* UIImage+MultiFormat.m in Sources */,\n\t\t\t\t8DC69158558D4AB7EE00575DA0CDD675 /* UIImageView+HighlightedWebCache.m in Sources */,\n\t\t\t\t65B63AB881AA74C306596717363C5E0F /* UIImageView+WebCache.m in Sources */,\n\t\t\t\t814F5D3D6EE077DCD1A25EDF6DB63CAA /* UIView+WebCache.m in Sources */,\n\t\t\t\tEB3B763E8A293AC718BF7B221FCAF395 /* UIView+WebCacheOperation.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t0B15C14E27ABC4FA96416EA9A433CD13 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = SDWebImage;\n\t\t\ttarget = 156B947C8425573AB59F6FB4E33470DD /* SDWebImage */;\n\t\t\ttargetProxy = 790BB20FF7770EDCDBFB4B49BC5FB78B /* PBXContainerItemProxy */;\n\t\t};\n\t\t1F651011E8A3C6EA78948E36FC5E84A2 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = HUPhotoBrowser;\n\t\t\ttarget = F61EABE2A50F74AE114AA3F4367121A8 /* HUPhotoBrowser */;\n\t\t\ttargetProxy = EB5B8CC38E68E7B676CB7C254E06C558 /* PBXContainerItemProxy */;\n\t\t};\n\t\t417B3E9CF133B89A8FF2A217789AF193 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = SVProgressHUD;\n\t\t\ttarget = E5C155FFDDFCD74237E4D301D504CD59 /* SVProgressHUD */;\n\t\t\ttargetProxy = 951FFE9A507AEB3DD9B0AC20F7350526 /* PBXContainerItemProxy */;\n\t\t};\n\t\t63C04A309F7DFEBC58DE1F156B1B0EA5 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = \"HUPhotoPicker-HUPhotoPicker\";\n\t\t\ttarget = 4772B77F4E0FA787DC9FD7562D377C5F /* HUPhotoPicker-HUPhotoPicker */;\n\t\t\ttargetProxy = DE2931CB4A9D219A88807CD989EBA434 /* PBXContainerItemProxy */;\n\t\t};\n\t\tADBD3F6F55D7EE158445FD3E0B8D71AE /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = SVProgressHUD;\n\t\t\ttarget = E5C155FFDDFCD74237E4D301D504CD59 /* SVProgressHUD */;\n\t\t\ttargetProxy = 1DF3B04FD0110B3430E6B386516516E5 /* PBXContainerItemProxy */;\n\t\t};\n\t\tEC74BF93658F924EFF80CBC17CDFF3B2 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = HUPhotoPicker;\n\t\t\ttarget = B006CA1FB9E74F505B0BC5CD2168B0BA /* HUPhotoPicker */;\n\t\t\ttargetProxy = B3BDC557D51B9B0E3D9C0C7BDED7FF6F /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t0141343739AB373F60DF8691AFCD097C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 7F8B57C69320D79163431A32CD7C2404 /* Pods-HUPhotoBrowser DemoTests.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMACH_O_TYPE = staticlib;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPODS_ROOT = \"$(SRCROOT)\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t22377722B54CEA220B33075E180F68E1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 3AEF36E1AC343442B9AD72564C0B21A8 /* HUPhotoBrowser.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/HUPhotoBrowser/HUPhotoBrowser-prefix.pch\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 7.0;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPRIVATE_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t262ECDA72B399AD668790B59999BA38B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 13917CA1D52B803DA4188D30BE4F189D /* Pods-HUPhotoBrowser DemoTests.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMACH_O_TYPE = staticlib;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPODS_ROOT = \"$(SRCROOT)\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3E3922C790F227CB9358C41F82E4A577 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 78840C91637E1D69D68C079ABE539DF4 /* HUPhotoPicker.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/HUPhotoPicker/HUPhotoPicker-prefix.pch\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPRIVATE_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t414365BE408DDEB60DF35C2DA46DE1FD /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 0D54E71FD9E8FE32D095B20904DE434C /* SVProgressHUD.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/SVProgressHUD/SVProgressHUD-prefix.pch\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPRIVATE_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t4A2DD3DF4606A726BA33D4F4139283C9 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = AEC8F5C50FA9C44CF017CDCDCBA68D75 /* SDWebImage.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/SDWebImage/SDWebImage-prefix.pch\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 7.0;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPRIVATE_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t67458CA8CD34424F39F65F5F1FE37B8E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = DB229E87D174F577903EA3558BBCFFE8 /* Pods-HUPhotoBrowser Demo.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMACH_O_TYPE = staticlib;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPODS_ROOT = \"$(SRCROOT)\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t8EC6FD9EB1429A7D7F927F4FA1276BD6 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = AEC8F5C50FA9C44CF017CDCDCBA68D75 /* SDWebImage.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/SDWebImage/SDWebImage-prefix.pch\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 7.0;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPRIVATE_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tA0E7D401EA4BB8DD9B7D7A69D231AA69 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 78840C91637E1D69D68C079ABE539DF4 /* HUPhotoPicker.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCONFIGURATION_BUILD_DIR = \"$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/HUPhotoPicker\";\n\t\t\t\tINFOPLIST_FILE = \"Target Support Files/HUPhotoPicker/ResourceBundle-HUPhotoPicker-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tPRODUCT_NAME = HUPhotoPicker;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tWRAPPER_EXTENSION = bundle;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tB254DAA6CF0CE39F4A3D11B90A7E059A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGNING_REQUIRED = NO;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"POD_CONFIGURATION_RELEASE=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;\n\t\t\t\tSTRIP_INSTALLED_PRODUCT = NO;\n\t\t\t\tSYMROOT = \"${SRCROOT}/../build\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tBE6108ECA88AFEC9B72003AF9E741D95 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 0D54E71FD9E8FE32D095B20904DE434C /* SVProgressHUD.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/SVProgressHUD/SVProgressHUD-prefix.pch\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPRIVATE_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC3E66C76BAB6746B5434D13F4C770C90 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 78840C91637E1D69D68C079ABE539DF4 /* HUPhotoPicker.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCONFIGURATION_BUILD_DIR = \"$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/HUPhotoPicker\";\n\t\t\t\tINFOPLIST_FILE = \"Target Support Files/HUPhotoPicker/ResourceBundle-HUPhotoPicker-Info.plist\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tPRODUCT_NAME = HUPhotoPicker;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tWRAPPER_EXTENSION = bundle;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tD1E9C2E6BAC87B6C77F63447E0B40810 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 4FF76196D9A0CB2559E6874B8EEF173B /* Pods-HUPhotoBrowser Demo.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMACH_O_TYPE = staticlib;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPODS_ROOT = \"$(SRCROOT)\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tE4B68EE12B21C47CB798D9B1ECA6D7A7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGNING_REQUIRED = NO;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"POD_CONFIGURATION_DEBUG=1\",\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/;\n\t\t\t\tSTRIP_INSTALLED_PRODUCT = NO;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSYMROOT = \"${SRCROOT}/../build\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tF33E8CB424B79EF0CD0D55632F86B406 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 78840C91637E1D69D68C079ABE539DF4 /* HUPhotoPicker.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/HUPhotoPicker/HUPhotoPicker-prefix.pch\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPRIVATE_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tF9CC67483B41520152C233D956FA092D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 3AEF36E1AC343442B9AD72564C0B21A8 /* HUPhotoBrowser.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=appletvos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=watchos*]\" = \"\";\n\t\t\t\tGCC_PREFIX_HEADER = \"Target Support Files/HUPhotoBrowser/HUPhotoBrowser-prefix.pch\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 7.0;\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tOTHER_LIBTOOLFLAGS = \"\";\n\t\t\t\tPRIVATE_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tPUBLIC_HEADERS_FOLDER_PATH = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = \"$(inherited) \";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t01A81BE7749D71E2120346BFA3BACEF7 /* Build configuration list for PBXNativeTarget \"HUPhotoPicker-HUPhotoPicker\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tA0E7D401EA4BB8DD9B7D7A69D231AA69 /* Debug */,\n\t\t\t\tC3E66C76BAB6746B5434D13F4C770C90 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t0DD8A5F759F4079DEF53C494F2577FBD /* Build configuration list for PBXNativeTarget \"HUPhotoPicker\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tF33E8CB424B79EF0CD0D55632F86B406 /* Debug */,\n\t\t\t\t3E3922C790F227CB9358C41F82E4A577 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t1CFE1EF6C9D0CD7F16160CFEEF22DC0B /* Build configuration list for PBXNativeTarget \"SDWebImage\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t8EC6FD9EB1429A7D7F927F4FA1276BD6 /* Debug */,\n\t\t\t\t4A2DD3DF4606A726BA33D4F4139283C9 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject \"Pods\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tE4B68EE12B21C47CB798D9B1ECA6D7A7 /* Debug */,\n\t\t\t\tB254DAA6CF0CE39F4A3D11B90A7E059A /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t49D9422F3E6B2B15945506AC7A664D58 /* Build configuration list for PBXNativeTarget \"Pods-HUPhotoBrowser DemoTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t0141343739AB373F60DF8691AFCD097C /* Debug */,\n\t\t\t\t262ECDA72B399AD668790B59999BA38B /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t869C987873DBAD36D192B53483FD0EB2 /* Build configuration list for PBXNativeTarget \"Pods-HUPhotoBrowser Demo\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tD1E9C2E6BAC87B6C77F63447E0B40810 /* Debug */,\n\t\t\t\t67458CA8CD34424F39F65F5F1FE37B8E /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t9003DDA5075FE3C75CA206B7E041DA44 /* Build configuration list for PBXNativeTarget \"SVProgressHUD\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tBE6108ECA88AFEC9B72003AF9E741D95 /* Debug */,\n\t\t\t\t414365BE408DDEB60DF35C2DA46DE1FD /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t9D555F1499957E226484E6F3D66A967C /* Build configuration list for PBXNativeTarget \"HUPhotoBrowser\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t22377722B54CEA220B33075E180F68E1 /* Debug */,\n\t\t\t\tF9CC67483B41520152C233D956FA092D /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */;\n}\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/HUPhotoBrowser.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = 'F61EABE2A50F74AE114AA3F4367121A8'\n               BlueprintName = 'HUPhotoBrowser'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libHUPhotoBrowser.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/HUPhotoPicker-HUPhotoPicker.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = '4772B77F4E0FA787DC9FD7562D377C5F'\n               BlueprintName = 'HUPhotoPicker-HUPhotoPicker'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'HUPhotoPicker.bundle'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/HUPhotoPicker.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = 'B006CA1FB9E74F505B0BC5CD2168B0BA'\n               BlueprintName = 'HUPhotoPicker'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libHUPhotoPicker.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/Pods-HUPhotoBrowser Demo.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = 'A967FC69F45B325EC7CF38A222A0F061'\n               BlueprintName = 'Pods-HUPhotoBrowser Demo'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libPods-HUPhotoBrowser Demo.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/Pods-HUPhotoBrowser DemoTests.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = 'F04AE9B453427EDFA1DD604800D07CDB'\n               BlueprintName = 'Pods-HUPhotoBrowser DemoTests'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libPods-HUPhotoBrowser DemoTests.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/SDWebImage.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = '156B947C8425573AB59F6FB4E33470DD'\n               BlueprintName = 'SDWebImage'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libSDWebImage.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/SVProgressHUD.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = 'E5C155FFDDFCD74237E4D301D504CD59'\n               BlueprintName = 'SVProgressHUD'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libSVProgressHUD.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/huluobo.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>HUPhotoBrowser.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t\t<key>HUPhotoPicker-HUPhotoPicker.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>2</integer>\n\t\t</dict>\n\t\t<key>HUPhotoPicker.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>1</integer>\n\t\t</dict>\n\t\t<key>Pods-HUPhotoBrowser Demo.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>3</integer>\n\t\t</dict>\n\t\t<key>Pods-HUPhotoBrowser DemoTests.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>4</integer>\n\t\t</dict>\n\t\t<key>SDWebImage.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>5</integer>\n\t\t</dict>\n\t\t<key>SVProgressHUD.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>6</integer>\n\t\t</dict>\n\t</dict>\n\t<key>SuppressBuildableAutocreation</key>\n\t<dict/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoBrowser.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = '0D093CEF6BF8504B503267B02B84504E'\n               BlueprintName = 'HUPhotoBrowser'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libHUPhotoBrowser.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoPicker-HUPhotoPicker.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = '4772B77F4E0FA787DC9FD7562D377C5F'\n               BlueprintName = 'HUPhotoPicker-HUPhotoPicker'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'HUPhotoPicker.bundle'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoPicker.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = 'B006CA1FB9E74F505B0BC5CD2168B0BA'\n               BlueprintName = 'HUPhotoPicker'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libHUPhotoPicker.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/Pods-HUPhotoBrowser Demo.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = '90A7FF862BEF23C0458466FA6399FBBB'\n               BlueprintName = 'Pods-HUPhotoBrowser Demo'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libPods-HUPhotoBrowser Demo.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/Pods-HUPhotoBrowser DemoTests.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = 'F04AE9B453427EDFA1DD604800D07CDB'\n               BlueprintName = 'Pods-HUPhotoBrowser DemoTests'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libPods-HUPhotoBrowser DemoTests.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/SDWebImage.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0700\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForAnalyzing = \"YES\"\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = 'primary'\n               BlueprintIdentifier = 'D0789E1F0FF5D30A53AEA4722773A3FB'\n               BlueprintName = 'SDWebImage'\n               ReferencedContainer = 'container:Pods.xcodeproj'\n               BuildableName = 'libSDWebImage.a'>\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      buildConfiguration = \"Debug\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      buildConfiguration = \"Debug\"\n      allowLocationSimulation = \"YES\">\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Example/Pods/Pods.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>HUPhotoBrowser.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>HUPhotoPicker-HUPhotoPicker.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>HUPhotoPicker.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>Pods-HUPhotoBrowser Demo.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>Pods-HUPhotoBrowser DemoTests.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t</dict>\n\t\t<key>SDWebImage.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>isShown</key>\n\t\t\t<false/>\n\t\t</dict>\n\t</dict>\n\t<key>SuppressBuildableAutocreation</key>\n\t<dict/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/Pods/SDWebImage/LICENSE",
    "content": "Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com\n \nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n \nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n"
  },
  {
    "path": "Example/Pods/SDWebImage/README.md",
    "content": "<p align=\"center\" >\n  <img src=\"SDWebImage_logo.png\" title=\"SDWebImage logo\" float=left>\n</p>\n\n\n[![Build Status](http://img.shields.io/travis/rs/SDWebImage/master.svg?style=flat)](https://travis-ci.org/rs/SDWebImage)\n[![Pod Version](http://img.shields.io/cocoapods/v/SDWebImage.svg?style=flat)](http://cocoadocs.org/docsets/SDWebImage/)\n[![Pod Platform](http://img.shields.io/cocoapods/p/SDWebImage.svg?style=flat)](http://cocoadocs.org/docsets/SDWebImage/)\n[![Pod License](http://img.shields.io/cocoapods/l/SDWebImage.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0.html)\n[![Dependency Status](https://www.versioneye.com/objective-c/sdwebimage/badge.svg?style=flat)](https://www.versioneye.com/objective-c/sdwebimage)\n[![Reference Status](https://www.versioneye.com/objective-c/sdwebimage/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/sdwebimage/references)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/rs/SDWebImage)\n[![codecov](https://codecov.io/gh/rs/SDWebImage/branch/master/graph/badge.svg)](https://codecov.io/gh/rs/SDWebImage)\n\nThis library provides an async image downloader with cache support. For convenience, we added categories for UI elements like `UIImageView`, `UIButton`, `MKAnnotationView`.\n\n## Features\n\n- [x] Categories for `UIImageView`, `UIButton`, `MKAnnotationView` adding web image and cache management\n- [x] An asynchronous image downloader\n- [x] An asynchronous memory + disk image caching with automatic cache expiration handling\n- [x] A background image decompression\n- [x] A guarantee that the same URL won't be downloaded several times\n- [x] A guarantee that bogus URLs won't be retried again and again\n- [x] A guarantee that main thread will never be blocked\n- [x] Performances!\n- [x] Use GCD and ARC\n\n## Supported Image Formats\n\n- Image formats supported by UIImage (JPEG, PNG, ...), including GIF\n- WebP format, including animated WebP (use the `WebP` subspec)\n\n## Requirements\n\n- iOS 7.0 or later\n- tvOS 9.0 or later\n- watchOS 2.0 or later\n- OS X 10.8 or later\n- Xcode 7.3 or later\n\n#### Backwards compatibility\n\n- For iOS 5 and 6, use [any 3.x version up to 3.7.6](https://github.com/rs/SDWebImage/tree/3.7.6)\n- For iOS < 5.0, please use the last [2.0 version](https://github.com/rs/SDWebImage/tree/2.0-compat).\n\n## Getting Started\n\n- Read this Readme doc\n- Read the [How to use section](https://github.com/rs/SDWebImage#how-to-use)\n- Read the [documentation @ CocoaDocs](http://cocoadocs.org/docsets/SDWebImage/)\n- Read [How is SDWebImage better than X?](https://github.com/rs/SDWebImage/wiki/How-is-SDWebImage-better-than-X%3F)\n- Try the example by downloading the project from Github or even easier using CocoaPods try `pod try SDWebImage`\n- Get to the [installation steps](https://github.com/rs/SDWebImage#installation)\n- Read the [SDWebImage 4.0 Migration Guide](Docs/SDWebImage-4.0-Migration-guide.md) to get an idea of the changes from 3.x to 4.x\n\n## Who Uses It\n- Find out [who uses SDWebImage](https://github.com/rs/SDWebImage/wiki/Who-Uses-SDWebImage) and add your app to the list.\n\n## Communication\n\n- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/sdwebimage). (Tag 'sdwebimage')\n- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/sdwebimage).\n- If you **found a bug**, open an issue.\n- If you **have a feature request**, open an issue.\n- If you **want to contribute**, submit a pull request.\n\n## How To Use\n\n```objective-c\nObjective-C:\n\n#import <SDWebImage/UIImageView+WebCache.h>\n...\n[imageView sd_setImageWithURL:[NSURL URLWithString:@\"http://www.domain.com/path/to/image.jpg\"]\n             placeholderImage:[UIImage imageNamed:@\"placeholder.png\"]];\n```\n\n```swift\nSwift:\n\nimport SDWebImage\n\nimageView.sd_setImage(with: URL(string: \"http://www.domain.com/path/to/image.jpg\"), placeholderImage: UIImage(named: \"placeholder.png\"))\n```\n\n- For details about how to use the library and clear examples, see [The detailed How to use](Docs/HowToUse.md)\n\n## Animated Images (GIF) support\n\n- Starting with the 4.0 version, we rely on [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) to take care of our animated images. \n- If you use cocoapods, add `pod 'SDWebImage/GIF'` to your podfile.\n- To use it, simply make sure you use `FLAnimatedImageView` instead of `UIImageView`.\n- **Note**: there is a backwards compatible feature, so if you are still trying to load a GIF into a `UIImageView`, it will only show the 1st frame as a static image.\n- **Important**: FLAnimatedImage only works on the iOS platform. For OS X, use `NSImageView` with `animates` set to `YES` to show the entire animated images and `NO` to only show the 1st frame. For all the other platforms (tvOS, watchOS) we will fallback to the backwards compatibility feature described above \n\n## Common Problems\n\n### Using dynamic image size with UITableViewCell\n\nUITableView determines the size of the image by the first image set for a cell. If your remote images\ndon't have the same size as your placeholder image, you may experience strange anamorphic scaling issue.\nThe following article gives a way to workaround this issue:\n\n[http://www.wrichards.com/blog/2011/11/sdwebimage-fixed-width-cell-images/](http://www.wrichards.com/blog/2011/11/sdwebimage-fixed-width-cell-images/)\n\n\n### Handle image refresh\n\nSDWebImage does very aggressive caching by default. It ignores all kind of caching control header returned by the HTTP server and cache the returned images with no time restriction. It implies your images URLs are static URLs pointing to images that never change. If the pointed image happen to change, some parts of the URL should change accordingly.\n\nIf you don't control the image server you're using, you may not be able to change the URL when its content is updated. This is the case for Facebook avatar URLs for instance. In such case, you may use the `SDWebImageRefreshCached` flag. This will slightly degrade the performance but will respect the HTTP caching control headers:\n\n``` objective-c\n[imageView sd_setImageWithURL:[NSURL URLWithString:@\"https://graph.facebook.com/olivier.poitrey/picture\"]\n             placeholderImage:[UIImage imageNamed:@\"avatar-placeholder.png\"]\n                      options:SDWebImageRefreshCached];\n```\n\n### Add a progress indicator\n\nAdd these before you call ```sd_setImageWithURL```\n\n``` objective-c\n[imageView sd_setShowActivityIndicatorView:YES];\n[imageView sd_setIndicatorStyle:UIActivityIndicatorViewStyleGray];\n```\n\n``` swift\nimageView.sd_setShowActivityIndicatorView(true)\nimageView.sd_setIndicatorStyle(.Gray)\n```\n\n## Installation\n\nThere are three ways to use SDWebImage in your project:\n- using CocoaPods\n- using Carthage\n- by cloning the project into your repository\n\n### Installation with CocoaPods\n\n[CocoaPods](http://cocoapods.org/) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries in your projects. See the [Get Started](http://cocoapods.org/#get_started) section for more details.\n\n#### Podfile\n```\nplatform :ios, '7.0'\npod 'SDWebImage', '~> 4.0'\n```\n\nIf you are using Swift, be sure to add `use_frameworks!` and set your target to iOS 8+:\n```\nplatform :ios, '8.0'\nuse_frameworks!\n```\n\n#### Subspecs\n\nThere are 4 subspecs available now: `Core`, `MapKit`, `GIF` and `WebP` (this means you can install only some of the SDWebImage modules. By default, you get just `Core`, so if you need `WebP`, you need to specify it). \n\nPodfile example:\n```\npod 'SDWebImage/WebP'\n```\n\n### Installation with Carthage (iOS 8+)\n\n[Carthage](https://github.com/Carthage/Carthage) is a lightweight dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods.\n\nTo install with carthage, follow the instruction on [Carthage](https://github.com/Carthage/Carthage)\n\n#### Cartfile\n```\ngithub \"rs/SDWebImage\"\n```\n\n### Installation by cloning the repository\n- see [Manual install](Docs/ManualInstallation.md)\n\n### Import headers in your source files\n\nIn the source files where you need to use the library, import the header file:\n\n```objective-c\n#import <SDWebImage/UIImageView+WebCache.h>\n```\n\n### Build Project\n\nAt this point your workspace should build without error. If you are having problem, post to the Issue and the\ncommunity can help you solve it.\n\n## Author\n- [Olivier Poitrey](https://github.com/rs)\n\n## Collaborators\n- [Konstantinos K.](https://github.com/mythodeia)\n- [Bogdan Poplauschi](https://github.com/bpoplauschi)\n- [Chester Liu](https://github.com/skyline75489)\n- [DreamPiggy](https://github.com/dreampiggy)\n\n## Licenses\n\nAll source code is licensed under the [MIT License](https://raw.github.com/rs/SDWebImage/master/LICENSE).\n\n## Architecture\n\n<p align=\"center\" >\n    <img src=\"Docs/SDWebImageClassDiagram.png\" title=\"SDWebImage class diagram\">\n</p>\n\n<p align=\"center\" >\n    <img src=\"Docs/SDWebImageSequenceDiagram.png\" title=\"SDWebImage sequence diagram\">\n</p>\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Fabrice Aneche\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <Foundation/Foundation.h>\n#import \"SDWebImageCompat.h\"\n\ntypedef NS_ENUM(NSInteger, SDImageFormat) {\n    SDImageFormatUndefined = -1,\n    SDImageFormatJPEG = 0,\n    SDImageFormatPNG,\n    SDImageFormatGIF,\n    SDImageFormatTIFF,\n    SDImageFormatWebP\n};\n\n@interface NSData (ImageContentType)\n\n/**\n *  Return image format\n *\n *  @param data the input image data\n *\n *  @return the image format as `SDImageFormat` (enum)\n */\n+ (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Fabrice Aneche\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"NSData+ImageContentType.h\"\n\n\n@implementation NSData (ImageContentType)\n\n+ (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data {\n    if (!data) {\n        return SDImageFormatUndefined;\n    }\n    \n    uint8_t c;\n    [data getBytes:&c length:1];\n    switch (c) {\n        case 0xFF:\n            return SDImageFormatJPEG;\n        case 0x89:\n            return SDImageFormatPNG;\n        case 0x47:\n            return SDImageFormatGIF;\n        case 0x49:\n        case 0x4D:\n            return SDImageFormatTIFF;\n        case 0x52:\n            // R as RIFF for WEBP\n            if (data.length < 12) {\n                return SDImageFormatUndefined;\n            }\n            \n            NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];\n            if ([testString hasPrefix:@\"RIFF\"] && [testString hasSuffix:@\"WEBP\"]) {\n                return SDImageFormatWebP;\n            }\n    }\n    return SDImageFormatUndefined;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/NSImage+WebCache.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n\n#if SD_MAC\n\n#import <Cocoa/Cocoa.h>\n\n@interface NSImage (WebCache)\n\n- (CGImageRef)CGImage;\n- (NSArray<NSImage *> *)images;\n- (BOOL)isGIF;\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/NSImage+WebCache.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"NSImage+WebCache.h\"\n\n#if SD_MAC\n\n@implementation NSImage (WebCache)\n\n- (CGImageRef)CGImage {\n    NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height);\n    CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil];\n    return cgImage;\n}\n\n- (NSArray<NSImage *> *)images {\n    return nil;\n}\n\n- (BOOL)isGIF {\n    return NO;\n}\n\n@end\n\n#endif\n\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDImageCache.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <Foundation/Foundation.h>\n#import \"SDWebImageCompat.h\"\n#import \"SDImageCacheConfig.h\"\n\ntypedef NS_ENUM(NSInteger, SDImageCacheType) {\n    /**\n     * The image wasn't available the SDWebImage caches, but was downloaded from the web.\n     */\n    SDImageCacheTypeNone,\n    /**\n     * The image was obtained from the disk cache.\n     */\n    SDImageCacheTypeDisk,\n    /**\n     * The image was obtained from the memory cache.\n     */\n    SDImageCacheTypeMemory\n};\n\ntypedef void(^SDCacheQueryCompletedBlock)(UIImage * _Nullable image, NSData * _Nullable data, SDImageCacheType cacheType);\n\ntypedef void(^SDWebImageCheckCacheCompletionBlock)(BOOL isInCache);\n\ntypedef void(^SDWebImageCalculateSizeBlock)(NSUInteger fileCount, NSUInteger totalSize);\n\n\n/**\n * SDImageCache maintains a memory cache and an optional disk cache. Disk cache write operations are performed\n * asynchronous so it doesn’t add unnecessary latency to the UI.\n */\n@interface SDImageCache : NSObject\n\n#pragma mark - Properties\n\n/**\n *  Cache Config object - storing all kind of settings\n */\n@property (nonatomic, nonnull, readonly) SDImageCacheConfig *config;\n\n/**\n * The maximum \"total cost\" of the in-memory image cache. The cost function is the number of pixels held in memory.\n */\n@property (assign, nonatomic) NSUInteger maxMemoryCost;\n\n/**\n * The maximum number of objects the cache should hold.\n */\n@property (assign, nonatomic) NSUInteger maxMemoryCountLimit;\n\n#pragma mark - Singleton and initialization\n\n/**\n * Returns global shared cache instance\n *\n * @return SDImageCache global instance\n */\n+ (nonnull instancetype)sharedImageCache;\n\n/**\n * Init a new cache store with a specific namespace\n *\n * @param ns The namespace to use for this cache store\n */\n- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns;\n\n/**\n * Init a new cache store with a specific namespace and directory\n *\n * @param ns        The namespace to use for this cache store\n * @param directory Directory to cache disk images in\n */\n- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns\n                       diskCacheDirectory:(nonnull NSString *)directory NS_DESIGNATED_INITIALIZER;\n\n#pragma mark - Cache paths\n\n- (nullable NSString *)makeDiskCachePath:(nonnull NSString*)fullNamespace;\n\n/**\n * Add a read-only cache path to search for images pre-cached by SDImageCache\n * Useful if you want to bundle pre-loaded images with your app\n *\n * @param path The path to use for this read-only cache path\n */\n- (void)addReadOnlyCachePath:(nonnull NSString *)path;\n\n#pragma mark - Store Ops\n\n/**\n * Asynchronously store an image into memory and disk cache at the given key.\n *\n * @param image           The image to store\n * @param key             The unique image cache key, usually it's image absolute URL\n * @param completionBlock A block executed after the operation is finished\n */\n- (void)storeImage:(nullable UIImage *)image\n            forKey:(nullable NSString *)key\n        completion:(nullable SDWebImageNoParamsBlock)completionBlock;\n\n/**\n * Asynchronously store an image into memory and disk cache at the given key.\n *\n * @param image           The image to store\n * @param key             The unique image cache key, usually it's image absolute URL\n * @param toDisk          Store the image to disk cache if YES\n * @param completionBlock A block executed after the operation is finished\n */\n- (void)storeImage:(nullable UIImage *)image\n            forKey:(nullable NSString *)key\n            toDisk:(BOOL)toDisk\n        completion:(nullable SDWebImageNoParamsBlock)completionBlock;\n\n/**\n * Asynchronously store an image into memory and disk cache at the given key.\n *\n * @param image           The image to store\n * @param imageData       The image data as returned by the server, this representation will be used for disk storage\n *                        instead of converting the given image object into a storable/compressed image format in order\n *                        to save quality and CPU\n * @param key             The unique image cache key, usually it's image absolute URL\n * @param toDisk          Store the image to disk cache if YES\n * @param completionBlock A block executed after the operation is finished\n */\n- (void)storeImage:(nullable UIImage *)image\n         imageData:(nullable NSData *)imageData\n            forKey:(nullable NSString *)key\n            toDisk:(BOOL)toDisk\n        completion:(nullable SDWebImageNoParamsBlock)completionBlock;\n\n/**\n * Synchronously store image NSData into disk cache at the given key.\n *\n * @warning This method is synchronous, make sure to call it from the ioQueue\n *\n * @param imageData  The image data to store\n * @param key        The unique image cache key, usually it's image absolute URL\n */\n- (void)storeImageDataToDisk:(nullable NSData *)imageData forKey:(nullable NSString *)key;\n\n#pragma mark - Query and Retrieve Ops\n\n/**\n *  Async check if image exists in disk cache already (does not load the image)\n *\n *  @param key             the key describing the url\n *  @param completionBlock the block to be executed when the check is done.\n *  @note the completion block will be always executed on the main queue\n */\n- (void)diskImageExistsWithKey:(nullable NSString *)key completion:(nullable SDWebImageCheckCacheCompletionBlock)completionBlock;\n\n/**\n * Operation that queries the cache asynchronously and call the completion when done.\n *\n * @param key       The unique key used to store the wanted image\n * @param doneBlock The completion block. Will not get called if the operation is cancelled\n *\n * @return a NSOperation instance containing the cache op\n */\n- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key done:(nullable SDCacheQueryCompletedBlock)doneBlock;\n\n/**\n * Query the memory cache synchronously.\n *\n * @param key The unique key used to store the image\n */\n- (nullable UIImage *)imageFromMemoryCacheForKey:(nullable NSString *)key;\n\n/**\n * Query the disk cache synchronously.\n *\n * @param key The unique key used to store the image\n */\n- (nullable UIImage *)imageFromDiskCacheForKey:(nullable NSString *)key;\n\n/**\n * Query the cache (memory and or disk) synchronously after checking the memory cache.\n *\n * @param key The unique key used to store the image\n */\n- (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key;\n\n#pragma mark - Remove Ops\n\n/**\n * Remove the image from memory and disk cache asynchronously\n *\n * @param key             The unique image cache key\n * @param completion      A block that should be executed after the image has been removed (optional)\n */\n- (void)removeImageForKey:(nullable NSString *)key withCompletion:(nullable SDWebImageNoParamsBlock)completion;\n\n/**\n * Remove the image from memory and optionally disk cache asynchronously\n *\n * @param key             The unique image cache key\n * @param fromDisk        Also remove cache entry from disk if YES\n * @param completion      A block that should be executed after the image has been removed (optional)\n */\n- (void)removeImageForKey:(nullable NSString *)key fromDisk:(BOOL)fromDisk withCompletion:(nullable SDWebImageNoParamsBlock)completion;\n\n#pragma mark - Cache clean Ops\n\n/**\n * Clear all memory cached images\n */\n- (void)clearMemory;\n\n/**\n * Async clear all disk cached images. Non-blocking method - returns immediately.\n * @param completion    A block that should be executed after cache expiration completes (optional)\n */\n- (void)clearDiskOnCompletion:(nullable SDWebImageNoParamsBlock)completion;\n\n/**\n * Async remove all expired cached image from disk. Non-blocking method - returns immediately.\n * @param completionBlock A block that should be executed after cache expiration completes (optional)\n */\n- (void)deleteOldFilesWithCompletionBlock:(nullable SDWebImageNoParamsBlock)completionBlock;\n\n#pragma mark - Cache Info\n\n/**\n * Get the size used by the disk cache\n */\n- (NSUInteger)getSize;\n\n/**\n * Get the number of images in the disk cache\n */\n- (NSUInteger)getDiskCount;\n\n/**\n * Asynchronously calculate the disk cache's size.\n */\n- (void)calculateSizeWithCompletionBlock:(nullable SDWebImageCalculateSizeBlock)completionBlock;\n\n#pragma mark - Cache Paths\n\n/**\n *  Get the cache path for a certain key (needs the cache path root folder)\n *\n *  @param key  the key (can be obtained from url using cacheKeyForURL)\n *  @param path the cache path root folder\n *\n *  @return the cache path\n */\n- (nullable NSString *)cachePathForKey:(nullable NSString *)key inPath:(nonnull NSString *)path;\n\n/**\n *  Get the default cache path for a certain key\n *\n *  @param key the key (can be obtained from url using cacheKeyForURL)\n *\n *  @return the default cache path\n */\n- (nullable NSString *)defaultCachePathForKey:(nullable NSString *)key;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDImageCache.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDImageCache.h\"\n#import \"SDWebImageDecoder.h\"\n#import \"UIImage+MultiFormat.h\"\n#import <CommonCrypto/CommonDigest.h>\n#import \"UIImage+GIF.h\"\n#import \"NSData+ImageContentType.h\"\n#import \"NSImage+WebCache.h\"\n\n// See https://github.com/rs/SDWebImage/pull/1141 for discussion\n@interface AutoPurgeCache : NSCache\n@end\n\n@implementation AutoPurgeCache\n\n- (nonnull instancetype)init {\n    self = [super init];\n    if (self) {\n#if SD_UIKIT\n        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllObjects) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];\n#endif\n    }\n    return self;\n}\n\n- (void)dealloc {\n#if SD_UIKIT\n    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil];\n#endif\n}\n\n@end\n\n\nFOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {\n#if SD_MAC\n    return image.size.height * image.size.width;\n#elif SD_UIKIT || SD_WATCH\n    return image.size.height * image.size.width * image.scale * image.scale;\n#endif\n}\n\n@interface SDImageCache ()\n\n#pragma mark - Properties\n@property (strong, nonatomic, nonnull) NSCache *memCache;\n@property (strong, nonatomic, nonnull) NSString *diskCachePath;\n@property (strong, nonatomic, nullable) NSMutableArray<NSString *> *customPaths;\n@property (SDDispatchQueueSetterSementics, nonatomic, nullable) dispatch_queue_t ioQueue;\n\n@end\n\n\n@implementation SDImageCache {\n    NSFileManager *_fileManager;\n}\n\n#pragma mark - Singleton, init, dealloc\n\n+ (nonnull instancetype)sharedImageCache {\n    static dispatch_once_t once;\n    static id instance;\n    dispatch_once(&once, ^{\n        instance = [self new];\n    });\n    return instance;\n}\n\n- (instancetype)init {\n    return [self initWithNamespace:@\"default\"];\n}\n\n- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns {\n    NSString *path = [self makeDiskCachePath:ns];\n    return [self initWithNamespace:ns diskCacheDirectory:path];\n}\n\n- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns\n                       diskCacheDirectory:(nonnull NSString *)directory {\n    if ((self = [super init])) {\n        NSString *fullNamespace = [@\"com.hackemist.SDWebImageCache.\" stringByAppendingString:ns];\n        \n        // Create IO serial queue\n        _ioQueue = dispatch_queue_create(\"com.hackemist.SDWebImageCache\", DISPATCH_QUEUE_SERIAL);\n        \n        _config = [[SDImageCacheConfig alloc] init];\n        \n        // Init the memory cache\n        _memCache = [[AutoPurgeCache alloc] init];\n        _memCache.name = fullNamespace;\n\n        // Init the disk cache\n        if (directory != nil) {\n            _diskCachePath = [directory stringByAppendingPathComponent:fullNamespace];\n        } else {\n            NSString *path = [self makeDiskCachePath:ns];\n            _diskCachePath = path;\n        }\n\n        dispatch_sync(_ioQueue, ^{\n            _fileManager = [NSFileManager new];\n        });\n\n#if SD_UIKIT\n        // Subscribe to app events\n        [[NSNotificationCenter defaultCenter] addObserver:self\n                                                 selector:@selector(clearMemory)\n                                                     name:UIApplicationDidReceiveMemoryWarningNotification\n                                                   object:nil];\n\n        [[NSNotificationCenter defaultCenter] addObserver:self\n                                                 selector:@selector(deleteOldFiles)\n                                                     name:UIApplicationWillTerminateNotification\n                                                   object:nil];\n\n        [[NSNotificationCenter defaultCenter] addObserver:self\n                                                 selector:@selector(backgroundDeleteOldFiles)\n                                                     name:UIApplicationDidEnterBackgroundNotification\n                                                   object:nil];\n#endif\n    }\n\n    return self;\n}\n\n- (void)dealloc {\n    [[NSNotificationCenter defaultCenter] removeObserver:self];\n    SDDispatchQueueRelease(_ioQueue);\n}\n\n- (void)checkIfQueueIsIOQueue {\n    const char *currentQueueLabel = dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL);\n    const char *ioQueueLabel = dispatch_queue_get_label(self.ioQueue);\n    if (strcmp(currentQueueLabel, ioQueueLabel) != 0) {\n        NSLog(@\"This method should be called from the ioQueue\");\n    }\n}\n\n#pragma mark - Cache paths\n\n- (void)addReadOnlyCachePath:(nonnull NSString *)path {\n    if (!self.customPaths) {\n        self.customPaths = [NSMutableArray new];\n    }\n\n    if (![self.customPaths containsObject:path]) {\n        [self.customPaths addObject:path];\n    }\n}\n\n- (nullable NSString *)cachePathForKey:(nullable NSString *)key inPath:(nonnull NSString *)path {\n    NSString *filename = [self cachedFileNameForKey:key];\n    return [path stringByAppendingPathComponent:filename];\n}\n\n- (nullable NSString *)defaultCachePathForKey:(nullable NSString *)key {\n    return [self cachePathForKey:key inPath:self.diskCachePath];\n}\n\n- (nullable NSString *)cachedFileNameForKey:(nullable NSString *)key {\n    const char *str = key.UTF8String;\n    if (str == NULL) {\n        str = \"\";\n    }\n    unsigned char r[CC_MD5_DIGEST_LENGTH];\n    CC_MD5(str, (CC_LONG)strlen(str), r);\n    NSString *filename = [NSString stringWithFormat:@\"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%@\",\n                          r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10],\n                          r[11], r[12], r[13], r[14], r[15], [key.pathExtension isEqualToString:@\"\"] ? @\"\" : [NSString stringWithFormat:@\".%@\", key.pathExtension]];\n\n    return filename;\n}\n\n- (nullable NSString *)makeDiskCachePath:(nonnull NSString*)fullNamespace {\n    NSArray<NSString *> *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);\n    return [paths[0] stringByAppendingPathComponent:fullNamespace];\n}\n\n#pragma mark - Store Ops\n\n- (void)storeImage:(nullable UIImage *)image\n            forKey:(nullable NSString *)key\n        completion:(nullable SDWebImageNoParamsBlock)completionBlock {\n    [self storeImage:image imageData:nil forKey:key toDisk:YES completion:completionBlock];\n}\n\n- (void)storeImage:(nullable UIImage *)image\n            forKey:(nullable NSString *)key\n            toDisk:(BOOL)toDisk\n        completion:(nullable SDWebImageNoParamsBlock)completionBlock {\n    [self storeImage:image imageData:nil forKey:key toDisk:toDisk completion:completionBlock];\n}\n\n- (void)storeImage:(nullable UIImage *)image\n         imageData:(nullable NSData *)imageData\n            forKey:(nullable NSString *)key\n            toDisk:(BOOL)toDisk\n        completion:(nullable SDWebImageNoParamsBlock)completionBlock {\n    if (!image || !key) {\n        if (completionBlock) {\n            completionBlock();\n        }\n        return;\n    }\n    // if memory cache is enabled\n    if (self.config.shouldCacheImagesInMemory) {\n        NSUInteger cost = SDCacheCostForImage(image);\n        [self.memCache setObject:image forKey:key cost:cost];\n    }\n    \n    if (toDisk) {\n        dispatch_async(self.ioQueue, ^{\n            @autoreleasepool {\n                NSData *data = imageData;\n                if (!data && image) {\n                    SDImageFormat imageFormatFromData = [NSData sd_imageFormatForImageData:data];\n                    data = [image sd_imageDataAsFormat:imageFormatFromData];\n                }                \n                [self storeImageDataToDisk:data forKey:key];\n            }\n            \n            if (completionBlock) {\n                dispatch_async(dispatch_get_main_queue(), ^{\n                    completionBlock();\n                });\n            }\n        });\n    } else {\n        if (completionBlock) {\n            completionBlock();\n        }\n    }\n}\n\n- (void)storeImageDataToDisk:(nullable NSData *)imageData forKey:(nullable NSString *)key {\n    if (!imageData || !key) {\n        return;\n    }\n    \n    [self checkIfQueueIsIOQueue];\n    \n    if (![_fileManager fileExistsAtPath:_diskCachePath]) {\n        [_fileManager createDirectoryAtPath:_diskCachePath withIntermediateDirectories:YES attributes:nil error:NULL];\n    }\n    \n    // get cache Path for image key\n    NSString *cachePathForKey = [self defaultCachePathForKey:key];\n    // transform to NSUrl\n    NSURL *fileURL = [NSURL fileURLWithPath:cachePathForKey];\n    \n    [_fileManager createFileAtPath:cachePathForKey contents:imageData attributes:nil];\n    \n    // disable iCloud backup\n    if (self.config.shouldDisableiCloud) {\n        [fileURL setResourceValue:@YES forKey:NSURLIsExcludedFromBackupKey error:nil];\n    }\n}\n\n#pragma mark - Query and Retrieve Ops\n\n- (void)diskImageExistsWithKey:(nullable NSString *)key completion:(nullable SDWebImageCheckCacheCompletionBlock)completionBlock {\n    dispatch_async(_ioQueue, ^{\n        BOOL exists = [_fileManager fileExistsAtPath:[self defaultCachePathForKey:key]];\n\n        // fallback because of https://github.com/rs/SDWebImage/pull/976 that added the extension to the disk file name\n        // checking the key with and without the extension\n        if (!exists) {\n            exists = [_fileManager fileExistsAtPath:[self defaultCachePathForKey:key].stringByDeletingPathExtension];\n        }\n\n        if (completionBlock) {\n            dispatch_async(dispatch_get_main_queue(), ^{\n                completionBlock(exists);\n            });\n        }\n    });\n}\n\n- (nullable UIImage *)imageFromMemoryCacheForKey:(nullable NSString *)key {\n    return [self.memCache objectForKey:key];\n}\n\n- (nullable UIImage *)imageFromDiskCacheForKey:(nullable NSString *)key {\n    UIImage *diskImage = [self diskImageForKey:key];\n    if (diskImage && self.config.shouldCacheImagesInMemory) {\n        NSUInteger cost = SDCacheCostForImage(diskImage);\n        [self.memCache setObject:diskImage forKey:key cost:cost];\n    }\n\n    return diskImage;\n}\n\n- (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key {\n    // First check the in-memory cache...\n    UIImage *image = [self imageFromMemoryCacheForKey:key];\n    if (image) {\n        return image;\n    }\n    \n    // Second check the disk cache...\n    image = [self imageFromDiskCacheForKey:key];\n    return image;\n}\n\n- (nullable NSData *)diskImageDataBySearchingAllPathsForKey:(nullable NSString *)key {\n    NSString *defaultPath = [self defaultCachePathForKey:key];\n    NSData *data = [NSData dataWithContentsOfFile:defaultPath];\n    if (data) {\n        return data;\n    }\n\n    // fallback because of https://github.com/rs/SDWebImage/pull/976 that added the extension to the disk file name\n    // checking the key with and without the extension\n    data = [NSData dataWithContentsOfFile:defaultPath.stringByDeletingPathExtension];\n    if (data) {\n        return data;\n    }\n\n    NSArray<NSString *> *customPaths = [self.customPaths copy];\n    for (NSString *path in customPaths) {\n        NSString *filePath = [self cachePathForKey:key inPath:path];\n        NSData *imageData = [NSData dataWithContentsOfFile:filePath];\n        if (imageData) {\n            return imageData;\n        }\n\n        // fallback because of https://github.com/rs/SDWebImage/pull/976 that added the extension to the disk file name\n        // checking the key with and without the extension\n        imageData = [NSData dataWithContentsOfFile:filePath.stringByDeletingPathExtension];\n        if (imageData) {\n            return imageData;\n        }\n    }\n\n    return nil;\n}\n\n- (nullable UIImage *)diskImageForKey:(nullable NSString *)key {\n    NSData *data = [self diskImageDataBySearchingAllPathsForKey:key];\n    if (data) {\n        UIImage *image = [UIImage sd_imageWithData:data];\n        image = [self scaledImageForKey:key image:image];\n#ifdef SD_WEBP\n        SDImageFormat imageFormat = [NSData sd_imageFormatForImageData:data];\n        if (imageFormat == SDImageFormatWebP) {\n            return image;\n        }\n#endif\n        if (self.config.shouldDecompressImages) {\n            image = [UIImage decodedImageWithImage:image];\n        }\n        return image;\n    } else {\n        return nil;\n    }\n}\n\n- (nullable UIImage *)scaledImageForKey:(nullable NSString *)key image:(nullable UIImage *)image {\n    return SDScaledImageForKey(key, image);\n}\n\n- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key done:(nullable SDCacheQueryCompletedBlock)doneBlock {\n    if (!key) {\n        if (doneBlock) {\n            doneBlock(nil, nil, SDImageCacheTypeNone);\n        }\n        return nil;\n    }\n\n    // First check the in-memory cache...\n    UIImage *image = [self imageFromMemoryCacheForKey:key];\n    if (image) {\n        NSData *diskData = nil;\n        if ([image isGIF]) {\n            diskData = [self diskImageDataBySearchingAllPathsForKey:key];\n        }\n        if (doneBlock) {\n            doneBlock(image, diskData, SDImageCacheTypeMemory);\n        }\n        return nil;\n    }\n\n    NSOperation *operation = [NSOperation new];\n    dispatch_async(self.ioQueue, ^{\n        if (operation.isCancelled) {\n            // do not call the completion if cancelled\n            return;\n        }\n\n        @autoreleasepool {\n            NSData *diskData = [self diskImageDataBySearchingAllPathsForKey:key];\n            UIImage *diskImage = [self diskImageForKey:key];\n            if (diskImage && self.config.shouldCacheImagesInMemory) {\n                NSUInteger cost = SDCacheCostForImage(diskImage);\n                [self.memCache setObject:diskImage forKey:key cost:cost];\n            }\n\n            if (doneBlock) {\n                dispatch_async(dispatch_get_main_queue(), ^{\n                    doneBlock(diskImage, diskData, SDImageCacheTypeDisk);\n                });\n            }\n        }\n    });\n\n    return operation;\n}\n\n#pragma mark - Remove Ops\n\n- (void)removeImageForKey:(nullable NSString *)key withCompletion:(nullable SDWebImageNoParamsBlock)completion {\n    [self removeImageForKey:key fromDisk:YES withCompletion:completion];\n}\n\n- (void)removeImageForKey:(nullable NSString *)key fromDisk:(BOOL)fromDisk withCompletion:(nullable SDWebImageNoParamsBlock)completion {\n    if (key == nil) {\n        return;\n    }\n\n    if (self.config.shouldCacheImagesInMemory) {\n        [self.memCache removeObjectForKey:key];\n    }\n\n    if (fromDisk) {\n        dispatch_async(self.ioQueue, ^{\n            [_fileManager removeItemAtPath:[self defaultCachePathForKey:key] error:nil];\n            \n            if (completion) {\n                dispatch_async(dispatch_get_main_queue(), ^{\n                    completion();\n                });\n            }\n        });\n    } else if (completion){\n        completion();\n    }\n    \n}\n\n# pragma mark - Mem Cache settings\n\n- (void)setMaxMemoryCost:(NSUInteger)maxMemoryCost {\n    self.memCache.totalCostLimit = maxMemoryCost;\n}\n\n- (NSUInteger)maxMemoryCost {\n    return self.memCache.totalCostLimit;\n}\n\n- (NSUInteger)maxMemoryCountLimit {\n    return self.memCache.countLimit;\n}\n\n- (void)setMaxMemoryCountLimit:(NSUInteger)maxCountLimit {\n    self.memCache.countLimit = maxCountLimit;\n}\n\n#pragma mark - Cache clean Ops\n\n- (void)clearMemory {\n    [self.memCache removeAllObjects];\n}\n\n- (void)clearDiskOnCompletion:(nullable SDWebImageNoParamsBlock)completion {\n    dispatch_async(self.ioQueue, ^{\n        [_fileManager removeItemAtPath:self.diskCachePath error:nil];\n        [_fileManager createDirectoryAtPath:self.diskCachePath\n                withIntermediateDirectories:YES\n                                 attributes:nil\n                                      error:NULL];\n\n        if (completion) {\n            dispatch_async(dispatch_get_main_queue(), ^{\n                completion();\n            });\n        }\n    });\n}\n\n- (void)deleteOldFiles {\n    [self deleteOldFilesWithCompletionBlock:nil];\n}\n\n- (void)deleteOldFilesWithCompletionBlock:(nullable SDWebImageNoParamsBlock)completionBlock {\n    dispatch_async(self.ioQueue, ^{\n        NSURL *diskCacheURL = [NSURL fileURLWithPath:self.diskCachePath isDirectory:YES];\n        NSArray<NSString *> *resourceKeys = @[NSURLIsDirectoryKey, NSURLContentModificationDateKey, NSURLTotalFileAllocatedSizeKey];\n\n        // This enumerator prefetches useful properties for our cache files.\n        NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtURL:diskCacheURL\n                                                   includingPropertiesForKeys:resourceKeys\n                                                                      options:NSDirectoryEnumerationSkipsHiddenFiles\n                                                                 errorHandler:NULL];\n\n        NSDate *expirationDate = [NSDate dateWithTimeIntervalSinceNow:-self.config.maxCacheAge];\n        NSMutableDictionary<NSURL *, NSDictionary<NSString *, id> *> *cacheFiles = [NSMutableDictionary dictionary];\n        NSUInteger currentCacheSize = 0;\n\n        // Enumerate all of the files in the cache directory.  This loop has two purposes:\n        //\n        //  1. Removing files that are older than the expiration date.\n        //  2. Storing file attributes for the size-based cleanup pass.\n        NSMutableArray<NSURL *> *urlsToDelete = [[NSMutableArray alloc] init];\n        for (NSURL *fileURL in fileEnumerator) {\n            NSError *error;\n            NSDictionary<NSString *, id> *resourceValues = [fileURL resourceValuesForKeys:resourceKeys error:&error];\n\n            // Skip directories and errors.\n            if (error || !resourceValues || [resourceValues[NSURLIsDirectoryKey] boolValue]) {\n                continue;\n            }\n\n            // Remove files that are older than the expiration date;\n            NSDate *modificationDate = resourceValues[NSURLContentModificationDateKey];\n            if ([[modificationDate laterDate:expirationDate] isEqualToDate:expirationDate]) {\n                [urlsToDelete addObject:fileURL];\n                continue;\n            }\n\n            // Store a reference to this file and account for its total size.\n            NSNumber *totalAllocatedSize = resourceValues[NSURLTotalFileAllocatedSizeKey];\n            currentCacheSize += totalAllocatedSize.unsignedIntegerValue;\n            cacheFiles[fileURL] = resourceValues;\n        }\n        \n        for (NSURL *fileURL in urlsToDelete) {\n            [_fileManager removeItemAtURL:fileURL error:nil];\n        }\n\n        // If our remaining disk cache exceeds a configured maximum size, perform a second\n        // size-based cleanup pass.  We delete the oldest files first.\n        if (self.config.maxCacheSize > 0 && currentCacheSize > self.config.maxCacheSize) {\n            // Target half of our maximum cache size for this cleanup pass.\n            const NSUInteger desiredCacheSize = self.config.maxCacheSize / 2;\n\n            // Sort the remaining cache files by their last modification time (oldest first).\n            NSArray<NSURL *> *sortedFiles = [cacheFiles keysSortedByValueWithOptions:NSSortConcurrent\n                                                                     usingComparator:^NSComparisonResult(id obj1, id obj2) {\n                                                                         return [obj1[NSURLContentModificationDateKey] compare:obj2[NSURLContentModificationDateKey]];\n                                                                     }];\n\n            // Delete files until we fall below our desired cache size.\n            for (NSURL *fileURL in sortedFiles) {\n                if ([_fileManager removeItemAtURL:fileURL error:nil]) {\n                    NSDictionary<NSString *, id> *resourceValues = cacheFiles[fileURL];\n                    NSNumber *totalAllocatedSize = resourceValues[NSURLTotalFileAllocatedSizeKey];\n                    currentCacheSize -= totalAllocatedSize.unsignedIntegerValue;\n\n                    if (currentCacheSize < desiredCacheSize) {\n                        break;\n                    }\n                }\n            }\n        }\n        if (completionBlock) {\n            dispatch_async(dispatch_get_main_queue(), ^{\n                completionBlock();\n            });\n        }\n    });\n}\n\n#if SD_UIKIT\n- (void)backgroundDeleteOldFiles {\n    Class UIApplicationClass = NSClassFromString(@\"UIApplication\");\n    if(!UIApplicationClass || ![UIApplicationClass respondsToSelector:@selector(sharedApplication)]) {\n        return;\n    }\n    UIApplication *application = [UIApplication performSelector:@selector(sharedApplication)];\n    __block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{\n        // Clean up any unfinished task business by marking where you\n        // stopped or ending the task outright.\n        [application endBackgroundTask:bgTask];\n        bgTask = UIBackgroundTaskInvalid;\n    }];\n\n    // Start the long-running task and return immediately.\n    [self deleteOldFilesWithCompletionBlock:^{\n        [application endBackgroundTask:bgTask];\n        bgTask = UIBackgroundTaskInvalid;\n    }];\n}\n#endif\n\n#pragma mark - Cache Info\n\n- (NSUInteger)getSize {\n    __block NSUInteger size = 0;\n    dispatch_sync(self.ioQueue, ^{\n        NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtPath:self.diskCachePath];\n        for (NSString *fileName in fileEnumerator) {\n            NSString *filePath = [self.diskCachePath stringByAppendingPathComponent:fileName];\n            NSDictionary<NSString *, id> *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];\n            size += [attrs fileSize];\n        }\n    });\n    return size;\n}\n\n- (NSUInteger)getDiskCount {\n    __block NSUInteger count = 0;\n    dispatch_sync(self.ioQueue, ^{\n        NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtPath:self.diskCachePath];\n        count = fileEnumerator.allObjects.count;\n    });\n    return count;\n}\n\n- (void)calculateSizeWithCompletionBlock:(nullable SDWebImageCalculateSizeBlock)completionBlock {\n    NSURL *diskCacheURL = [NSURL fileURLWithPath:self.diskCachePath isDirectory:YES];\n\n    dispatch_async(self.ioQueue, ^{\n        NSUInteger fileCount = 0;\n        NSUInteger totalSize = 0;\n\n        NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtURL:diskCacheURL\n                                                   includingPropertiesForKeys:@[NSFileSize]\n                                                                      options:NSDirectoryEnumerationSkipsHiddenFiles\n                                                                 errorHandler:NULL];\n\n        for (NSURL *fileURL in fileEnumerator) {\n            NSNumber *fileSize;\n            [fileURL getResourceValue:&fileSize forKey:NSURLFileSizeKey error:NULL];\n            totalSize += fileSize.unsignedIntegerValue;\n            fileCount += 1;\n        }\n\n        if (completionBlock) {\n            dispatch_async(dispatch_get_main_queue(), ^{\n                completionBlock(fileCount, totalSize);\n            });\n        }\n    });\n}\n\n@end\n\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <Foundation/Foundation.h>\n#import \"SDWebImageCompat.h\"\n\n@interface SDImageCacheConfig : NSObject\n\n/**\n * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory.\n * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption.\n */\n@property (assign, nonatomic) BOOL shouldDecompressImages;\n\n/**\n *  disable iCloud backup [defaults to YES]\n */\n@property (assign, nonatomic) BOOL shouldDisableiCloud;\n\n/**\n * use memory cache [defaults to YES]\n */\n@property (assign, nonatomic) BOOL shouldCacheImagesInMemory;\n\n/**\n * The maximum length of time to keep an image in the cache, in seconds\n */\n@property (assign, nonatomic) NSInteger maxCacheAge;\n\n/**\n * The maximum size of the cache, in bytes.\n */\n@property (assign, nonatomic) NSUInteger maxCacheSize;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDImageCacheConfig.h\"\n\nstatic const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week\n\n@implementation SDImageCacheConfig\n\n- (instancetype)init {\n    if (self = [super init]) {\n        _shouldDecompressImages = YES;\n        _shouldDisableiCloud = YES;\n        _shouldCacheImagesInMemory = YES;\n        _maxCacheAge = kDefaultCacheMaxCacheAge;\n        _maxCacheSize = 0;\n    }\n    return self;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageCompat.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Jamie Pinkham\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <TargetConditionals.h>\n\n#ifdef __OBJC_GC__\n    #error SDWebImage does not support Objective-C Garbage Collection\n#endif\n\n// Apple's defines from TargetConditionals.h are a bit weird.\n// Seems like TARGET_OS_MAC is always defined (on all platforms).\n// To determine if we are running on OSX, we can only rely on TARGET_OS_IPHONE=0 and all the other platforms\n#if !TARGET_OS_IPHONE && !TARGET_OS_IOS && !TARGET_OS_TV && !TARGET_OS_WATCH\n    #define SD_MAC 1\n#else\n    #define SD_MAC 0\n#endif\n\n// iOS and tvOS are very similar, UIKit exists on both platforms\n// Note: watchOS also has UIKit, but it's very limited\n#if TARGET_OS_IOS || TARGET_OS_TV\n    #define SD_UIKIT 1\n#else\n    #define SD_UIKIT 0\n#endif\n\n#if TARGET_OS_IOS\n    #define SD_IOS 1\n#else\n    #define SD_IOS 0\n#endif\n\n#if TARGET_OS_TV\n    #define SD_TV 1\n#else\n    #define SD_TV 0\n#endif\n\n#if TARGET_OS_WATCH\n    #define SD_WATCH 1\n#else\n    #define SD_WATCH 0\n#endif\n\n\n#if SD_MAC\n    #import <AppKit/AppKit.h>\n    #ifndef UIImage\n        #define UIImage NSImage\n    #endif\n    #ifndef UIImageView\n        #define UIImageView NSImageView\n    #endif\n    #ifndef UIView\n        #define UIView NSView\n    #endif\n#else\n    #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0\n        #error SDWebImage doesn't support Deployment Target version < 5.0\n    #endif\n\n    #if SD_UIKIT\n        #import <UIKit/UIKit.h>\n    #endif\n    #if SD_WATCH\n        #import <WatchKit/WatchKit.h>\n    #endif\n#endif\n\n#ifndef NS_ENUM\n#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type\n#endif\n\n#ifndef NS_OPTIONS\n#define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type\n#endif\n\n#if OS_OBJECT_USE_OBJC\n    #undef SDDispatchQueueRelease\n    #undef SDDispatchQueueSetterSementics\n    #define SDDispatchQueueRelease(q)\n    #define SDDispatchQueueSetterSementics strong\n#else\n    #undef SDDispatchQueueRelease\n    #undef SDDispatchQueueSetterSementics\n    #define SDDispatchQueueRelease(q) (dispatch_release(q))\n    #define SDDispatchQueueSetterSementics assign\n#endif\n\nFOUNDATION_EXPORT UIImage *SDScaledImageForKey(NSString *key, UIImage *image);\n\ntypedef void(^SDWebImageNoParamsBlock)(void);\n\nFOUNDATION_EXPORT NSString *const SDWebImageErrorDomain;\n\n#ifndef dispatch_main_async_safe\n#define dispatch_main_async_safe(block)\\\n    if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0) {\\\n        block();\\\n    } else {\\\n        dispatch_async(dispatch_get_main_queue(), block);\\\n    }\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n\n#import \"objc/runtime.h\"\n\n#if !__has_feature(objc_arc)\n#error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag\n#endif\n\ninline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullable image) {\n    if (!image) {\n        return nil;\n    }\n    \n#if SD_MAC\n    return image;\n#elif SD_UIKIT || SD_WATCH\n    if ((image.images).count > 0) {\n        NSMutableArray<UIImage *> *scaledImages = [NSMutableArray array];\n\n        for (UIImage *tempImage in image.images) {\n            [scaledImages addObject:SDScaledImageForKey(key, tempImage)];\n        }\n        \n        UIImage *animatedImage = [UIImage animatedImageWithImages:scaledImages duration:image.duration];\n#ifdef SD_WEBP\n        if (animatedImage) {\n            SEL sd_webpLoopCount = NSSelectorFromString(@\"sd_webpLoopCount\");\n            NSNumber *value = objc_getAssociatedObject(image, sd_webpLoopCount);\n            NSInteger loopCount = value.integerValue;\n            if (loopCount) {\n                objc_setAssociatedObject(animatedImage, sd_webpLoopCount, @(loopCount), OBJC_ASSOCIATION_RETAIN_NONATOMIC);\n            }\n        }\n#endif\n        return animatedImage;\n    } else {\n#if SD_WATCH\n        if ([[WKInterfaceDevice currentDevice] respondsToSelector:@selector(screenScale)]) {\n#elif SD_UIKIT\n        if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {\n#endif\n            CGFloat scale = 1;\n            if (key.length >= 8) {\n                NSRange range = [key rangeOfString:@\"@2x.\"];\n                if (range.location != NSNotFound) {\n                    scale = 2.0;\n                }\n                \n                range = [key rangeOfString:@\"@3x.\"];\n                if (range.location != NSNotFound) {\n                    scale = 3.0;\n                }\n            }\n\n            UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation];\n            image = scaledImage;\n        }\n        return image;\n    }\n#endif\n}\n\nNSString *const SDWebImageErrorDomain = @\"SDWebImageErrorDomain\";\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDecoder.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) james <https://github.com/mystcolor>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <Foundation/Foundation.h>\n#import \"SDWebImageCompat.h\"\n\n@interface UIImage (ForceDecode)\n\n+ (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image;\n\n+ (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDecoder.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) james <https://github.com/mystcolor>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageDecoder.h\"\n\n@implementation UIImage (ForceDecode)\n\n#if SD_UIKIT || SD_WATCH\nstatic const size_t kBytesPerPixel = 4;\nstatic const size_t kBitsPerComponent = 8;\n\n+ (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image {\n    if (![UIImage shouldDecodeImage:image]) {\n        return image;\n    }\n    \n    // autorelease the bitmap context and all vars to help system to free memory when there are memory warning.\n    // on iOS7, do not forget to call [[SDImageCache sharedImageCache] clearMemory];\n    @autoreleasepool{\n        \n        CGImageRef imageRef = image.CGImage;\n        CGColorSpaceRef colorspaceRef = [UIImage colorSpaceForImageRef:imageRef];\n        \n        size_t width = CGImageGetWidth(imageRef);\n        size_t height = CGImageGetHeight(imageRef);\n        size_t bytesPerRow = kBytesPerPixel * width;\n\n        // kCGImageAlphaNone is not supported in CGBitmapContextCreate.\n        // Since the original image here has no alpha info, use kCGImageAlphaNoneSkipLast\n        // to create bitmap graphics contexts without alpha info.\n        CGContextRef context = CGBitmapContextCreate(NULL,\n                                                     width,\n                                                     height,\n                                                     kBitsPerComponent,\n                                                     bytesPerRow,\n                                                     colorspaceRef,\n                                                     kCGBitmapByteOrderDefault|kCGImageAlphaNoneSkipLast);\n        if (context == NULL) {\n            return image;\n        }\n        \n        // Draw the image into the context and retrieve the new bitmap image without alpha\n        CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);\n        CGImageRef imageRefWithoutAlpha = CGBitmapContextCreateImage(context);\n        UIImage *imageWithoutAlpha = [UIImage imageWithCGImage:imageRefWithoutAlpha\n                                                         scale:image.scale\n                                                   orientation:image.imageOrientation];\n        \n        CGContextRelease(context);\n        CGImageRelease(imageRefWithoutAlpha);\n        \n        return imageWithoutAlpha;\n    }\n}\n\n/*\n * Defines the maximum size in MB of the decoded image when the flag `SDWebImageScaleDownLargeImages` is set\n * Suggested value for iPad1 and iPhone 3GS: 60.\n * Suggested value for iPad2 and iPhone 4: 120.\n * Suggested value for iPhone 3G and iPod 2 and earlier devices: 30.\n */\nstatic const CGFloat kDestImageSizeMB = 60.0f;\n\n/*\n * Defines the maximum size in MB of a tile used to decode image when the flag `SDWebImageScaleDownLargeImages` is set\n * Suggested value for iPad1 and iPhone 3GS: 20.\n * Suggested value for iPad2 and iPhone 4: 40.\n * Suggested value for iPhone 3G and iPod 2 and earlier devices: 10.\n */\nstatic const CGFloat kSourceImageTileSizeMB = 20.0f;\n\nstatic const CGFloat kBytesPerMB = 1024.0f * 1024.0f;\nstatic const CGFloat kPixelsPerMB = kBytesPerMB / kBytesPerPixel;\nstatic const CGFloat kDestTotalPixels = kDestImageSizeMB * kPixelsPerMB;\nstatic const CGFloat kTileTotalPixels = kSourceImageTileSizeMB * kPixelsPerMB;\n\nstatic const CGFloat kDestSeemOverlap = 2.0f;   // the numbers of pixels to overlap the seems where tiles meet.\n\n+ (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image {\n    if (![UIImage shouldDecodeImage:image]) {\n        return image;\n    }\n    \n    if (![UIImage shouldScaleDownImage:image]) {\n        return [UIImage decodedImageWithImage:image];\n    }\n    \n    CGContextRef destContext;\n    \n    // autorelease the bitmap context and all vars to help system to free memory when there are memory warning.\n    // on iOS7, do not forget to call [[SDImageCache sharedImageCache] clearMemory];\n    @autoreleasepool {\n        CGImageRef sourceImageRef = image.CGImage;\n        \n        CGSize sourceResolution = CGSizeZero;\n        sourceResolution.width = CGImageGetWidth(sourceImageRef);\n        sourceResolution.height = CGImageGetHeight(sourceImageRef);\n        float sourceTotalPixels = sourceResolution.width * sourceResolution.height;\n        // Determine the scale ratio to apply to the input image\n        // that results in an output image of the defined size.\n        // see kDestImageSizeMB, and how it relates to destTotalPixels.\n        float imageScale = kDestTotalPixels / sourceTotalPixels;\n        CGSize destResolution = CGSizeZero;\n        destResolution.width = (int)(sourceResolution.width*imageScale);\n        destResolution.height = (int)(sourceResolution.height*imageScale);\n        \n        // current color space\n        CGColorSpaceRef colorspaceRef = [UIImage colorSpaceForImageRef:sourceImageRef];\n        \n        size_t bytesPerRow = kBytesPerPixel * destResolution.width;\n        \n        // kCGImageAlphaNone is not supported in CGBitmapContextCreate.\n        // Since the original image here has no alpha info, use kCGImageAlphaNoneSkipLast\n        // to create bitmap graphics contexts without alpha info.\n        destContext = CGBitmapContextCreate(NULL,\n                                            destResolution.width,\n                                            destResolution.height,\n                                            kBitsPerComponent,\n                                            bytesPerRow,\n                                            colorspaceRef,\n                                            kCGBitmapByteOrderDefault|kCGImageAlphaNoneSkipLast);\n        \n        if (destContext == NULL) {\n            return image;\n        }\n        CGContextSetInterpolationQuality(destContext, kCGInterpolationHigh);\n        \n        // Now define the size of the rectangle to be used for the\n        // incremental blits from the input image to the output image.\n        // we use a source tile width equal to the width of the source\n        // image due to the way that iOS retrieves image data from disk.\n        // iOS must decode an image from disk in full width 'bands', even\n        // if current graphics context is clipped to a subrect within that\n        // band. Therefore we fully utilize all of the pixel data that results\n        // from a decoding opertion by achnoring our tile size to the full\n        // width of the input image.\n        CGRect sourceTile = CGRectZero;\n        sourceTile.size.width = sourceResolution.width;\n        // The source tile height is dynamic. Since we specified the size\n        // of the source tile in MB, see how many rows of pixels high it\n        // can be given the input image width.\n        sourceTile.size.height = (int)(kTileTotalPixels / sourceTile.size.width );\n        sourceTile.origin.x = 0.0f;\n        // The output tile is the same proportions as the input tile, but\n        // scaled to image scale.\n        CGRect destTile;\n        destTile.size.width = destResolution.width;\n        destTile.size.height = sourceTile.size.height * imageScale;\n        destTile.origin.x = 0.0f;\n        // The source seem overlap is proportionate to the destination seem overlap.\n        // this is the amount of pixels to overlap each tile as we assemble the ouput image.\n        float sourceSeemOverlap = (int)((kDestSeemOverlap/destResolution.height)*sourceResolution.height);\n        CGImageRef sourceTileImageRef;\n        // calculate the number of read/write operations required to assemble the\n        // output image.\n        int iterations = (int)( sourceResolution.height / sourceTile.size.height );\n        // If tile height doesn't divide the image height evenly, add another iteration\n        // to account for the remaining pixels.\n        int remainder = (int)sourceResolution.height % (int)sourceTile.size.height;\n        if(remainder) {\n            iterations++;\n        }\n        // Add seem overlaps to the tiles, but save the original tile height for y coordinate calculations.\n        float sourceTileHeightMinusOverlap = sourceTile.size.height;\n        sourceTile.size.height += sourceSeemOverlap;\n        destTile.size.height += kDestSeemOverlap;\n        for( int y = 0; y < iterations; ++y ) {\n            @autoreleasepool {\n                sourceTile.origin.y = y * sourceTileHeightMinusOverlap + sourceSeemOverlap;\n                destTile.origin.y = destResolution.height - (( y + 1 ) * sourceTileHeightMinusOverlap * imageScale + kDestSeemOverlap);\n                sourceTileImageRef = CGImageCreateWithImageInRect( sourceImageRef, sourceTile );\n                if( y == iterations - 1 && remainder ) {\n                    float dify = destTile.size.height;\n                    destTile.size.height = CGImageGetHeight( sourceTileImageRef ) * imageScale;\n                    dify -= destTile.size.height;\n                    destTile.origin.y += dify;\n                }\n                CGContextDrawImage( destContext, destTile, sourceTileImageRef );\n                CGImageRelease( sourceTileImageRef );\n            }\n        }\n        \n        CGImageRef destImageRef = CGBitmapContextCreateImage(destContext);\n        CGContextRelease(destContext);\n        if (destImageRef == NULL) {\n            return image;\n        }\n        UIImage *destImage = [UIImage imageWithCGImage:destImageRef scale:image.scale orientation:image.imageOrientation];\n        CGImageRelease(destImageRef);\n        if (destImage == nil) {\n            return image;\n        }\n        return destImage;\n    }\n}\n\n+ (BOOL)shouldDecodeImage:(nullable UIImage *)image {\n    // Prevent \"CGBitmapContextCreateImage: invalid context 0x0\" error\n    if (image == nil) {\n        return NO;\n    }\n\n    // do not decode animated images\n    if (image.images != nil) {\n        return NO;\n    }\n    \n    CGImageRef imageRef = image.CGImage;\n    \n    CGImageAlphaInfo alpha = CGImageGetAlphaInfo(imageRef);\n    BOOL anyAlpha = (alpha == kCGImageAlphaFirst ||\n                     alpha == kCGImageAlphaLast ||\n                     alpha == kCGImageAlphaPremultipliedFirst ||\n                     alpha == kCGImageAlphaPremultipliedLast);\n    // do not decode images with alpha\n    if (anyAlpha) {\n        return NO;\n    }\n    \n    return YES;\n}\n\n+ (BOOL)shouldScaleDownImage:(nonnull UIImage *)image {\n    BOOL shouldScaleDown = YES;\n        \n    CGImageRef sourceImageRef = image.CGImage;\n    CGSize sourceResolution = CGSizeZero;\n    sourceResolution.width = CGImageGetWidth(sourceImageRef);\n    sourceResolution.height = CGImageGetHeight(sourceImageRef);\n    float sourceTotalPixels = sourceResolution.width * sourceResolution.height;\n    float imageScale = kDestTotalPixels / sourceTotalPixels;\n    if (imageScale < 1) {\n        shouldScaleDown = YES;\n    } else {\n        shouldScaleDown = NO;\n    }\n    \n    return shouldScaleDown;\n}\n\n+ (CGColorSpaceRef)colorSpaceForImageRef:(CGImageRef)imageRef {\n    // current\n    CGColorSpaceModel imageColorSpaceModel = CGColorSpaceGetModel(CGImageGetColorSpace(imageRef));\n    CGColorSpaceRef colorspaceRef = CGImageGetColorSpace(imageRef);\n    \n    BOOL unsupportedColorSpace = (imageColorSpaceModel == kCGColorSpaceModelUnknown ||\n                                  imageColorSpaceModel == kCGColorSpaceModelMonochrome ||\n                                  imageColorSpaceModel == kCGColorSpaceModelCMYK ||\n                                  imageColorSpaceModel == kCGColorSpaceModelIndexed);\n    if (unsupportedColorSpace) {\n        colorspaceRef = CGColorSpaceCreateDeviceRGB();\n        CFAutorelease(colorspaceRef);\n    }\n    return colorspaceRef;\n}\n#elif SD_MAC\n+ (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image {\n    return image;\n}\n\n+ (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image {\n    return image;\n}\n#endif\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <Foundation/Foundation.h>\n#import \"SDWebImageCompat.h\"\n#import \"SDWebImageOperation.h\"\n\ntypedef NS_OPTIONS(NSUInteger, SDWebImageDownloaderOptions) {\n    SDWebImageDownloaderLowPriority = 1 << 0,\n    SDWebImageDownloaderProgressiveDownload = 1 << 1,\n\n    /**\n     * By default, request prevent the use of NSURLCache. With this flag, NSURLCache\n     * is used with default policies.\n     */\n    SDWebImageDownloaderUseNSURLCache = 1 << 2,\n\n    /**\n     * Call completion block with nil image/imageData if the image was read from NSURLCache\n     * (to be combined with `SDWebImageDownloaderUseNSURLCache`).\n     */\n    SDWebImageDownloaderIgnoreCachedResponse = 1 << 3,\n    \n    /**\n     * In iOS 4+, continue the download of the image if the app goes to background. This is achieved by asking the system for\n     * extra time in background to let the request finish. If the background task expires the operation will be cancelled.\n     */\n    SDWebImageDownloaderContinueInBackground = 1 << 4,\n\n    /**\n     * Handles cookies stored in NSHTTPCookieStore by setting \n     * NSMutableURLRequest.HTTPShouldHandleCookies = YES;\n     */\n    SDWebImageDownloaderHandleCookies = 1 << 5,\n\n    /**\n     * Enable to allow untrusted SSL certificates.\n     * Useful for testing purposes. Use with caution in production.\n     */\n    SDWebImageDownloaderAllowInvalidSSLCertificates = 1 << 6,\n\n    /**\n     * Put the image in the high priority queue.\n     */\n    SDWebImageDownloaderHighPriority = 1 << 7,\n    \n    /**\n     * Scale down the image\n     */\n    SDWebImageDownloaderScaleDownLargeImages = 1 << 8,\n};\n\ntypedef NS_ENUM(NSInteger, SDWebImageDownloaderExecutionOrder) {\n    /**\n     * Default value. All download operations will execute in queue style (first-in-first-out).\n     */\n    SDWebImageDownloaderFIFOExecutionOrder,\n\n    /**\n     * All download operations will execute in stack style (last-in-first-out).\n     */\n    SDWebImageDownloaderLIFOExecutionOrder\n};\n\nFOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStartNotification;\nFOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStopNotification;\n\ntypedef void(^SDWebImageDownloaderProgressBlock)(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL);\n\ntypedef void(^SDWebImageDownloaderCompletedBlock)(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished);\n\ntypedef NSDictionary<NSString *, NSString *> SDHTTPHeadersDictionary;\ntypedef NSMutableDictionary<NSString *, NSString *> SDHTTPHeadersMutableDictionary;\n\ntypedef SDHTTPHeadersDictionary * _Nullable (^SDWebImageDownloaderHeadersFilterBlock)(NSURL * _Nullable url, SDHTTPHeadersDictionary * _Nullable headers);\n\n/**\n *  A token associated with each download. Can be used to cancel a download\n */\n@interface SDWebImageDownloadToken : NSObject\n\n@property (nonatomic, strong, nullable) NSURL *url;\n@property (nonatomic, strong, nullable) id downloadOperationCancelToken;\n\n@end\n\n\n/**\n * Asynchronous downloader dedicated and optimized for image loading.\n */\n@interface SDWebImageDownloader : NSObject\n\n/**\n * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory.\n * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption.\n */\n@property (assign, nonatomic) BOOL shouldDecompressImages;\n\n/**\n *  The maximum number of concurrent downloads\n */\n@property (assign, nonatomic) NSInteger maxConcurrentDownloads;\n\n/**\n * Shows the current amount of downloads that still need to be downloaded\n */\n@property (readonly, nonatomic) NSUInteger currentDownloadCount;\n\n\n/**\n *  The timeout value (in seconds) for the download operation. Default: 15.0.\n */\n@property (assign, nonatomic) NSTimeInterval downloadTimeout;\n\n\n/**\n * The configuration in use by the internal NSURLSession.\n * Mutating this object directly has no effect.\n *\n * @see createNewSessionWithConfiguration:\n */\n@property (readonly, nonatomic, nonnull) NSURLSessionConfiguration *sessionConfiguration;\n\n\n/**\n * Changes download operations execution order. Default value is `SDWebImageDownloaderFIFOExecutionOrder`.\n */\n@property (assign, nonatomic) SDWebImageDownloaderExecutionOrder executionOrder;\n\n/**\n *  Singleton method, returns the shared instance\n *\n *  @return global shared instance of downloader class\n */\n+ (nonnull instancetype)sharedDownloader;\n\n/**\n *  Set the default URL credential to be set for request operations.\n */\n@property (strong, nonatomic, nullable) NSURLCredential *urlCredential;\n\n/**\n * Set username\n */\n@property (strong, nonatomic, nullable) NSString *username;\n\n/**\n * Set password\n */\n@property (strong, nonatomic, nullable) NSString *password;\n\n/**\n * Set filter to pick headers for downloading image HTTP request.\n *\n * This block will be invoked for each downloading image request, returned\n * NSDictionary will be used as headers in corresponding HTTP request.\n */\n@property (nonatomic, copy, nullable) SDWebImageDownloaderHeadersFilterBlock headersFilter;\n\n/**\n * Creates an instance of a downloader with specified session configuration.\n * *Note*: `timeoutIntervalForRequest` is going to be overwritten.\n * @return new instance of downloader class\n */\n- (nonnull instancetype)initWithSessionConfiguration:(nullable NSURLSessionConfiguration *)sessionConfiguration NS_DESIGNATED_INITIALIZER;\n\n/**\n * Set a value for a HTTP header to be appended to each download HTTP request.\n *\n * @param value The value for the header field. Use `nil` value to remove the header.\n * @param field The name of the header field to set.\n */\n- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(nullable NSString *)field;\n\n/**\n * Returns the value of the specified HTTP header field.\n *\n * @return The value associated with the header field field, or `nil` if there is no corresponding header field.\n */\n- (nullable NSString *)valueForHTTPHeaderField:(nullable NSString *)field;\n\n/**\n * Sets a subclass of `SDWebImageDownloaderOperation` as the default\n * `NSOperation` to be used each time SDWebImage constructs a request\n * operation to download an image.\n *\n * @param operationClass The subclass of `SDWebImageDownloaderOperation` to set \n *        as default. Passing `nil` will revert to `SDWebImageDownloaderOperation`.\n */\n- (void)setOperationClass:(nullable Class)operationClass;\n\n/**\n * Creates a SDWebImageDownloader async downloader instance with a given URL\n *\n * The delegate will be informed when the image is finish downloaded or an error has happen.\n *\n * @see SDWebImageDownloaderDelegate\n *\n * @param url            The URL to the image to download\n * @param options        The options to be used for this download\n * @param progressBlock  A block called repeatedly while the image is downloading\n *                       @note the progress block is executed on a background queue\n * @param completedBlock A block called once the download is completed.\n *                       If the download succeeded, the image parameter is set, in case of error,\n *                       error parameter is set with the error. The last parameter is always YES\n *                       if SDWebImageDownloaderProgressiveDownload isn't use. With the\n *                       SDWebImageDownloaderProgressiveDownload option, this block is called\n *                       repeatedly with the partial image object and the finished argument set to NO\n *                       before to be called a last time with the full image and finished argument\n *                       set to YES. In case of error, the finished argument is always YES.\n *\n * @return A token (SDWebImageDownloadToken) that can be passed to -cancel: to cancel this operation\n */\n- (nullable SDWebImageDownloadToken *)downloadImageWithURL:(nullable NSURL *)url\n                                                   options:(SDWebImageDownloaderOptions)options\n                                                  progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                                                 completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock;\n\n/**\n * Cancels a download that was previously queued using -downloadImageWithURL:options:progress:completed:\n *\n * @param token The token received from -downloadImageWithURL:options:progress:completed: that should be canceled.\n */\n- (void)cancel:(nullable SDWebImageDownloadToken *)token;\n\n/**\n * Sets the download queue suspension state\n */\n- (void)setSuspended:(BOOL)suspended;\n\n/**\n * Cancels all download operations in the queue\n */\n- (void)cancelAllDownloads;\n\n/**\n * Forces SDWebImageDownloader to create and use a new NSURLSession that is\n * initialized with the given configuration.\n * *Note*: All existing download operations in the queue will be cancelled.\n * *Note*: `timeoutIntervalForRequest` is going to be overwritten.\n *\n * @param sessionConfiguration The configuration to use for the new NSURLSession\n */\n- (void)createNewSessionWithConfiguration:(nonnull NSURLSessionConfiguration *)sessionConfiguration;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloader.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageDownloader.h\"\n#import \"SDWebImageDownloaderOperation.h\"\n\n@implementation SDWebImageDownloadToken\n@end\n\n\n@interface SDWebImageDownloader () <NSURLSessionTaskDelegate, NSURLSessionDataDelegate>\n\n@property (strong, nonatomic, nonnull) NSOperationQueue *downloadQueue;\n@property (weak, nonatomic, nullable) NSOperation *lastAddedOperation;\n@property (assign, nonatomic, nullable) Class operationClass;\n@property (strong, nonatomic, nonnull) NSMutableDictionary<NSURL *, SDWebImageDownloaderOperation *> *URLOperations;\n@property (strong, nonatomic, nullable) SDHTTPHeadersMutableDictionary *HTTPHeaders;\n// This queue is used to serialize the handling of the network responses of all the download operation in a single queue\n@property (SDDispatchQueueSetterSementics, nonatomic, nullable) dispatch_queue_t barrierQueue;\n\n// The session in which data tasks will run\n@property (strong, nonatomic) NSURLSession *session;\n\n@end\n\n@implementation SDWebImageDownloader\n\n+ (void)initialize {\n    // Bind SDNetworkActivityIndicator if available (download it here: http://github.com/rs/SDNetworkActivityIndicator )\n    // To use it, just add #import \"SDNetworkActivityIndicator.h\" in addition to the SDWebImage import\n    if (NSClassFromString(@\"SDNetworkActivityIndicator\")) {\n\n#pragma clang diagnostic push\n#pragma clang diagnostic ignored \"-Warc-performSelector-leaks\"\n        id activityIndicator = [NSClassFromString(@\"SDNetworkActivityIndicator\") performSelector:NSSelectorFromString(@\"sharedActivityIndicator\")];\n#pragma clang diagnostic pop\n\n        // Remove observer in case it was previously added.\n        [[NSNotificationCenter defaultCenter] removeObserver:activityIndicator name:SDWebImageDownloadStartNotification object:nil];\n        [[NSNotificationCenter defaultCenter] removeObserver:activityIndicator name:SDWebImageDownloadStopNotification object:nil];\n\n        [[NSNotificationCenter defaultCenter] addObserver:activityIndicator\n                                                 selector:NSSelectorFromString(@\"startActivity\")\n                                                     name:SDWebImageDownloadStartNotification object:nil];\n        [[NSNotificationCenter defaultCenter] addObserver:activityIndicator\n                                                 selector:NSSelectorFromString(@\"stopActivity\")\n                                                     name:SDWebImageDownloadStopNotification object:nil];\n    }\n}\n\n+ (nonnull instancetype)sharedDownloader {\n    static dispatch_once_t once;\n    static id instance;\n    dispatch_once(&once, ^{\n        instance = [self new];\n    });\n    return instance;\n}\n\n- (nonnull instancetype)init {\n    return [self initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];\n}\n\n- (nonnull instancetype)initWithSessionConfiguration:(nullable NSURLSessionConfiguration *)sessionConfiguration {\n    if ((self = [super init])) {\n        _operationClass = [SDWebImageDownloaderOperation class];\n        _shouldDecompressImages = YES;\n        _executionOrder = SDWebImageDownloaderFIFOExecutionOrder;\n        _downloadQueue = [NSOperationQueue new];\n        _downloadQueue.maxConcurrentOperationCount = 6;\n        _downloadQueue.name = @\"com.hackemist.SDWebImageDownloader\";\n        _URLOperations = [NSMutableDictionary new];\n#ifdef SD_WEBP\n        _HTTPHeaders = [@{@\"Accept\": @\"image/webp,image/*;q=0.8\"} mutableCopy];\n#else\n        _HTTPHeaders = [@{@\"Accept\": @\"image/*;q=0.8\"} mutableCopy];\n#endif\n        _barrierQueue = dispatch_queue_create(\"com.hackemist.SDWebImageDownloaderBarrierQueue\", DISPATCH_QUEUE_CONCURRENT);\n        _downloadTimeout = 15.0;\n\n        [self createNewSessionWithConfiguration:sessionConfiguration];\n    }\n    return self;\n}\n\n- (void)createNewSessionWithConfiguration:(NSURLSessionConfiguration *)sessionConfiguration {\n    [self cancelAllDownloads];\n\n    if (self.session) {\n        [self.session invalidateAndCancel];\n    }\n\n    sessionConfiguration.timeoutIntervalForRequest = self.downloadTimeout;\n\n    /**\n     *  Create the session for this task\n     *  We send nil as delegate queue so that the session creates a serial operation queue for performing all delegate\n     *  method calls and completion handler calls.\n     */\n    self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration\n                                                 delegate:self\n                                            delegateQueue:nil];\n}\n\n- (void)dealloc {\n    [self.session invalidateAndCancel];\n    self.session = nil;\n\n    [self.downloadQueue cancelAllOperations];\n    SDDispatchQueueRelease(_barrierQueue);\n}\n\n- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(nullable NSString *)field {\n    if (value) {\n        self.HTTPHeaders[field] = value;\n    } else {\n        [self.HTTPHeaders removeObjectForKey:field];\n    }\n}\n\n- (nullable NSString *)valueForHTTPHeaderField:(nullable NSString *)field {\n    return self.HTTPHeaders[field];\n}\n\n- (void)setMaxConcurrentDownloads:(NSInteger)maxConcurrentDownloads {\n    _downloadQueue.maxConcurrentOperationCount = maxConcurrentDownloads;\n}\n\n- (NSUInteger)currentDownloadCount {\n    return _downloadQueue.operationCount;\n}\n\n- (NSInteger)maxConcurrentDownloads {\n    return _downloadQueue.maxConcurrentOperationCount;\n}\n\n- (NSURLSessionConfiguration *)sessionConfiguration {\n    return self.session.configuration;\n}\n\n- (void)setOperationClass:(nullable Class)operationClass {\n    if (operationClass && [operationClass isSubclassOfClass:[NSOperation class]] && [operationClass conformsToProtocol:@protocol(SDWebImageDownloaderOperationInterface)]) {\n        _operationClass = operationClass;\n    } else {\n        _operationClass = [SDWebImageDownloaderOperation class];\n    }\n}\n\n- (nullable SDWebImageDownloadToken *)downloadImageWithURL:(nullable NSURL *)url\n                                                   options:(SDWebImageDownloaderOptions)options\n                                                  progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                                                 completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock {\n    __weak SDWebImageDownloader *wself = self;\n\n    return [self addProgressCallback:progressBlock completedBlock:completedBlock forURL:url createCallback:^SDWebImageDownloaderOperation *{\n        __strong __typeof (wself) sself = wself;\n        NSTimeInterval timeoutInterval = sself.downloadTimeout;\n        if (timeoutInterval == 0.0) {\n            timeoutInterval = 15.0;\n        }\n\n        // In order to prevent from potential duplicate caching (NSURLCache + SDImageCache) we disable the cache for image requests if told otherwise\n        NSURLRequestCachePolicy cachePolicy = options & SDWebImageDownloaderUseNSURLCache ? NSURLRequestUseProtocolCachePolicy : NSURLRequestReloadIgnoringLocalCacheData;\n        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url\n                                                                    cachePolicy:cachePolicy\n                                                                timeoutInterval:timeoutInterval];\n        \n        request.HTTPShouldHandleCookies = (options & SDWebImageDownloaderHandleCookies);\n        request.HTTPShouldUsePipelining = YES;\n        if (sself.headersFilter) {\n            request.allHTTPHeaderFields = sself.headersFilter(url, [sself.HTTPHeaders copy]);\n        }\n        else {\n            request.allHTTPHeaderFields = sself.HTTPHeaders;\n        }\n        SDWebImageDownloaderOperation *operation = [[sself.operationClass alloc] initWithRequest:request inSession:sself.session options:options];\n        operation.shouldDecompressImages = sself.shouldDecompressImages;\n        \n        if (sself.urlCredential) {\n            operation.credential = sself.urlCredential;\n        } else if (sself.username && sself.password) {\n            operation.credential = [NSURLCredential credentialWithUser:sself.username password:sself.password persistence:NSURLCredentialPersistenceForSession];\n        }\n        \n        if (options & SDWebImageDownloaderHighPriority) {\n            operation.queuePriority = NSOperationQueuePriorityHigh;\n        } else if (options & SDWebImageDownloaderLowPriority) {\n            operation.queuePriority = NSOperationQueuePriorityLow;\n        }\n\n        [sself.downloadQueue addOperation:operation];\n        if (sself.executionOrder == SDWebImageDownloaderLIFOExecutionOrder) {\n            // Emulate LIFO execution order by systematically adding new operations as last operation's dependency\n            [sself.lastAddedOperation addDependency:operation];\n            sself.lastAddedOperation = operation;\n        }\n\n        return operation;\n    }];\n}\n\n- (void)cancel:(nullable SDWebImageDownloadToken *)token {\n    dispatch_barrier_async(self.barrierQueue, ^{\n        SDWebImageDownloaderOperation *operation = self.URLOperations[token.url];\n        BOOL canceled = [operation cancel:token.downloadOperationCancelToken];\n        if (canceled) {\n            [self.URLOperations removeObjectForKey:token.url];\n        }\n    });\n}\n\n- (nullable SDWebImageDownloadToken *)addProgressCallback:(SDWebImageDownloaderProgressBlock)progressBlock\n                                           completedBlock:(SDWebImageDownloaderCompletedBlock)completedBlock\n                                                   forURL:(nullable NSURL *)url\n                                           createCallback:(SDWebImageDownloaderOperation *(^)(void))createCallback {\n    // The URL will be used as the key to the callbacks dictionary so it cannot be nil. If it is nil immediately call the completed block with no image or data.\n    if (url == nil) {\n        if (completedBlock != nil) {\n            completedBlock(nil, nil, nil, NO);\n        }\n        return nil;\n    }\n\n    __block SDWebImageDownloadToken *token = nil;\n\n    dispatch_barrier_sync(self.barrierQueue, ^{\n        SDWebImageDownloaderOperation *operation = self.URLOperations[url];\n        if (!operation) {\n            operation = createCallback();\n            self.URLOperations[url] = operation;\n\n            __weak SDWebImageDownloaderOperation *woperation = operation;\n            operation.completionBlock = ^{\n\t\t\t\tdispatch_barrier_sync(self.barrierQueue, ^{\n\t\t\t\t\tSDWebImageDownloaderOperation *soperation = woperation;\n\t\t\t\t\tif (!soperation) return;\n\t\t\t\t\tif (self.URLOperations[url] == soperation) {\n\t\t\t\t\t\t[self.URLOperations removeObjectForKey:url];\n\t\t\t\t\t};\n\t\t\t\t});\n            };\n        }\n        id downloadOperationCancelToken = [operation addHandlersForProgress:progressBlock completed:completedBlock];\n\n        token = [SDWebImageDownloadToken new];\n        token.url = url;\n        token.downloadOperationCancelToken = downloadOperationCancelToken;\n    });\n\n    return token;\n}\n\n- (void)setSuspended:(BOOL)suspended {\n    self.downloadQueue.suspended = suspended;\n}\n\n- (void)cancelAllDownloads {\n    [self.downloadQueue cancelAllOperations];\n}\n\n#pragma mark Helper methods\n\n- (SDWebImageDownloaderOperation *)operationWithTask:(NSURLSessionTask *)task {\n    SDWebImageDownloaderOperation *returnOperation = nil;\n    for (SDWebImageDownloaderOperation *operation in self.downloadQueue.operations) {\n        if (operation.dataTask.taskIdentifier == task.taskIdentifier) {\n            returnOperation = operation;\n            break;\n        }\n    }\n    return returnOperation;\n}\n\n#pragma mark NSURLSessionDataDelegate\n\n- (void)URLSession:(NSURLSession *)session\n          dataTask:(NSURLSessionDataTask *)dataTask\ndidReceiveResponse:(NSURLResponse *)response\n completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler {\n\n    // Identify the operation that runs this task and pass it the delegate method\n    SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:dataTask];\n\n    [dataOperation URLSession:session dataTask:dataTask didReceiveResponse:response completionHandler:completionHandler];\n}\n\n- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {\n\n    // Identify the operation that runs this task and pass it the delegate method\n    SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:dataTask];\n\n    [dataOperation URLSession:session dataTask:dataTask didReceiveData:data];\n}\n\n- (void)URLSession:(NSURLSession *)session\n          dataTask:(NSURLSessionDataTask *)dataTask\n willCacheResponse:(NSCachedURLResponse *)proposedResponse\n completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler {\n\n    // Identify the operation that runs this task and pass it the delegate method\n    SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:dataTask];\n\n    [dataOperation URLSession:session dataTask:dataTask willCacheResponse:proposedResponse completionHandler:completionHandler];\n}\n\n#pragma mark NSURLSessionTaskDelegate\n\n- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {\n    // Identify the operation that runs this task and pass it the delegate method\n    SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:task];\n\n    [dataOperation URLSession:session task:task didCompleteWithError:error];\n}\n\n- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse *)response newRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler {\n    \n    completionHandler(request);\n}\n\n- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {\n\n    // Identify the operation that runs this task and pass it the delegate method\n    SDWebImageDownloaderOperation *dataOperation = [self operationWithTask:task];\n\n    [dataOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler];\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <Foundation/Foundation.h>\n#import \"SDWebImageDownloader.h\"\n#import \"SDWebImageOperation.h\"\n\nFOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStartNotification;\nFOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadReceiveResponseNotification;\nFOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadStopNotification;\nFOUNDATION_EXPORT NSString * _Nonnull const SDWebImageDownloadFinishNotification;\n\n\n\n/**\n Describes a downloader operation. If one wants to use a custom downloader op, it needs to inherit from `NSOperation` and conform to this protocol\n */\n@protocol SDWebImageDownloaderOperationInterface<NSObject>\n\n- (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request\n                              inSession:(nullable NSURLSession *)session\n                                options:(SDWebImageDownloaderOptions)options;\n\n- (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                            completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock;\n\n- (BOOL)shouldDecompressImages;\n- (void)setShouldDecompressImages:(BOOL)value;\n\n- (nullable NSURLCredential *)credential;\n- (void)setCredential:(nullable NSURLCredential *)value;\n\n@end\n\n\n@interface SDWebImageDownloaderOperation : NSOperation <SDWebImageDownloaderOperationInterface, SDWebImageOperation, NSURLSessionTaskDelegate, NSURLSessionDataDelegate>\n\n/**\n * The request used by the operation's task.\n */\n@property (strong, nonatomic, readonly, nullable) NSURLRequest *request;\n\n/**\n * The operation's task\n */\n@property (strong, nonatomic, readonly, nullable) NSURLSessionTask *dataTask;\n\n\n@property (assign, nonatomic) BOOL shouldDecompressImages;\n\n/**\n *  Was used to determine whether the URL connection should consult the credential storage for authenticating the connection.\n *  @deprecated Not used for a couple of versions\n */\n@property (nonatomic, assign) BOOL shouldUseCredentialStorage __deprecated_msg(\"Property deprecated. Does nothing. Kept only for backwards compatibility\");\n\n/**\n * The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`.\n *\n * This will be overridden by any shared credentials that exist for the username or password of the request URL, if present.\n */\n@property (nonatomic, strong, nullable) NSURLCredential *credential;\n\n/**\n * The SDWebImageDownloaderOptions for the receiver.\n */\n@property (assign, nonatomic, readonly) SDWebImageDownloaderOptions options;\n\n/**\n * The expected size of data.\n */\n@property (assign, nonatomic) NSInteger expectedSize;\n\n/**\n * The response returned by the operation's connection.\n */\n@property (strong, nonatomic, nullable) NSURLResponse *response;\n\n/**\n *  Initializes a `SDWebImageDownloaderOperation` object\n *\n *  @see SDWebImageDownloaderOperation\n *\n *  @param request        the URL request\n *  @param session        the URL session in which this operation will run\n *  @param options        downloader options\n *\n *  @return the initialized instance\n */\n- (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request\n                              inSession:(nullable NSURLSession *)session\n                                options:(SDWebImageDownloaderOptions)options NS_DESIGNATED_INITIALIZER;\n\n/**\n *  Adds handlers for progress and completion. Returns a tokent that can be passed to -cancel: to cancel this set of\n *  callbacks.\n *\n *  @param progressBlock  the block executed when a new chunk of data arrives.\n *                        @note the progress block is executed on a background queue\n *  @param completedBlock the block executed when the download is done.\n *                        @note the completed block is executed on the main queue for success. If errors are found, there is a chance the block will be executed on a background queue\n *\n *  @return the token to use to cancel this set of handlers\n */\n- (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                            completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock;\n\n/**\n *  Cancels a set of callbacks. Once all callbacks are canceled, the operation is cancelled.\n *\n *  @param token the token representing a set of callbacks to cancel\n *\n *  @return YES if the operation was stopped because this was the last token to be canceled. NO otherwise.\n */\n- (BOOL)cancel:(nullable id)token;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageDownloaderOperation.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageDownloaderOperation.h\"\n#import \"SDWebImageDecoder.h\"\n#import \"UIImage+MultiFormat.h\"\n#import <ImageIO/ImageIO.h>\n#import \"SDWebImageManager.h\"\n#import \"NSImage+WebCache.h\"\n\nNSString *const SDWebImageDownloadStartNotification = @\"SDWebImageDownloadStartNotification\";\nNSString *const SDWebImageDownloadReceiveResponseNotification = @\"SDWebImageDownloadReceiveResponseNotification\";\nNSString *const SDWebImageDownloadStopNotification = @\"SDWebImageDownloadStopNotification\";\nNSString *const SDWebImageDownloadFinishNotification = @\"SDWebImageDownloadFinishNotification\";\n\nstatic NSString *const kProgressCallbackKey = @\"progress\";\nstatic NSString *const kCompletedCallbackKey = @\"completed\";\n\ntypedef NSMutableDictionary<NSString *, id> SDCallbacksDictionary;\n\n@interface SDWebImageDownloaderOperation ()\n\n@property (strong, nonatomic, nonnull) NSMutableArray<SDCallbacksDictionary *> *callbackBlocks;\n\n@property (assign, nonatomic, getter = isExecuting) BOOL executing;\n@property (assign, nonatomic, getter = isFinished) BOOL finished;\n@property (strong, nonatomic, nullable) NSMutableData *imageData;\n@property (copy, nonatomic, nullable) NSData *cachedData;\n\n// This is weak because it is injected by whoever manages this session. If this gets nil-ed out, we won't be able to run\n// the task associated with this operation\n@property (weak, nonatomic, nullable) NSURLSession *unownedSession;\n// This is set if we're using not using an injected NSURLSession. We're responsible of invalidating this one\n@property (strong, nonatomic, nullable) NSURLSession *ownedSession;\n\n@property (strong, nonatomic, readwrite, nullable) NSURLSessionTask *dataTask;\n\n@property (SDDispatchQueueSetterSementics, nonatomic, nullable) dispatch_queue_t barrierQueue;\n\n#if SD_UIKIT\n@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundTaskId;\n#endif\n\n@end\n\n@implementation SDWebImageDownloaderOperation {\n    size_t _width, _height;\n#if SD_UIKIT || SD_WATCH\n    UIImageOrientation _orientation;\n#endif\n    CGImageSourceRef _imageSource;\n}\n\n@synthesize executing = _executing;\n@synthesize finished = _finished;\n\n- (nonnull instancetype)init {\n    return [self initWithRequest:nil inSession:nil options:0];\n}\n\n- (nonnull instancetype)initWithRequest:(nullable NSURLRequest *)request\n                              inSession:(nullable NSURLSession *)session\n                                options:(SDWebImageDownloaderOptions)options {\n    if ((self = [super init])) {\n        _request = [request copy];\n        _shouldDecompressImages = YES;\n        _options = options;\n        _callbackBlocks = [NSMutableArray new];\n        _executing = NO;\n        _finished = NO;\n        _expectedSize = 0;\n        _unownedSession = session;\n        _barrierQueue = dispatch_queue_create(\"com.hackemist.SDWebImageDownloaderOperationBarrierQueue\", DISPATCH_QUEUE_CONCURRENT);\n    }\n    return self;\n}\n\n- (void)dealloc {\n    SDDispatchQueueRelease(_barrierQueue);\n    if (_imageSource) {\n        CFRelease(_imageSource);\n        _imageSource = NULL;\n    }\n}\n\n- (nullable id)addHandlersForProgress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                            completed:(nullable SDWebImageDownloaderCompletedBlock)completedBlock {\n    SDCallbacksDictionary *callbacks = [NSMutableDictionary new];\n    if (progressBlock) callbacks[kProgressCallbackKey] = [progressBlock copy];\n    if (completedBlock) callbacks[kCompletedCallbackKey] = [completedBlock copy];\n    dispatch_barrier_async(self.barrierQueue, ^{\n        [self.callbackBlocks addObject:callbacks];\n    });\n    return callbacks;\n}\n\n- (nullable NSArray<id> *)callbacksForKey:(NSString *)key {\n    __block NSMutableArray<id> *callbacks = nil;\n    dispatch_sync(self.barrierQueue, ^{\n        // We need to remove [NSNull null] because there might not always be a progress block for each callback\n        callbacks = [[self.callbackBlocks valueForKey:key] mutableCopy];\n        [callbacks removeObjectIdenticalTo:[NSNull null]];\n    });\n    return [callbacks copy];    // strip mutability here\n}\n\n- (BOOL)cancel:(nullable id)token {\n    __block BOOL shouldCancel = NO;\n    dispatch_barrier_sync(self.barrierQueue, ^{\n        [self.callbackBlocks removeObjectIdenticalTo:token];\n        if (self.callbackBlocks.count == 0) {\n            shouldCancel = YES;\n        }\n    });\n    if (shouldCancel) {\n        [self cancel];\n    }\n    return shouldCancel;\n}\n\n- (void)start {\n    @synchronized (self) {\n        if (self.isCancelled) {\n            self.finished = YES;\n            [self reset];\n            return;\n        }\n\n#if SD_UIKIT\n        Class UIApplicationClass = NSClassFromString(@\"UIApplication\");\n        BOOL hasApplication = UIApplicationClass && [UIApplicationClass respondsToSelector:@selector(sharedApplication)];\n        if (hasApplication && [self shouldContinueWhenAppEntersBackground]) {\n            __weak __typeof__ (self) wself = self;\n            UIApplication * app = [UIApplicationClass performSelector:@selector(sharedApplication)];\n            self.backgroundTaskId = [app beginBackgroundTaskWithExpirationHandler:^{\n                __strong __typeof (wself) sself = wself;\n\n                if (sself) {\n                    [sself cancel];\n\n                    [app endBackgroundTask:sself.backgroundTaskId];\n                    sself.backgroundTaskId = UIBackgroundTaskInvalid;\n                }\n            }];\n        }\n#endif\n        if (self.options & SDWebImageDownloaderIgnoreCachedResponse) {\n            // Grab the cached data for later check\n            NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:self.request];\n            if (cachedResponse) {\n                self.cachedData = cachedResponse.data;\n            }\n        }\n        \n        NSURLSession *session = self.unownedSession;\n        if (!self.unownedSession) {\n            NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];\n            sessionConfig.timeoutIntervalForRequest = 15;\n            \n            /**\n             *  Create the session for this task\n             *  We send nil as delegate queue so that the session creates a serial operation queue for performing all delegate\n             *  method calls and completion handler calls.\n             */\n            self.ownedSession = [NSURLSession sessionWithConfiguration:sessionConfig\n                                                              delegate:self\n                                                         delegateQueue:nil];\n            session = self.ownedSession;\n        }\n        \n        self.dataTask = [session dataTaskWithRequest:self.request];\n        self.executing = YES;\n    }\n    \n    [self.dataTask resume];\n\n    if (self.dataTask) {\n        for (SDWebImageDownloaderProgressBlock progressBlock in [self callbacksForKey:kProgressCallbackKey]) {\n            progressBlock(0, NSURLResponseUnknownLength, self.request.URL);\n        }\n        __weak typeof(self) weakSelf = self;\n        dispatch_async(dispatch_get_main_queue(), ^{\n            [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStartNotification object:weakSelf];\n        });\n    } else {\n        [self callCompletionBlocksWithError:[NSError errorWithDomain:NSURLErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @\"Connection can't be initialized\"}]];\n    }\n\n#if SD_UIKIT\n    Class UIApplicationClass = NSClassFromString(@\"UIApplication\");\n    if(!UIApplicationClass || ![UIApplicationClass respondsToSelector:@selector(sharedApplication)]) {\n        return;\n    }\n    if (self.backgroundTaskId != UIBackgroundTaskInvalid) {\n        UIApplication * app = [UIApplication performSelector:@selector(sharedApplication)];\n        [app endBackgroundTask:self.backgroundTaskId];\n        self.backgroundTaskId = UIBackgroundTaskInvalid;\n    }\n#endif\n}\n\n- (void)cancel {\n    @synchronized (self) {\n        [self cancelInternal];\n    }\n}\n\n- (void)cancelInternal {\n    if (self.isFinished) return;\n    [super cancel];\n\n    if (self.dataTask) {\n        [self.dataTask cancel];\n        __weak typeof(self) weakSelf = self;\n        dispatch_async(dispatch_get_main_queue(), ^{\n            [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:weakSelf];\n        });\n\n        // As we cancelled the connection, its callback won't be called and thus won't\n        // maintain the isFinished and isExecuting flags.\n        if (self.isExecuting) self.executing = NO;\n        if (!self.isFinished) self.finished = YES;\n    }\n\n    [self reset];\n}\n\n- (void)done {\n    self.finished = YES;\n    self.executing = NO;\n    [self reset];\n}\n\n- (void)reset {\n    __weak typeof(self) weakSelf = self;\n    dispatch_barrier_async(self.barrierQueue, ^{\n        [weakSelf.callbackBlocks removeAllObjects];\n    });\n    self.dataTask = nil;\n    \n    NSOperationQueue *delegateQueue;\n    if (self.unownedSession) {\n        delegateQueue = self.unownedSession.delegateQueue;\n    } else {\n        delegateQueue = self.ownedSession.delegateQueue;\n    }\n    if (delegateQueue) {\n        NSAssert(delegateQueue.maxConcurrentOperationCount == 1, @\"NSURLSession delegate queue should be a serial queue\");\n        [delegateQueue addOperationWithBlock:^{\n            weakSelf.imageData = nil;\n        }];\n    }\n    \n    if (self.ownedSession) {\n        [self.ownedSession invalidateAndCancel];\n        self.ownedSession = nil;\n    }\n}\n\n- (void)setFinished:(BOOL)finished {\n    [self willChangeValueForKey:@\"isFinished\"];\n    _finished = finished;\n    [self didChangeValueForKey:@\"isFinished\"];\n}\n\n- (void)setExecuting:(BOOL)executing {\n    [self willChangeValueForKey:@\"isExecuting\"];\n    _executing = executing;\n    [self didChangeValueForKey:@\"isExecuting\"];\n}\n\n- (BOOL)isConcurrent {\n    return YES;\n}\n\n#pragma mark NSURLSessionDataDelegate\n\n- (void)URLSession:(NSURLSession *)session\n          dataTask:(NSURLSessionDataTask *)dataTask\ndidReceiveResponse:(NSURLResponse *)response\n completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler {\n    \n    //'304 Not Modified' is an exceptional one\n    if (![response respondsToSelector:@selector(statusCode)] || (((NSHTTPURLResponse *)response).statusCode < 400 && ((NSHTTPURLResponse *)response).statusCode != 304)) {\n        NSInteger expected = (NSInteger)response.expectedContentLength;\n        expected = expected > 0 ? expected : 0;\n        self.expectedSize = expected;\n        for (SDWebImageDownloaderProgressBlock progressBlock in [self callbacksForKey:kProgressCallbackKey]) {\n            progressBlock(0, expected, self.request.URL);\n        }\n        \n        self.imageData = [[NSMutableData alloc] initWithCapacity:expected];\n        self.response = response;\n        __weak typeof(self) weakSelf = self;\n        dispatch_async(dispatch_get_main_queue(), ^{\n            [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadReceiveResponseNotification object:weakSelf];\n        });\n    } else {\n        NSUInteger code = ((NSHTTPURLResponse *)response).statusCode;\n        \n        //This is the case when server returns '304 Not Modified'. It means that remote image is not changed.\n        //In case of 304 we need just cancel the operation and return cached image from the cache.\n        if (code == 304) {\n            [self cancelInternal];\n        } else {\n            [self.dataTask cancel];\n        }\n        __weak typeof(self) weakSelf = self;\n        dispatch_async(dispatch_get_main_queue(), ^{\n            [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:weakSelf];\n        });\n        \n        [self callCompletionBlocksWithError:[NSError errorWithDomain:NSURLErrorDomain code:((NSHTTPURLResponse *)response).statusCode userInfo:nil]];\n\n        [self done];\n    }\n    \n    if (completionHandler) {\n        completionHandler(NSURLSessionResponseAllow);\n    }\n}\n\n- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {\n    [self.imageData appendData:data];\n\n    if ((self.options & SDWebImageDownloaderProgressiveDownload) && self.expectedSize > 0) {\n        // The following code is from http://www.cocoaintheshell.com/2011/05/progressive-images-download-imageio/\n        // Thanks to the author @Nyx0uf\n        \n        // Get the image data\n        NSData *imageData = [self.imageData copy];\n        // Get the total bytes downloaded\n        const NSInteger totalSize = imageData.length;\n        // Get the finish status\n        BOOL finished = (totalSize >= self.expectedSize);\n        \n        if (!_imageSource) {\n            _imageSource = CGImageSourceCreateIncremental(NULL);\n        }\n        // Update the data source, we must pass ALL the data, not just the new bytes\n        CGImageSourceUpdateData(_imageSource, (__bridge CFDataRef)imageData, finished);\n        \n        if (_width + _height == 0) {\n            CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(_imageSource, 0, NULL);\n            if (properties) {\n                NSInteger orientationValue = -1;\n                CFTypeRef val = CFDictionaryGetValue(properties, kCGImagePropertyPixelHeight);\n                if (val) CFNumberGetValue(val, kCFNumberLongType, &_height);\n                val = CFDictionaryGetValue(properties, kCGImagePropertyPixelWidth);\n                if (val) CFNumberGetValue(val, kCFNumberLongType, &_width);\n                val = CFDictionaryGetValue(properties, kCGImagePropertyOrientation);\n                if (val) CFNumberGetValue(val, kCFNumberNSIntegerType, &orientationValue);\n                CFRelease(properties);\n                \n                // When we draw to Core Graphics, we lose orientation information,\n                // which means the image below born of initWithCGIImage will be\n                // oriented incorrectly sometimes. (Unlike the image born of initWithData\n                // in didCompleteWithError.) So save it here and pass it on later.\n#if SD_UIKIT || SD_WATCH\n                _orientation = [[self class] orientationFromPropertyValue:(orientationValue == -1 ? 1 : orientationValue)];\n#endif\n            }\n        }\n        \n        if (_width + _height > 0 && !finished) {\n            // Create the image\n            CGImageRef partialImageRef = CGImageSourceCreateImageAtIndex(_imageSource, 0, NULL);\n            \n#if SD_UIKIT || SD_WATCH\n            // Workaround for iOS anamorphic image\n            if (partialImageRef) {\n                const size_t partialHeight = CGImageGetHeight(partialImageRef);\n                CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();\n                CGContextRef bmContext = CGBitmapContextCreate(NULL, _width, _height, 8, _width * 4, colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);\n                CGColorSpaceRelease(colorSpace);\n                if (bmContext) {\n                    CGContextDrawImage(bmContext, (CGRect){.origin.x = 0.0f, .origin.y = 0.0f, .size.width = _width, .size.height = partialHeight}, partialImageRef);\n                    CGImageRelease(partialImageRef);\n                    partialImageRef = CGBitmapContextCreateImage(bmContext);\n                    CGContextRelease(bmContext);\n                }\n                else {\n                    CGImageRelease(partialImageRef);\n                    partialImageRef = nil;\n                }\n            }\n#endif\n            \n            if (partialImageRef) {\n#if SD_UIKIT || SD_WATCH\n                UIImage *image = [UIImage imageWithCGImage:partialImageRef scale:1 orientation:_orientation];\n#elif SD_MAC\n                UIImage *image = [[UIImage alloc] initWithCGImage:partialImageRef size:NSZeroSize];\n#endif\n                CGImageRelease(partialImageRef);\n                NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:self.request.URL];\n                UIImage *scaledImage = [self scaledImageForKey:key image:image];\n                if (self.shouldDecompressImages) {\n                    image = [UIImage decodedImageWithImage:scaledImage];\n                }\n                else {\n                    image = scaledImage;\n                }\n                \n                [self callCompletionBlocksWithImage:image imageData:nil error:nil finished:NO];\n            }\n        }\n        \n        if (finished) {\n            if (_imageSource) {\n                CFRelease(_imageSource);\n                _imageSource = NULL;\n            }\n        }\n    }\n\n    for (SDWebImageDownloaderProgressBlock progressBlock in [self callbacksForKey:kProgressCallbackKey]) {\n        progressBlock(self.imageData.length, self.expectedSize, self.request.URL);\n    }\n}\n\n- (void)URLSession:(NSURLSession *)session\n          dataTask:(NSURLSessionDataTask *)dataTask\n willCacheResponse:(NSCachedURLResponse *)proposedResponse\n completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler {\n    \n    NSCachedURLResponse *cachedResponse = proposedResponse;\n\n    if (self.request.cachePolicy == NSURLRequestReloadIgnoringLocalCacheData) {\n        // Prevents caching of responses\n        cachedResponse = nil;\n    }\n    if (completionHandler) {\n        completionHandler(cachedResponse);\n    }\n}\n\n#pragma mark NSURLSessionTaskDelegate\n\n- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {\n    @synchronized(self) {\n        self.dataTask = nil;\n        __weak typeof(self) weakSelf = self;\n        dispatch_async(dispatch_get_main_queue(), ^{\n            [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadStopNotification object:weakSelf];\n            if (!error) {\n                [[NSNotificationCenter defaultCenter] postNotificationName:SDWebImageDownloadFinishNotification object:weakSelf];\n            }\n        });\n    }\n    \n    if (error) {\n        [self callCompletionBlocksWithError:error];\n    } else {\n        if ([self callbacksForKey:kCompletedCallbackKey].count > 0) {\n            /**\n             *  If you specified to use `NSURLCache`, then the response you get here is what you need.\n             */\n            NSData *imageData = [self.imageData copy];\n            if (imageData) {\n                UIImage *image = [UIImage sd_imageWithData:imageData];\n                /**  if you specified to only use cached data via `SDWebImageDownloaderIgnoreCachedResponse`,\n                 *  then we should check if the cached data is equal to image data\n                 */\n                if (self.options & SDWebImageDownloaderIgnoreCachedResponse && [self.cachedData isEqualToData:imageData]) {\n                    // call completion block with nil\n                    [self callCompletionBlocksWithImage:nil imageData:nil error:nil finished:YES];\n                } else {\n                    NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:self.request.URL];\n                    image = [self scaledImageForKey:key image:image];\n                    \n                    BOOL shouldDecode = YES;\n                    // Do not force decoding animated GIFs and WebPs\n                    if (image.images) {\n                        shouldDecode = NO;\n                    } else {\n#ifdef SD_WEBP\n                        SDImageFormat imageFormat = [NSData sd_imageFormatForImageData:imageData];\n                        if (imageFormat == SDImageFormatWebP) {\n                            shouldDecode = NO;\n                        }\n#endif\n                    }\n                    \n                    if (shouldDecode) {\n                        if (self.shouldDecompressImages) {\n                            if (self.options & SDWebImageDownloaderScaleDownLargeImages) {\n#if SD_UIKIT || SD_WATCH\n                                image = [UIImage decodedAndScaledDownImageWithImage:image];\n                                imageData = UIImagePNGRepresentation(image);\n#endif\n                            } else {\n                                image = [UIImage decodedImageWithImage:image];\n                            }\n                        }\n                    }\n                    if (CGSizeEqualToSize(image.size, CGSizeZero)) {\n                        [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @\"Downloaded image has 0 pixels\"}]];\n                    } else {\n                        [self callCompletionBlocksWithImage:image imageData:imageData error:nil finished:YES];\n                    }\n                }\n            } else {\n                [self callCompletionBlocksWithError:[NSError errorWithDomain:SDWebImageErrorDomain code:0 userInfo:@{NSLocalizedDescriptionKey : @\"Image data is nil\"}]];\n            }\n        }\n    }\n    [self done];\n}\n\n- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {\n    \n    NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling;\n    __block NSURLCredential *credential = nil;\n    \n    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {\n        if (!(self.options & SDWebImageDownloaderAllowInvalidSSLCertificates)) {\n            disposition = NSURLSessionAuthChallengePerformDefaultHandling;\n        } else {\n            credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];\n            disposition = NSURLSessionAuthChallengeUseCredential;\n        }\n    } else {\n        if (challenge.previousFailureCount == 0) {\n            if (self.credential) {\n                credential = self.credential;\n                disposition = NSURLSessionAuthChallengeUseCredential;\n            } else {\n                disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge;\n            }\n        } else {\n            disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge;\n        }\n    }\n    \n    if (completionHandler) {\n        completionHandler(disposition, credential);\n    }\n}\n\n#pragma mark Helper methods\n\n#if SD_UIKIT || SD_WATCH\n+ (UIImageOrientation)orientationFromPropertyValue:(NSInteger)value {\n    switch (value) {\n        case 1:\n            return UIImageOrientationUp;\n        case 3:\n            return UIImageOrientationDown;\n        case 8:\n            return UIImageOrientationLeft;\n        case 6:\n            return UIImageOrientationRight;\n        case 2:\n            return UIImageOrientationUpMirrored;\n        case 4:\n            return UIImageOrientationDownMirrored;\n        case 5:\n            return UIImageOrientationLeftMirrored;\n        case 7:\n            return UIImageOrientationRightMirrored;\n        default:\n            return UIImageOrientationUp;\n    }\n}\n#endif\n\n- (nullable UIImage *)scaledImageForKey:(nullable NSString *)key image:(nullable UIImage *)image {\n    return SDScaledImageForKey(key, image);\n}\n\n- (BOOL)shouldContinueWhenAppEntersBackground {\n    return self.options & SDWebImageDownloaderContinueInBackground;\n}\n\n- (void)callCompletionBlocksWithError:(nullable NSError *)error {\n    [self callCompletionBlocksWithImage:nil imageData:nil error:error finished:YES];\n}\n\n- (void)callCompletionBlocksWithImage:(nullable UIImage *)image\n                            imageData:(nullable NSData *)imageData\n                                error:(nullable NSError *)error\n                             finished:(BOOL)finished {\n    NSArray<id> *completionBlocks = [self callbacksForKey:kCompletedCallbackKey];\n    dispatch_main_async_safe(^{\n        for (SDWebImageDownloaderCompletedBlock completedBlock in completionBlocks) {\n            completedBlock(image, imageData, error, finished);\n        }\n    });\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageManager.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n#import \"SDWebImageOperation.h\"\n#import \"SDWebImageDownloader.h\"\n#import \"SDImageCache.h\"\n\ntypedef NS_OPTIONS(NSUInteger, SDWebImageOptions) {\n    /**\n     * By default, when a URL fail to be downloaded, the URL is blacklisted so the library won't keep trying.\n     * This flag disable this blacklisting.\n     */\n    SDWebImageRetryFailed = 1 << 0,\n\n    /**\n     * By default, image downloads are started during UI interactions, this flags disable this feature,\n     * leading to delayed download on UIScrollView deceleration for instance.\n     */\n    SDWebImageLowPriority = 1 << 1,\n\n    /**\n     * This flag disables on-disk caching\n     */\n    SDWebImageCacheMemoryOnly = 1 << 2,\n\n    /**\n     * This flag enables progressive download, the image is displayed progressively during download as a browser would do.\n     * By default, the image is only displayed once completely downloaded.\n     */\n    SDWebImageProgressiveDownload = 1 << 3,\n\n    /**\n     * Even if the image is cached, respect the HTTP response cache control, and refresh the image from remote location if needed.\n     * The disk caching will be handled by NSURLCache instead of SDWebImage leading to slight performance degradation.\n     * This option helps deal with images changing behind the same request URL, e.g. Facebook graph api profile pics.\n     * If a cached image is refreshed, the completion block is called once with the cached image and again with the final image.\n     *\n     * Use this flag only if you can't make your URLs static with embedded cache busting parameter.\n     */\n    SDWebImageRefreshCached = 1 << 4,\n\n    /**\n     * In iOS 4+, continue the download of the image if the app goes to background. This is achieved by asking the system for\n     * extra time in background to let the request finish. If the background task expires the operation will be cancelled.\n     */\n    SDWebImageContinueInBackground = 1 << 5,\n\n    /**\n     * Handles cookies stored in NSHTTPCookieStore by setting\n     * NSMutableURLRequest.HTTPShouldHandleCookies = YES;\n     */\n    SDWebImageHandleCookies = 1 << 6,\n\n    /**\n     * Enable to allow untrusted SSL certificates.\n     * Useful for testing purposes. Use with caution in production.\n     */\n    SDWebImageAllowInvalidSSLCertificates = 1 << 7,\n\n    /**\n     * By default, images are loaded in the order in which they were queued. This flag moves them to\n     * the front of the queue.\n     */\n    SDWebImageHighPriority = 1 << 8,\n    \n    /**\n     * By default, placeholder images are loaded while the image is loading. This flag will delay the loading\n     * of the placeholder image until after the image has finished loading.\n     */\n    SDWebImageDelayPlaceholder = 1 << 9,\n\n    /**\n     * We usually don't call transformDownloadedImage delegate method on animated images,\n     * as most transformation code would mangle it.\n     * Use this flag to transform them anyway.\n     */\n    SDWebImageTransformAnimatedImage = 1 << 10,\n    \n    /**\n     * By default, image is added to the imageView after download. But in some cases, we want to\n     * have the hand before setting the image (apply a filter or add it with cross-fade animation for instance)\n     * Use this flag if you want to manually set the image in the completion when success\n     */\n    SDWebImageAvoidAutoSetImage = 1 << 11,\n    \n    /**\n     * By default, images are decoded respecting their original size. On iOS, this flag will scale down the\n     * images to a size compatible with the constrained memory of devices.\n     * If `SDWebImageProgressiveDownload` flag is set the scale down is deactivated.\n     */\n    SDWebImageScaleDownLargeImages = 1 << 12\n};\n\ntypedef void(^SDExternalCompletionBlock)(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL);\n\ntypedef void(^SDInternalCompletionBlock)(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL);\n\ntypedef NSString * _Nullable (^SDWebImageCacheKeyFilterBlock)(NSURL * _Nullable url);\n\n\n@class SDWebImageManager;\n\n@protocol SDWebImageManagerDelegate <NSObject>\n\n@optional\n\n/**\n * Controls which image should be downloaded when the image is not found in the cache.\n *\n * @param imageManager The current `SDWebImageManager`\n * @param imageURL     The url of the image to be downloaded\n *\n * @return Return NO to prevent the downloading of the image on cache misses. If not implemented, YES is implied.\n */\n- (BOOL)imageManager:(nonnull SDWebImageManager *)imageManager shouldDownloadImageForURL:(nullable NSURL *)imageURL;\n\n/**\n * Allows to transform the image immediately after it has been downloaded and just before to cache it on disk and memory.\n * NOTE: This method is called from a global queue in order to not to block the main thread.\n *\n * @param imageManager The current `SDWebImageManager`\n * @param image        The image to transform\n * @param imageURL     The url of the image to transform\n *\n * @return The transformed image object.\n */\n- (nullable UIImage *)imageManager:(nonnull SDWebImageManager *)imageManager transformDownloadedImage:(nullable UIImage *)image withURL:(nullable NSURL *)imageURL;\n\n@end\n\n/**\n * The SDWebImageManager is the class behind the UIImageView+WebCache category and likes.\n * It ties the asynchronous downloader (SDWebImageDownloader) with the image cache store (SDImageCache).\n * You can use this class directly to benefit from web image downloading with caching in another context than\n * a UIView.\n *\n * Here is a simple example of how to use SDWebImageManager:\n *\n * @code\n\nSDWebImageManager *manager = [SDWebImageManager sharedManager];\n[manager loadImageWithURL:imageURL\n                  options:0\n                 progress:nil\n                completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {\n                    if (image) {\n                        // do something with image\n                    }\n                }];\n\n * @endcode\n */\n@interface SDWebImageManager : NSObject\n\n@property (weak, nonatomic, nullable) id <SDWebImageManagerDelegate> delegate;\n\n@property (strong, nonatomic, readonly, nullable) SDImageCache *imageCache;\n@property (strong, nonatomic, readonly, nullable) SDWebImageDownloader *imageDownloader;\n\n/**\n * The cache filter is a block used each time SDWebImageManager need to convert an URL into a cache key. This can\n * be used to remove dynamic part of an image URL.\n *\n * The following example sets a filter in the application delegate that will remove any query-string from the\n * URL before to use it as a cache key:\n *\n * @code\n\n[[SDWebImageManager sharedManager] setCacheKeyFilter:^(NSURL *url) {\n    url = [[NSURL alloc] initWithScheme:url.scheme host:url.host path:url.path];\n    return [url absoluteString];\n}];\n\n * @endcode\n */\n@property (nonatomic, copy, nullable) SDWebImageCacheKeyFilterBlock cacheKeyFilter;\n\n/**\n * Returns global SDWebImageManager instance.\n *\n * @return SDWebImageManager shared instance\n */\n+ (nonnull instancetype)sharedManager;\n\n/**\n * Allows to specify instance of cache and image downloader used with image manager.\n * @return new instance of `SDWebImageManager` with specified cache and downloader.\n */\n- (nonnull instancetype)initWithCache:(nonnull SDImageCache *)cache downloader:(nonnull SDWebImageDownloader *)downloader NS_DESIGNATED_INITIALIZER;\n\n/**\n * Downloads the image at the given URL if not present in cache or return the cached version otherwise.\n *\n * @param url            The URL to the image\n * @param options        A mask to specify options to use for this request\n * @param progressBlock  A block called while image is downloading\n *                       @note the progress block is executed on a background queue\n * @param completedBlock A block called when operation has been completed.\n *\n *   This parameter is required.\n * \n *   This block has no return value and takes the requested UIImage as first parameter and the NSData representation as second parameter.\n *   In case of error the image parameter is nil and the third parameter may contain an NSError.\n *\n *   The forth parameter is an `SDImageCacheType` enum indicating if the image was retrieved from the local cache\n *   or from the memory cache or from the network.\n *\n *   The fith parameter is set to NO when the SDWebImageProgressiveDownload option is used and the image is\n *   downloading. This block is thus called repeatedly with a partial image. When image is fully downloaded, the\n *   block is called a last time with the full image and the last parameter set to YES.\n *\n *   The last parameter is the original image URL\n *\n * @return Returns an NSObject conforming to SDWebImageOperation. Should be an instance of SDWebImageDownloaderOperation\n */\n- (nullable id <SDWebImageOperation>)loadImageWithURL:(nullable NSURL *)url\n                                              options:(SDWebImageOptions)options\n                                             progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                                            completed:(nullable SDInternalCompletionBlock)completedBlock;\n\n/**\n * Saves image to cache for given URL\n *\n * @param image The image to cache\n * @param url   The URL to the image\n *\n */\n\n- (void)saveImageToCache:(nullable UIImage *)image forURL:(nullable NSURL *)url;\n\n/**\n * Cancel all current operations\n */\n- (void)cancelAll;\n\n/**\n * Check one or more operations running\n */\n- (BOOL)isRunning;\n\n/**\n *  Async check if image has already been cached\n *\n *  @param url              image url\n *  @param completionBlock  the block to be executed when the check is finished\n *  \n *  @note the completion block is always executed on the main queue\n */\n- (void)cachedImageExistsForURL:(nullable NSURL *)url\n                     completion:(nullable SDWebImageCheckCacheCompletionBlock)completionBlock;\n\n/**\n *  Async check if image has already been cached on disk only\n *\n *  @param url              image url\n *  @param completionBlock  the block to be executed when the check is finished\n *\n *  @note the completion block is always executed on the main queue\n */\n- (void)diskImageExistsForURL:(nullable NSURL *)url\n                   completion:(nullable SDWebImageCheckCacheCompletionBlock)completionBlock;\n\n\n/**\n *Return the cache key for a given URL\n */\n- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageManager.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageManager.h\"\n#import <objc/message.h>\n#import \"NSImage+WebCache.h\"\n\n@interface SDWebImageCombinedOperation : NSObject <SDWebImageOperation>\n\n@property (assign, nonatomic, getter = isCancelled) BOOL cancelled;\n@property (copy, nonatomic, nullable) SDWebImageNoParamsBlock cancelBlock;\n@property (strong, nonatomic, nullable) NSOperation *cacheOperation;\n\n@end\n\n@interface SDWebImageManager ()\n\n@property (strong, nonatomic, readwrite, nonnull) SDImageCache *imageCache;\n@property (strong, nonatomic, readwrite, nonnull) SDWebImageDownloader *imageDownloader;\n@property (strong, nonatomic, nonnull) NSMutableSet<NSURL *> *failedURLs;\n@property (strong, nonatomic, nonnull) NSMutableArray<SDWebImageCombinedOperation *> *runningOperations;\n\n@end\n\n@implementation SDWebImageManager\n\n+ (nonnull instancetype)sharedManager {\n    static dispatch_once_t once;\n    static id instance;\n    dispatch_once(&once, ^{\n        instance = [self new];\n    });\n    return instance;\n}\n\n- (nonnull instancetype)init {\n    SDImageCache *cache = [SDImageCache sharedImageCache];\n    SDWebImageDownloader *downloader = [SDWebImageDownloader sharedDownloader];\n    return [self initWithCache:cache downloader:downloader];\n}\n\n- (nonnull instancetype)initWithCache:(nonnull SDImageCache *)cache downloader:(nonnull SDWebImageDownloader *)downloader {\n    if ((self = [super init])) {\n        _imageCache = cache;\n        _imageDownloader = downloader;\n        _failedURLs = [NSMutableSet new];\n        _runningOperations = [NSMutableArray new];\n    }\n    return self;\n}\n\n- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url {\n    if (!url) {\n        return @\"\";\n    }\n\n    if (self.cacheKeyFilter) {\n        return self.cacheKeyFilter(url);\n    } else {\n        return url.absoluteString;\n    }\n}\n\n- (void)cachedImageExistsForURL:(nullable NSURL *)url\n                     completion:(nullable SDWebImageCheckCacheCompletionBlock)completionBlock {\n    NSString *key = [self cacheKeyForURL:url];\n    \n    BOOL isInMemoryCache = ([self.imageCache imageFromMemoryCacheForKey:key] != nil);\n    \n    if (isInMemoryCache) {\n        // making sure we call the completion block on the main queue\n        dispatch_async(dispatch_get_main_queue(), ^{\n            if (completionBlock) {\n                completionBlock(YES);\n            }\n        });\n        return;\n    }\n    \n    [self.imageCache diskImageExistsWithKey:key completion:^(BOOL isInDiskCache) {\n        // the completion block of checkDiskCacheForImageWithKey:completion: is always called on the main queue, no need to further dispatch\n        if (completionBlock) {\n            completionBlock(isInDiskCache);\n        }\n    }];\n}\n\n- (void)diskImageExistsForURL:(nullable NSURL *)url\n                   completion:(nullable SDWebImageCheckCacheCompletionBlock)completionBlock {\n    NSString *key = [self cacheKeyForURL:url];\n    \n    [self.imageCache diskImageExistsWithKey:key completion:^(BOOL isInDiskCache) {\n        // the completion block of checkDiskCacheForImageWithKey:completion: is always called on the main queue, no need to further dispatch\n        if (completionBlock) {\n            completionBlock(isInDiskCache);\n        }\n    }];\n}\n\n- (id <SDWebImageOperation>)loadImageWithURL:(nullable NSURL *)url\n                                     options:(SDWebImageOptions)options\n                                    progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                                   completed:(nullable SDInternalCompletionBlock)completedBlock {\n    // Invoking this method without a completedBlock is pointless\n    NSAssert(completedBlock != nil, @\"If you mean to prefetch the image, use -[SDWebImagePrefetcher prefetchURLs] instead\");\n\n    // Very common mistake is to send the URL using NSString object instead of NSURL. For some strange reason, Xcode won't\n    // throw any warning for this type mismatch. Here we failsafe this error by allowing URLs to be passed as NSString.\n    if ([url isKindOfClass:NSString.class]) {\n        url = [NSURL URLWithString:(NSString *)url];\n    }\n\n    // Prevents app crashing on argument type error like sending NSNull instead of NSURL\n    if (![url isKindOfClass:NSURL.class]) {\n        url = nil;\n    }\n\n    __block SDWebImageCombinedOperation *operation = [SDWebImageCombinedOperation new];\n    __weak SDWebImageCombinedOperation *weakOperation = operation;\n\n    BOOL isFailedUrl = NO;\n    if (url) {\n        @synchronized (self.failedURLs) {\n            isFailedUrl = [self.failedURLs containsObject:url];\n        }\n    }\n\n    if (url.absoluteString.length == 0 || (!(options & SDWebImageRetryFailed) && isFailedUrl)) {\n        [self callCompletionBlockForOperation:operation completion:completedBlock error:[NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorFileDoesNotExist userInfo:nil] url:url];\n        return operation;\n    }\n\n    @synchronized (self.runningOperations) {\n        [self.runningOperations addObject:operation];\n    }\n    NSString *key = [self cacheKeyForURL:url];\n\n    operation.cacheOperation = [self.imageCache queryCacheOperationForKey:key done:^(UIImage *cachedImage, NSData *cachedData, SDImageCacheType cacheType) {\n        if (operation.isCancelled) {\n            [self safelyRemoveOperationFromRunning:operation];\n            return;\n        }\n\n        if ((!cachedImage || options & SDWebImageRefreshCached) && (![self.delegate respondsToSelector:@selector(imageManager:shouldDownloadImageForURL:)] || [self.delegate imageManager:self shouldDownloadImageForURL:url])) {\n            if (cachedImage && options & SDWebImageRefreshCached) {\n                // If image was found in the cache but SDWebImageRefreshCached is provided, notify about the cached image\n                // AND try to re-download it in order to let a chance to NSURLCache to refresh it from server.\n                [self callCompletionBlockForOperation:weakOperation completion:completedBlock image:cachedImage data:cachedData error:nil cacheType:cacheType finished:YES url:url];\n            }\n\n            // download if no image or requested to refresh anyway, and download allowed by delegate\n            SDWebImageDownloaderOptions downloaderOptions = 0;\n            if (options & SDWebImageLowPriority) downloaderOptions |= SDWebImageDownloaderLowPriority;\n            if (options & SDWebImageProgressiveDownload) downloaderOptions |= SDWebImageDownloaderProgressiveDownload;\n            if (options & SDWebImageRefreshCached) downloaderOptions |= SDWebImageDownloaderUseNSURLCache;\n            if (options & SDWebImageContinueInBackground) downloaderOptions |= SDWebImageDownloaderContinueInBackground;\n            if (options & SDWebImageHandleCookies) downloaderOptions |= SDWebImageDownloaderHandleCookies;\n            if (options & SDWebImageAllowInvalidSSLCertificates) downloaderOptions |= SDWebImageDownloaderAllowInvalidSSLCertificates;\n            if (options & SDWebImageHighPriority) downloaderOptions |= SDWebImageDownloaderHighPriority;\n            if (options & SDWebImageScaleDownLargeImages) downloaderOptions |= SDWebImageDownloaderScaleDownLargeImages;\n            \n            if (cachedImage && options & SDWebImageRefreshCached) {\n                // force progressive off if image already cached but forced refreshing\n                downloaderOptions &= ~SDWebImageDownloaderProgressiveDownload;\n                // ignore image read from NSURLCache if image if cached but force refreshing\n                downloaderOptions |= SDWebImageDownloaderIgnoreCachedResponse;\n            }\n            \n            SDWebImageDownloadToken *subOperationToken = [self.imageDownloader downloadImageWithURL:url options:downloaderOptions progress:progressBlock completed:^(UIImage *downloadedImage, NSData *downloadedData, NSError *error, BOOL finished) {\n                __strong __typeof(weakOperation) strongOperation = weakOperation;\n                if (!strongOperation || strongOperation.isCancelled) {\n                    // Do nothing if the operation was cancelled\n                    // See #699 for more details\n                    // if we would call the completedBlock, there could be a race condition between this block and another completedBlock for the same object, so if this one is called second, we will overwrite the new data\n                } else if (error) {\n                    [self callCompletionBlockForOperation:strongOperation completion:completedBlock error:error url:url];\n\n                    if (   error.code != NSURLErrorNotConnectedToInternet\n                        && error.code != NSURLErrorCancelled\n                        && error.code != NSURLErrorTimedOut\n                        && error.code != NSURLErrorInternationalRoamingOff\n                        && error.code != NSURLErrorDataNotAllowed\n                        && error.code != NSURLErrorCannotFindHost\n                        && error.code != NSURLErrorCannotConnectToHost\n                        && error.code != NSURLErrorNetworkConnectionLost) {\n                        @synchronized (self.failedURLs) {\n                            [self.failedURLs addObject:url];\n                        }\n                    }\n                }\n                else {\n                    if ((options & SDWebImageRetryFailed)) {\n                        @synchronized (self.failedURLs) {\n                            [self.failedURLs removeObject:url];\n                        }\n                    }\n                    \n                    BOOL cacheOnDisk = !(options & SDWebImageCacheMemoryOnly);\n\n                    if (options & SDWebImageRefreshCached && cachedImage && !downloadedImage) {\n                        // Image refresh hit the NSURLCache cache, do not call the completion block\n                    } else if (downloadedImage && (!downloadedImage.images || (options & SDWebImageTransformAnimatedImage)) && [self.delegate respondsToSelector:@selector(imageManager:transformDownloadedImage:withURL:)]) {\n                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{\n                            UIImage *transformedImage = [self.delegate imageManager:self transformDownloadedImage:downloadedImage withURL:url];\n\n                            if (transformedImage && finished) {\n                                BOOL imageWasTransformed = ![transformedImage isEqual:downloadedImage];\n                                // pass nil if the image was transformed, so we can recalculate the data from the image\n                                [self.imageCache storeImage:transformedImage imageData:(imageWasTransformed ? nil : downloadedData) forKey:key toDisk:cacheOnDisk completion:nil];\n                            }\n                            \n                            [self callCompletionBlockForOperation:strongOperation completion:completedBlock image:transformedImage data:downloadedData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url];\n                        });\n                    } else {\n                        if (downloadedImage && finished) {\n                            [self.imageCache storeImage:downloadedImage imageData:downloadedData forKey:key toDisk:cacheOnDisk completion:nil];\n                        }\n                        [self callCompletionBlockForOperation:strongOperation completion:completedBlock image:downloadedImage data:downloadedData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url];\n                    }\n                }\n\n                if (finished) {\n                    [self safelyRemoveOperationFromRunning:strongOperation];\n                }\n            }];\n            operation.cancelBlock = ^{\n                [self.imageDownloader cancel:subOperationToken];\n                __strong __typeof(weakOperation) strongOperation = weakOperation;\n                [self safelyRemoveOperationFromRunning:strongOperation];\n            };\n        } else if (cachedImage) {\n            __strong __typeof(weakOperation) strongOperation = weakOperation;\n            [self callCompletionBlockForOperation:strongOperation completion:completedBlock image:cachedImage data:cachedData error:nil cacheType:cacheType finished:YES url:url];\n            [self safelyRemoveOperationFromRunning:operation];\n        } else {\n            // Image not in cache and download disallowed by delegate\n            __strong __typeof(weakOperation) strongOperation = weakOperation;\n            [self callCompletionBlockForOperation:strongOperation completion:completedBlock image:nil data:nil error:nil cacheType:SDImageCacheTypeNone finished:YES url:url];\n            [self safelyRemoveOperationFromRunning:operation];\n        }\n    }];\n\n    return operation;\n}\n\n- (void)saveImageToCache:(nullable UIImage *)image forURL:(nullable NSURL *)url {\n    if (image && url) {\n        NSString *key = [self cacheKeyForURL:url];\n        [self.imageCache storeImage:image forKey:key toDisk:YES completion:nil];\n    }\n}\n\n- (void)cancelAll {\n    @synchronized (self.runningOperations) {\n        NSArray<SDWebImageCombinedOperation *> *copiedOperations = [self.runningOperations copy];\n        [copiedOperations makeObjectsPerformSelector:@selector(cancel)];\n        [self.runningOperations removeObjectsInArray:copiedOperations];\n    }\n}\n\n- (BOOL)isRunning {\n    BOOL isRunning = NO;\n    @synchronized (self.runningOperations) {\n        isRunning = (self.runningOperations.count > 0);\n    }\n    return isRunning;\n}\n\n- (void)safelyRemoveOperationFromRunning:(nullable SDWebImageCombinedOperation*)operation {\n    @synchronized (self.runningOperations) {\n        if (operation) {\n            [self.runningOperations removeObject:operation];\n        }\n    }\n}\n\n- (void)callCompletionBlockForOperation:(nullable SDWebImageCombinedOperation*)operation\n                             completion:(nullable SDInternalCompletionBlock)completionBlock\n                                  error:(nullable NSError *)error\n                                    url:(nullable NSURL *)url {\n    [self callCompletionBlockForOperation:operation completion:completionBlock image:nil data:nil error:error cacheType:SDImageCacheTypeNone finished:YES url:url];\n}\n\n- (void)callCompletionBlockForOperation:(nullable SDWebImageCombinedOperation*)operation\n                             completion:(nullable SDInternalCompletionBlock)completionBlock\n                                  image:(nullable UIImage *)image\n                                   data:(nullable NSData *)data\n                                  error:(nullable NSError *)error\n                              cacheType:(SDImageCacheType)cacheType\n                               finished:(BOOL)finished\n                                    url:(nullable NSURL *)url {\n    dispatch_main_async_safe(^{\n        if (operation && !operation.isCancelled && completionBlock) {\n            completionBlock(image, data, error, cacheType, finished, url);\n        }\n    });\n}\n\n@end\n\n\n@implementation SDWebImageCombinedOperation\n\n- (void)setCancelBlock:(nullable SDWebImageNoParamsBlock)cancelBlock {\n    // check if the operation is already cancelled, then we just call the cancelBlock\n    if (self.isCancelled) {\n        if (cancelBlock) {\n            cancelBlock();\n        }\n        _cancelBlock = nil; // don't forget to nil the cancelBlock, otherwise we will get crashes\n    } else {\n        _cancelBlock = [cancelBlock copy];\n    }\n}\n\n- (void)cancel {\n    self.cancelled = YES;\n    if (self.cacheOperation) {\n        [self.cacheOperation cancel];\n        self.cacheOperation = nil;\n    }\n    if (self.cancelBlock) {\n        self.cancelBlock();\n        \n        // TODO: this is a temporary fix to #809.\n        // Until we can figure the exact cause of the crash, going with the ivar instead of the setter\n//        self.cancelBlock = nil;\n        _cancelBlock = nil;\n    }\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <Foundation/Foundation.h>\n\n@protocol SDWebImageOperation <NSObject>\n\n- (void)cancel;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import <Foundation/Foundation.h>\n#import \"SDWebImageManager.h\"\n\n@class SDWebImagePrefetcher;\n\n@protocol SDWebImagePrefetcherDelegate <NSObject>\n\n@optional\n\n/**\n * Called when an image was prefetched.\n *\n * @param imagePrefetcher The current image prefetcher\n * @param imageURL        The image url that was prefetched\n * @param finishedCount   The total number of images that were prefetched (successful or not)\n * @param totalCount      The total number of images that were to be prefetched\n */\n- (void)imagePrefetcher:(nonnull SDWebImagePrefetcher *)imagePrefetcher didPrefetchURL:(nullable NSURL *)imageURL finishedCount:(NSUInteger)finishedCount totalCount:(NSUInteger)totalCount;\n\n/**\n * Called when all images are prefetched.\n * @param imagePrefetcher The current image prefetcher\n * @param totalCount      The total number of images that were prefetched (whether successful or not)\n * @param skippedCount    The total number of images that were skipped\n */\n- (void)imagePrefetcher:(nonnull SDWebImagePrefetcher *)imagePrefetcher didFinishWithTotalCount:(NSUInteger)totalCount skippedCount:(NSUInteger)skippedCount;\n\n@end\n\ntypedef void(^SDWebImagePrefetcherProgressBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls);\ntypedef void(^SDWebImagePrefetcherCompletionBlock)(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls);\n\n/**\n * Prefetch some URLs in the cache for future use. Images are downloaded in low priority.\n */\n@interface SDWebImagePrefetcher : NSObject\n\n/**\n *  The web image manager\n */\n@property (strong, nonatomic, readonly, nonnull) SDWebImageManager *manager;\n\n/**\n * Maximum number of URLs to prefetch at the same time. Defaults to 3.\n */\n@property (nonatomic, assign) NSUInteger maxConcurrentDownloads;\n\n/**\n * SDWebImageOptions for prefetcher. Defaults to SDWebImageLowPriority.\n */\n@property (nonatomic, assign) SDWebImageOptions options;\n\n/**\n * Queue options for Prefetcher. Defaults to Main Queue.\n */\n@property (SDDispatchQueueSetterSementics, nonatomic, nonnull) dispatch_queue_t prefetcherQueue;\n\n@property (weak, nonatomic, nullable) id <SDWebImagePrefetcherDelegate> delegate;\n\n/**\n * Return the global image prefetcher instance.\n */\n+ (nonnull instancetype)sharedImagePrefetcher;\n\n/**\n * Allows you to instantiate a prefetcher with any arbitrary image manager.\n */\n- (nonnull instancetype)initWithImageManager:(nonnull SDWebImageManager *)manager NS_DESIGNATED_INITIALIZER;\n\n/**\n * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching,\n * currently one image is downloaded at a time,\n * and skips images for failed downloads and proceed to the next image in the list.\n * Any previously-running prefetch operations are canceled.\n *\n * @param urls list of URLs to prefetch\n */\n- (void)prefetchURLs:(nullable NSArray<NSURL *> *)urls;\n\n/**\n * Assign list of URLs to let SDWebImagePrefetcher to queue the prefetching,\n * currently one image is downloaded at a time,\n * and skips images for failed downloads and proceed to the next image in the list.\n * Any previously-running prefetch operations are canceled.\n *\n * @param urls            list of URLs to prefetch\n * @param progressBlock   block to be called when progress updates; \n *                        first parameter is the number of completed (successful or not) requests, \n *                        second parameter is the total number of images originally requested to be prefetched\n * @param completionBlock block to be called when prefetching is completed\n *                        first param is the number of completed (successful or not) requests,\n *                        second parameter is the number of skipped requests\n */\n- (void)prefetchURLs:(nullable NSArray<NSURL *> *)urls\n            progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock\n           completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock;\n\n/**\n * Remove and cancel queued list\n */\n- (void)cancelPrefetching;\n\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/SDWebImagePrefetcher.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImagePrefetcher.h\"\n\n@interface SDWebImagePrefetcher ()\n\n@property (strong, nonatomic, nonnull) SDWebImageManager *manager;\n@property (strong, nonatomic, nullable) NSArray<NSURL *> *prefetchURLs;\n@property (assign, nonatomic) NSUInteger requestedCount;\n@property (assign, nonatomic) NSUInteger skippedCount;\n@property (assign, nonatomic) NSUInteger finishedCount;\n@property (assign, nonatomic) NSTimeInterval startedTime;\n@property (copy, nonatomic, nullable) SDWebImagePrefetcherCompletionBlock completionBlock;\n@property (copy, nonatomic, nullable) SDWebImagePrefetcherProgressBlock progressBlock;\n\n@end\n\n@implementation SDWebImagePrefetcher\n\n+ (nonnull instancetype)sharedImagePrefetcher {\n    static dispatch_once_t once;\n    static id instance;\n    dispatch_once(&once, ^{\n        instance = [self new];\n    });\n    return instance;\n}\n\n- (nonnull instancetype)init {\n    return [self initWithImageManager:[SDWebImageManager new]];\n}\n\n- (nonnull instancetype)initWithImageManager:(SDWebImageManager *)manager {\n    if ((self = [super init])) {\n        _manager = manager;\n        _options = SDWebImageLowPriority;\n        _prefetcherQueue = dispatch_get_main_queue();\n        self.maxConcurrentDownloads = 3;\n    }\n    return self;\n}\n\n- (void)setMaxConcurrentDownloads:(NSUInteger)maxConcurrentDownloads {\n    self.manager.imageDownloader.maxConcurrentDownloads = maxConcurrentDownloads;\n}\n\n- (NSUInteger)maxConcurrentDownloads {\n    return self.manager.imageDownloader.maxConcurrentDownloads;\n}\n\n- (void)startPrefetchingAtIndex:(NSUInteger)index {\n    if (index >= self.prefetchURLs.count) return;\n    self.requestedCount++;\n    [self.manager loadImageWithURL:self.prefetchURLs[index] options:self.options progress:nil completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {\n        if (!finished) return;\n        self.finishedCount++;\n\n        if (image) {\n            if (self.progressBlock) {\n                self.progressBlock(self.finishedCount,(self.prefetchURLs).count);\n            }\n        }\n        else {\n            if (self.progressBlock) {\n                self.progressBlock(self.finishedCount,(self.prefetchURLs).count);\n            }\n            // Add last failed\n            self.skippedCount++;\n        }\n        if ([self.delegate respondsToSelector:@selector(imagePrefetcher:didPrefetchURL:finishedCount:totalCount:)]) {\n            [self.delegate imagePrefetcher:self\n                            didPrefetchURL:self.prefetchURLs[index]\n                             finishedCount:self.finishedCount\n                                totalCount:self.prefetchURLs.count\n             ];\n        }\n        if (self.prefetchURLs.count > self.requestedCount) {\n            dispatch_async(self.prefetcherQueue, ^{\n                [self startPrefetchingAtIndex:self.requestedCount];\n            });\n        } else if (self.finishedCount == self.requestedCount) {\n            [self reportStatus];\n            if (self.completionBlock) {\n                self.completionBlock(self.finishedCount, self.skippedCount);\n                self.completionBlock = nil;\n            }\n            self.progressBlock = nil;\n        }\n    }];\n}\n\n- (void)reportStatus {\n    NSUInteger total = (self.prefetchURLs).count;\n    if ([self.delegate respondsToSelector:@selector(imagePrefetcher:didFinishWithTotalCount:skippedCount:)]) {\n        [self.delegate imagePrefetcher:self\n               didFinishWithTotalCount:(total - self.skippedCount)\n                          skippedCount:self.skippedCount\n         ];\n    }\n}\n\n- (void)prefetchURLs:(nullable NSArray<NSURL *> *)urls {\n    [self prefetchURLs:urls progress:nil completed:nil];\n}\n\n- (void)prefetchURLs:(nullable NSArray<NSURL *> *)urls\n            progress:(nullable SDWebImagePrefetcherProgressBlock)progressBlock\n           completed:(nullable SDWebImagePrefetcherCompletionBlock)completionBlock {\n    [self cancelPrefetching]; // Prevent duplicate prefetch request\n    self.startedTime = CFAbsoluteTimeGetCurrent();\n    self.prefetchURLs = urls;\n    self.completionBlock = completionBlock;\n    self.progressBlock = progressBlock;\n\n    if (urls.count == 0) {\n        if (completionBlock) {\n            completionBlock(0,0);\n        }\n    } else {\n        // Starts prefetching from the very first image on the list with the max allowed concurrency\n        NSUInteger listCount = self.prefetchURLs.count;\n        for (NSUInteger i = 0; i < self.maxConcurrentDownloads && self.requestedCount < listCount; i++) {\n            [self startPrefetchingAtIndex:i];\n        }\n    }\n}\n\n- (void)cancelPrefetching {\n    self.prefetchURLs = nil;\n    self.skippedCount = 0;\n    self.requestedCount = 0;\n    self.finishedCount = 0;\n    [self.manager cancelAll];\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIButton+WebCache.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n\n#if SD_UIKIT\n\n#import \"SDWebImageManager.h\"\n\n/**\n * Integrates SDWebImage async downloading and caching of remote images with UIButtonView.\n */\n@interface UIButton (WebCache)\n\n#pragma mark - Image\n\n/**\n * Get the current image URL.\n */\n- (nullable NSURL *)sd_currentImageURL;\n\n/**\n * Get the image URL for a control state.\n * \n * @param state Which state you want to know the URL for. The values are described in UIControlState.\n */\n- (nullable NSURL *)sd_imageURLForState:(UIControlState)state;\n\n/**\n * Set the imageView `image` with an `url`.\n *\n * The download is asynchronous and cached.\n *\n * @param url   The url for the image.\n * @param state The state that uses the specified title. The values are described in UIControlState.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n                  forState:(UIControlState)state NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `image` with an `url` and a placeholder.\n *\n * The download is asynchronous and cached.\n *\n * @param url         The url for the image.\n * @param state       The state that uses the specified title. The values are described in UIControlState.\n * @param placeholder The image to be set initially, until the image request finishes.\n * @see sd_setImageWithURL:placeholderImage:options:\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n                  forState:(UIControlState)state\n          placeholderImage:(nullable UIImage *)placeholder NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `image` with an `url`, placeholder and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url         The url for the image.\n * @param state       The state that uses the specified title. The values are described in UIControlState.\n * @param placeholder The image to be set initially, until the image request finishes.\n * @param options     The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n                  forState:(UIControlState)state\n          placeholderImage:(nullable UIImage *)placeholder\n                   options:(SDWebImageOptions)options NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `image` with an `url`.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param state          The state that uses the specified title. The values are described in UIControlState.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n                  forState:(UIControlState)state\n                 completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n/**\n * Set the imageView `image` with an `url`, placeholder.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param state          The state that uses the specified title. The values are described in UIControlState.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n                  forState:(UIControlState)state\n          placeholderImage:(nullable UIImage *)placeholder\n                 completed:(nullable SDExternalCompletionBlock)completedBlock NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `image` with an `url`, placeholder and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param state          The state that uses the specified title. The values are described in UIControlState.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param options        The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n                  forState:(UIControlState)state\n          placeholderImage:(nullable UIImage *)placeholder\n                   options:(SDWebImageOptions)options\n                 completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n#pragma mark - Background image\n\n/**\n * Get the current background image URL.\n */\n- (nullable NSURL *)sd_currentBackgroundImageURL;\n\n/**\n * Get the background image URL for a control state.\n * \n * @param state Which state you want to know the URL for. The values are described in UIControlState.\n */\n- (nullable NSURL *)sd_backgroundImageURLForState:(UIControlState)state;\n\n/**\n * Set the backgroundImageView `image` with an `url`.\n *\n * The download is asynchronous and cached.\n *\n * @param url   The url for the image.\n * @param state The state that uses the specified title. The values are described in UIControlState.\n */\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url\n                            forState:(UIControlState)state NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the backgroundImageView `image` with an `url` and a placeholder.\n *\n * The download is asynchronous and cached.\n *\n * @param url         The url for the image.\n * @param state       The state that uses the specified title. The values are described in UIControlState.\n * @param placeholder The image to be set initially, until the image request finishes.\n * @see sd_setImageWithURL:placeholderImage:options:\n */\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url\n                            forState:(UIControlState)state\n                    placeholderImage:(nullable UIImage *)placeholder NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the backgroundImageView `image` with an `url`, placeholder and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url         The url for the image.\n * @param state       The state that uses the specified title. The values are described in UIControlState.\n * @param placeholder The image to be set initially, until the image request finishes.\n * @param options     The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n */\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url\n                            forState:(UIControlState)state\n                    placeholderImage:(nullable UIImage *)placeholder\n                             options:(SDWebImageOptions)options NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the backgroundImageView `image` with an `url`.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param state          The state that uses the specified title. The values are described in UIControlState.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url\n                            forState:(UIControlState)state\n                           completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n/**\n * Set the backgroundImageView `image` with an `url`, placeholder.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param state          The state that uses the specified title. The values are described in UIControlState.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url\n                            forState:(UIControlState)state\n                    placeholderImage:(nullable UIImage *)placeholder\n                           completed:(nullable SDExternalCompletionBlock)completedBlock NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the backgroundImageView `image` with an `url`, placeholder and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param options        The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url\n                            forState:(UIControlState)state\n                    placeholderImage:(nullable UIImage *)placeholder\n                             options:(SDWebImageOptions)options\n                           completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n#pragma mark - Cancel\n\n/**\n * Cancel the current image download\n */\n- (void)sd_cancelImageLoadForState:(UIControlState)state;\n\n/**\n * Cancel the current backgroundImage download\n */\n- (void)sd_cancelBackgroundImageLoadForState:(UIControlState)state;\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIButton+WebCache.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"UIButton+WebCache.h\"\n\n#if SD_UIKIT\n\n#import \"objc/runtime.h\"\n#import \"UIView+WebCacheOperation.h\"\n#import \"UIView+WebCache.h\"\n\nstatic char imageURLStorageKey;\n\ntypedef NSMutableDictionary<NSString *, NSURL *> SDStateImageURLDictionary;\n\nstatic inline NSString * imageURLKeyForState(UIControlState state) {\n    return [NSString stringWithFormat:@\"image_%lu\", (unsigned long)state];\n}\n\nstatic inline NSString * backgroundImageURLKeyForState(UIControlState state) {\n    return [NSString stringWithFormat:@\"backgroundImage_%lu\", (unsigned long)state];\n}\n\n@implementation UIButton (WebCache)\n\n#pragma mark - Image\n\n- (nullable NSURL *)sd_currentImageURL {\n    NSURL *url = self.imageURLStorage[imageURLKeyForState(self.state)];\n\n    if (!url) {\n        url = self.imageURLStorage[imageURLKeyForState(UIControlStateNormal)];\n    }\n\n    return url;\n}\n\n- (nullable NSURL *)sd_imageURLForState:(UIControlState)state {\n    return self.imageURLStorage[imageURLKeyForState(state)];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state {\n    [self sd_setImageWithURL:url forState:state placeholderImage:nil options:0 completed:nil];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder {\n    [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:nil];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {\n    [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:options completed:nil];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setImageWithURL:url forState:state placeholderImage:nil options:0 completed:completedBlock];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:completedBlock];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n                  forState:(UIControlState)state\n          placeholderImage:(nullable UIImage *)placeholder\n                   options:(SDWebImageOptions)options\n                 completed:(nullable SDExternalCompletionBlock)completedBlock {\n    if (!url) {\n        [self.imageURLStorage removeObjectForKey:imageURLKeyForState(state)];\n    } else {\n        self.imageURLStorage[imageURLKeyForState(state)] = url;\n    }\n    \n    __weak typeof(self)weakSelf = self;\n    [self sd_internalSetImageWithURL:url\n                    placeholderImage:placeholder\n                             options:options\n                        operationKey:[NSString stringWithFormat:@\"UIButtonImageOperation%@\", @(state)]\n                       setImageBlock:^(UIImage *image, NSData *imageData) {\n                           [weakSelf setImage:image forState:state];\n                       }\n                            progress:nil\n                           completed:completedBlock];\n}\n\n#pragma mark - Background image\n\n- (nullable NSURL *)sd_currentBackgroundImageURL {\n    NSURL *url = self.imageURLStorage[backgroundImageURLKeyForState(self.state)];\n    \n    if (!url) {\n        url = self.imageURLStorage[backgroundImageURLKeyForState(UIControlStateNormal)];\n    }\n    \n    return url;\n}\n\n- (nullable NSURL *)sd_backgroundImageURLForState:(UIControlState)state {\n    return self.imageURLStorage[backgroundImageURLKeyForState(state)];\n}\n\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state {\n    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:nil options:0 completed:nil];\n}\n\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder {\n    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:nil];\n}\n\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {\n    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:options completed:nil];\n}\n\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:nil options:0 completed:completedBlock];\n}\n\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url forState:(UIControlState)state placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:completedBlock];\n}\n\n- (void)sd_setBackgroundImageWithURL:(nullable NSURL *)url\n                            forState:(UIControlState)state\n                    placeholderImage:(nullable UIImage *)placeholder\n                             options:(SDWebImageOptions)options\n                           completed:(nullable SDExternalCompletionBlock)completedBlock {\n    if (!url) {\n        [self.imageURLStorage removeObjectForKey:backgroundImageURLKeyForState(state)];\n    } else {\n        self.imageURLStorage[backgroundImageURLKeyForState(state)] = url;\n    }\n    \n    __weak typeof(self)weakSelf = self;\n    [self sd_internalSetImageWithURL:url\n                    placeholderImage:placeholder\n                             options:options\n                        operationKey:[NSString stringWithFormat:@\"UIButtonBackgroundImageOperation%@\", @(state)]\n                       setImageBlock:^(UIImage *image, NSData *imageData) {\n                           [weakSelf setBackgroundImage:image forState:state];\n                       }\n                            progress:nil\n                           completed:completedBlock];\n}\n\n- (void)sd_setImageLoadOperation:(id<SDWebImageOperation>)operation forState:(UIControlState)state {\n    [self sd_setImageLoadOperation:operation forKey:[NSString stringWithFormat:@\"UIButtonImageOperation%@\", @(state)]];\n}\n\n- (void)sd_cancelImageLoadForState:(UIControlState)state {\n    [self sd_cancelImageLoadOperationWithKey:[NSString stringWithFormat:@\"UIButtonImageOperation%@\", @(state)]];\n}\n\n- (void)sd_setBackgroundImageLoadOperation:(id<SDWebImageOperation>)operation forState:(UIControlState)state {\n    [self sd_setImageLoadOperation:operation forKey:[NSString stringWithFormat:@\"UIButtonBackgroundImageOperation%@\", @(state)]];\n}\n\n- (void)sd_cancelBackgroundImageLoadForState:(UIControlState)state {\n    [self sd_cancelImageLoadOperationWithKey:[NSString stringWithFormat:@\"UIButtonBackgroundImageOperation%@\", @(state)]];\n}\n\n- (SDStateImageURLDictionary *)imageURLStorage {\n    SDStateImageURLDictionary *storage = objc_getAssociatedObject(self, &imageURLStorageKey);\n    if (!storage) {\n        storage = [NSMutableDictionary dictionary];\n        objc_setAssociatedObject(self, &imageURLStorageKey, storage, OBJC_ASSOCIATION_RETAIN_NONATOMIC);\n    }\n\n    return storage;\n}\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIImage+GIF.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Laurin Brandner\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n\n@interface UIImage (GIF)\n\n/**\n *  Compatibility method - creates an animated UIImage from an NSData, it will only contain the 1st frame image\n */\n+ (UIImage *)sd_animatedGIFWithData:(NSData *)data;\n\n/**\n *  Checks if an UIImage instance is a GIF. Will use the `images` array\n */\n- (BOOL)isGIF;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIImage+GIF.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n * (c) Laurin Brandner\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"UIImage+GIF.h\"\n#import <ImageIO/ImageIO.h>\n#import \"objc/runtime.h\"\n#import \"NSImage+WebCache.h\"\n\n@implementation UIImage (GIF)\n\n+ (UIImage *)sd_animatedGIFWithData:(NSData *)data {\n    if (!data) {\n        return nil;\n    }\n    \n#if SD_MAC\n    return [[UIImage alloc] initWithData:data];\n#else\n\n    CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);\n\n    size_t count = CGImageSourceGetCount(source);\n\n    UIImage *staticImage;\n\n    if (count <= 1) {\n        staticImage = [[UIImage alloc] initWithData:data];\n    } else {\n        // we will only retrieve the 1st frame. the full GIF support is available via the FLAnimatedImageView category.\n        // this here is only code to allow drawing animated images as static ones\n#if SD_WATCH\n        CGFloat scale = 1;\n        scale = [WKInterfaceDevice currentDevice].screenScale;\n#elif SD_UIKIT\n        CGFloat scale = 1;\n        scale = [UIScreen mainScreen].scale;\n#endif\n        \n        CGImageRef CGImage = CGImageSourceCreateImageAtIndex(source, 0, NULL);\n#if SD_UIKIT || SD_WATCH\n        UIImage *frameImage = [UIImage imageWithCGImage:CGImage scale:scale orientation:UIImageOrientationUp];\n        staticImage = [UIImage animatedImageWithImages:@[frameImage] duration:0.0f];\n#endif\n        CGImageRelease(CGImage);\n    }\n\n    CFRelease(source);\n\n    return staticImage;\n#endif\n}\n\n- (BOOL)isGIF {\n    return (self.images != nil);\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n#import \"NSData+ImageContentType.h\"\n\n@interface UIImage (MultiFormat)\n\n+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data;\n- (nullable NSData *)sd_imageData;\n- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"UIImage+MultiFormat.h\"\n#import \"UIImage+GIF.h\"\n#import \"NSData+ImageContentType.h\"\n#import <ImageIO/ImageIO.h>\n\n#ifdef SD_WEBP\n#import \"UIImage+WebP.h\"\n#endif\n\n@implementation UIImage (MultiFormat)\n\n+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data {\n    if (!data) {\n        return nil;\n    }\n    \n    UIImage *image;\n    SDImageFormat imageFormat = [NSData sd_imageFormatForImageData:data];\n    if (imageFormat == SDImageFormatGIF) {\n        image = [UIImage sd_animatedGIFWithData:data];\n    }\n#ifdef SD_WEBP\n    else if (imageFormat == SDImageFormatWebP)\n    {\n        image = [UIImage sd_imageWithWebPData:data];\n    }\n#endif\n    else {\n        image = [[UIImage alloc] initWithData:data];\n#if SD_UIKIT || SD_WATCH\n        UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data];\n        if (orientation != UIImageOrientationUp) {\n            image = [UIImage imageWithCGImage:image.CGImage\n                                        scale:image.scale\n                                  orientation:orientation];\n        }\n#endif\n    }\n\n\n    return image;\n}\n\n#if SD_UIKIT || SD_WATCH\n+(UIImageOrientation)sd_imageOrientationFromImageData:(nonnull NSData *)imageData {\n    UIImageOrientation result = UIImageOrientationUp;\n    CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);\n    if (imageSource) {\n        CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL);\n        if (properties) {\n            CFTypeRef val;\n            int exifOrientation;\n            val = CFDictionaryGetValue(properties, kCGImagePropertyOrientation);\n            if (val) {\n                CFNumberGetValue(val, kCFNumberIntType, &exifOrientation);\n                result = [self sd_exifOrientationToiOSOrientation:exifOrientation];\n            } // else - if it's not set it remains at up\n            CFRelease((CFTypeRef) properties);\n        } else {\n            //NSLog(@\"NO PROPERTIES, FAIL\");\n        }\n        CFRelease(imageSource);\n    }\n    return result;\n}\n\n#pragma mark EXIF orientation tag converter\n// Convert an EXIF image orientation to an iOS one.\n// reference see here: http://sylvana.net/jpegcrop/exif_orientation.html\n+ (UIImageOrientation) sd_exifOrientationToiOSOrientation:(int)exifOrientation {\n    UIImageOrientation orientation = UIImageOrientationUp;\n    switch (exifOrientation) {\n        case 1:\n            orientation = UIImageOrientationUp;\n            break;\n\n        case 3:\n            orientation = UIImageOrientationDown;\n            break;\n\n        case 8:\n            orientation = UIImageOrientationLeft;\n            break;\n\n        case 6:\n            orientation = UIImageOrientationRight;\n            break;\n\n        case 2:\n            orientation = UIImageOrientationUpMirrored;\n            break;\n\n        case 4:\n            orientation = UIImageOrientationDownMirrored;\n            break;\n\n        case 5:\n            orientation = UIImageOrientationLeftMirrored;\n            break;\n\n        case 7:\n            orientation = UIImageOrientationRightMirrored;\n            break;\n        default:\n            break;\n    }\n    return orientation;\n}\n#endif\n\n- (nullable NSData *)sd_imageData {\n    return [self sd_imageDataAsFormat:SDImageFormatUndefined];\n}\n\n- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat {\n    NSData *imageData = nil;\n    if (self) {\n#if SD_UIKIT || SD_WATCH\n        int alphaInfo = CGImageGetAlphaInfo(self.CGImage);\n        BOOL hasAlpha = !(alphaInfo == kCGImageAlphaNone ||\n                          alphaInfo == kCGImageAlphaNoneSkipFirst ||\n                          alphaInfo == kCGImageAlphaNoneSkipLast);\n        \n        BOOL usePNG = hasAlpha;\n        \n        // the imageFormat param has priority here. But if the format is undefined, we relly on the alpha channel\n        if (imageFormat != SDImageFormatUndefined) {\n            usePNG = (imageFormat == SDImageFormatPNG);\n        }\n        \n        if (usePNG) {\n            imageData = UIImagePNGRepresentation(self);\n        } else {\n            imageData = UIImageJPEGRepresentation(self, (CGFloat)1.0);\n        }\n#else\n        NSBitmapImageFileType imageFileType = NSJPEGFileType;\n        if (imageFormat == SDImageFormatGIF) {\n            imageFileType = NSGIFFileType;\n        } else if (imageFormat == SDImageFormatPNG) {\n            imageFileType = NSPNGFileType;\n        }\n        \n        imageData = [NSBitmapImageRep representationOfImageRepsInArray:self.representations\n                                                             usingType:imageFileType\n                                                            properties:@{}];\n#endif\n    }\n    return imageData;\n}\n\n\n@end\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n\n#if SD_UIKIT\n\n#import \"SDWebImageManager.h\"\n\n/**\n * Integrates SDWebImage async downloading and caching of remote images with UIImageView for highlighted state.\n */\n@interface UIImageView (HighlightedWebCache)\n\n/**\n * Set the imageView `highlightedImage` with an `url`.\n *\n * The download is asynchronous and cached.\n *\n * @param url The url for the image.\n */\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `highlightedImage` with an `url` and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url     The url for the image.\n * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n */\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url\n                              options:(SDWebImageOptions)options NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `highlightedImage` with an `url`.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url\n                            completed:(nullable SDExternalCompletionBlock)completedBlock NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `highlightedImage` with an `url` and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param options        The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url\n                              options:(SDWebImageOptions)options\n                            completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n/**\n * Set the imageView `highlightedImage` with an `url` and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param options        The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n * @param progressBlock  A block called while image is downloading\n *                       @note the progress block is executed on a background queue\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url\n                              options:(SDWebImageOptions)options\n                             progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                            completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"UIImageView+HighlightedWebCache.h\"\n\n#if SD_UIKIT\n\n#import \"UIView+WebCacheOperation.h\"\n#import \"UIView+WebCache.h\"\n\n@implementation UIImageView (HighlightedWebCache)\n\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url {\n    [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:nil];\n}\n\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options {\n    [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:nil];\n}\n\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:completedBlock];\n}\n\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:completedBlock];\n}\n\n- (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url\n                              options:(SDWebImageOptions)options\n                             progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                            completed:(nullable SDExternalCompletionBlock)completedBlock {\n    __weak typeof(self)weakSelf = self;\n    [self sd_internalSetImageWithURL:url\n                    placeholderImage:nil\n                             options:options\n                        operationKey:@\"UIImageViewImageOperationHighlighted\"\n                       setImageBlock:^(UIImage *image, NSData *imageData) {\n                           weakSelf.highlightedImage = image;\n                       }\n                            progress:progressBlock\n                           completed:completedBlock];\n}\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIImageView+WebCache.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n\n#if SD_UIKIT || SD_MAC\n\n#import \"SDWebImageManager.h\"\n\n/**\n * Integrates SDWebImage async downloading and caching of remote images with UIImageView.\n *\n * Usage with a UITableViewCell sub-class:\n *\n * @code\n\n#import <SDWebImage/UIImageView+WebCache.h>\n\n...\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath\n{\n    static NSString *MyIdentifier = @\"MyIdentifier\";\n \n    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];\n \n    if (cell == nil) {\n        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier]\n                 autorelease];\n    }\n \n    // Here we use the provided sd_setImageWithURL: method to load the web image\n    // Ensure you use a placeholder image otherwise cells will be initialized with no image\n    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@\"http://example.com/image.jpg\"]\n                      placeholderImage:[UIImage imageNamed:@\"placeholder\"]];\n \n    cell.textLabel.text = @\"My Text\";\n    return cell;\n}\n\n * @endcode\n */\n@interface UIImageView (WebCache)\n\n/**\n * Set the imageView `image` with an `url`.\n *\n * The download is asynchronous and cached.\n *\n * @param url The url for the image.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `image` with an `url` and a placeholder.\n *\n * The download is asynchronous and cached.\n *\n * @param url         The url for the image.\n * @param placeholder The image to be set initially, until the image request finishes.\n * @see sd_setImageWithURL:placeholderImage:options:\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n          placeholderImage:(nullable UIImage *)placeholder NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `image` with an `url`, placeholder and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url         The url for the image.\n * @param placeholder The image to be set initially, until the image request finishes.\n * @param options     The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n          placeholderImage:(nullable UIImage *)placeholder\n                   options:(SDWebImageOptions)options NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `image` with an `url`.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n                 completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n/**\n * Set the imageView `image` with an `url`, placeholder.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n          placeholderImage:(nullable UIImage *)placeholder\n                 completed:(nullable SDExternalCompletionBlock)completedBlock NS_REFINED_FOR_SWIFT;\n\n/**\n * Set the imageView `image` with an `url`, placeholder and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param options        The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n          placeholderImage:(nullable UIImage *)placeholder\n                   options:(SDWebImageOptions)options\n                 completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n/**\n * Set the imageView `image` with an `url`, placeholder and custom options.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param options        The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n * @param progressBlock  A block called while image is downloading\n *                       @note the progress block is executed on a background queue\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n          placeholderImage:(nullable UIImage *)placeholder\n                   options:(SDWebImageOptions)options\n                  progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                 completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n/**\n * Set the imageView `image` with an `url` and optionally a placeholder image.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param options        The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n * @param progressBlock  A block called while image is downloading\n *                       @note the progress block is executed on a background queue\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_setImageWithPreviousCachedImageWithURL:(nullable NSURL *)url\n                                 placeholderImage:(nullable UIImage *)placeholder\n                                          options:(SDWebImageOptions)options\n                                         progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                                        completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n#if SD_UIKIT\n\n#pragma mark - Animation of multiple images\n\n/**\n * Download an array of images and starts them in an animation loop\n *\n * @param arrayOfURLs An array of NSURL\n */\n- (void)sd_setAnimationImagesWithURLs:(nonnull NSArray<NSURL *> *)arrayOfURLs;\n\n- (void)sd_cancelCurrentAnimationImagesLoad;\n\n#endif\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIImageView+WebCache.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"UIImageView+WebCache.h\"\n\n#if SD_UIKIT || SD_MAC\n\n#import \"objc/runtime.h\"\n#import \"UIView+WebCacheOperation.h\"\n#import \"UIView+WebCache.h\"\n\n@implementation UIImageView (WebCache)\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url {\n    [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder {\n    [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options {\n    [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:completedBlock];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:completedBlock];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:completedBlock];\n}\n\n- (void)sd_setImageWithURL:(nullable NSURL *)url\n          placeholderImage:(nullable UIImage *)placeholder\n                   options:(SDWebImageOptions)options\n                  progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                 completed:(nullable SDExternalCompletionBlock)completedBlock {\n    [self sd_internalSetImageWithURL:url\n                    placeholderImage:placeholder\n                             options:options\n                        operationKey:nil\n                       setImageBlock:nil\n                            progress:progressBlock\n                           completed:completedBlock];\n}\n\n- (void)sd_setImageWithPreviousCachedImageWithURL:(nullable NSURL *)url\n                                 placeholderImage:(nullable UIImage *)placeholder\n                                          options:(SDWebImageOptions)options\n                                         progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                                        completed:(nullable SDExternalCompletionBlock)completedBlock {\n    NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:url];\n    UIImage *lastPreviousCachedImage = [[SDImageCache sharedImageCache] imageFromCacheForKey:key];\n    \n    [self sd_setImageWithURL:url placeholderImage:lastPreviousCachedImage ?: placeholder options:options progress:progressBlock completed:completedBlock];    \n}\n\n#if SD_UIKIT\n\n#pragma mark - Animation of multiple images\n\n- (void)sd_setAnimationImagesWithURLs:(nonnull NSArray<NSURL *> *)arrayOfURLs {\n    [self sd_cancelCurrentAnimationImagesLoad];\n    __weak __typeof(self)wself = self;\n\n    NSMutableArray<id<SDWebImageOperation>> *operationsArray = [[NSMutableArray alloc] init];\n\n    [arrayOfURLs enumerateObjectsUsingBlock:^(NSURL *logoImageURL, NSUInteger idx, BOOL * _Nonnull stop) {\n        id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager loadImageWithURL:logoImageURL options:0 progress:nil completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {\n            if (!wself) return;\n            dispatch_main_async_safe(^{\n                __strong UIImageView *sself = wself;\n                [sself stopAnimating];\n                if (sself && image) {\n                    NSMutableArray<UIImage *> *currentImages = [[sself animationImages] mutableCopy];\n                    if (!currentImages) {\n                        currentImages = [[NSMutableArray alloc] init];\n                    }\n                    \n                    // We know what index objects should be at when they are returned so\n                    // we will put the object at the index, filling any empty indexes\n                    // with the image that was returned too \"early\". These images will\n                    // be overwritten. (does not require additional sorting datastructure)\n                    while ([currentImages count] < idx) {\n                        [currentImages addObject:image];\n                    }\n                    \n                    currentImages[idx] = image;\n\n                    sself.animationImages = currentImages;\n                    [sself setNeedsLayout];\n                }\n                [sself startAnimating];\n            });\n        }];\n        [operationsArray addObject:operation];\n    }];\n\n    [self sd_setImageLoadOperation:[operationsArray copy] forKey:@\"UIImageViewAnimationImages\"];\n}\n\n- (void)sd_cancelCurrentAnimationImagesLoad {\n    [self sd_cancelImageLoadOperationWithKey:@\"UIImageViewAnimationImages\"];\n}\n#endif\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIView+WebCache.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n\n#if SD_UIKIT || SD_MAC\n\n#import \"SDWebImageManager.h\"\n\ntypedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable imageData);\n\n@interface UIView (WebCache)\n\n/**\n * Get the current image URL.\n *\n * Note that because of the limitations of categories this property can get out of sync\n * if you use setImage: directly.\n */\n- (nullable NSURL *)sd_imageURL;\n\n/**\n * Set the imageView `image` with an `url` and optionally a placeholder image.\n *\n * The download is asynchronous and cached.\n *\n * @param url            The url for the image.\n * @param placeholder    The image to be set initially, until the image request finishes.\n * @param options        The options to use when downloading the image. @see SDWebImageOptions for the possible values.\n * @param operationKey   A string to be used as the operation key. If nil, will use the class name\n * @param setImageBlock  Block used for custom set image code\n * @param progressBlock  A block called while image is downloading\n *                       @note the progress block is executed on a background queue\n * @param completedBlock A block called when operation has been completed. This block has no return value\n *                       and takes the requested UIImage as first parameter. In case of error the image parameter\n *                       is nil and the second parameter may contain an NSError. The third parameter is a Boolean\n *                       indicating if the image was retrieved from the local cache or from the network.\n *                       The fourth parameter is the original image url.\n */\n- (void)sd_internalSetImageWithURL:(nullable NSURL *)url\n                  placeholderImage:(nullable UIImage *)placeholder\n                           options:(SDWebImageOptions)options\n                      operationKey:(nullable NSString *)operationKey\n                     setImageBlock:(nullable SDSetImageBlock)setImageBlock\n                          progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                         completed:(nullable SDExternalCompletionBlock)completedBlock;\n\n/**\n * Cancel the current download\n */\n- (void)sd_cancelCurrentImageLoad;\n\n#if SD_UIKIT\n\n#pragma mark - Activity indicator\n\n/**\n *  Show activity UIActivityIndicatorView\n */\n- (void)sd_setShowActivityIndicatorView:(BOOL)show;\n\n/**\n *  set desired UIActivityIndicatorViewStyle\n *\n *  @param style The style of the UIActivityIndicatorView\n */\n- (void)sd_setIndicatorStyle:(UIActivityIndicatorViewStyle)style;\n\n- (BOOL)sd_showActivityIndicatorView;\n- (void)sd_addActivityIndicator;\n- (void)sd_removeActivityIndicator;\n\n#endif\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIView+WebCache.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"UIView+WebCache.h\"\n\n#if SD_UIKIT || SD_MAC\n\n#import \"objc/runtime.h\"\n#import \"UIView+WebCacheOperation.h\"\n\nstatic char imageURLKey;\n\n#if SD_UIKIT\nstatic char TAG_ACTIVITY_INDICATOR;\nstatic char TAG_ACTIVITY_STYLE;\n#endif\nstatic char TAG_ACTIVITY_SHOW;\n\n@implementation UIView (WebCache)\n\n- (nullable NSURL *)sd_imageURL {\n    return objc_getAssociatedObject(self, &imageURLKey);\n}\n\n- (void)sd_internalSetImageWithURL:(nullable NSURL *)url\n                  placeholderImage:(nullable UIImage *)placeholder\n                           options:(SDWebImageOptions)options\n                      operationKey:(nullable NSString *)operationKey\n                     setImageBlock:(nullable SDSetImageBlock)setImageBlock\n                          progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock\n                         completed:(nullable SDExternalCompletionBlock)completedBlock {\n    NSString *validOperationKey = operationKey ?: NSStringFromClass([self class]);\n    [self sd_cancelImageLoadOperationWithKey:validOperationKey];\n    objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC);\n    \n    if (!(options & SDWebImageDelayPlaceholder)) {\n        dispatch_main_async_safe(^{\n            [self sd_setImage:placeholder imageData:nil basedOnClassOrViaCustomSetImageBlock:setImageBlock];\n        });\n    }\n    \n    if (url) {\n        // check if activityView is enabled or not\n        if ([self sd_showActivityIndicatorView]) {\n            [self sd_addActivityIndicator];\n        }\n        \n        __weak __typeof(self)wself = self;\n        id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager loadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {\n            __strong __typeof (wself) sself = wself;\n            [sself sd_removeActivityIndicator];\n            if (!sself) {\n                return;\n            }\n            dispatch_main_async_safe(^{\n                if (!sself) {\n                    return;\n                }\n                if (image && (options & SDWebImageAvoidAutoSetImage) && completedBlock) {\n                    completedBlock(image, error, cacheType, url);\n                    return;\n                } else if (image) {\n                    [sself sd_setImage:image imageData:data basedOnClassOrViaCustomSetImageBlock:setImageBlock];\n                    [sself sd_setNeedsLayout];\n                } else {\n                    if ((options & SDWebImageDelayPlaceholder)) {\n                        [sself sd_setImage:placeholder imageData:nil basedOnClassOrViaCustomSetImageBlock:setImageBlock];\n                        [sself sd_setNeedsLayout];\n                    }\n                }\n                if (completedBlock && finished) {\n                    completedBlock(image, error, cacheType, url);\n                }\n            });\n        }];\n        [self sd_setImageLoadOperation:operation forKey:validOperationKey];\n    } else {\n        dispatch_main_async_safe(^{\n            [self sd_removeActivityIndicator];\n            if (completedBlock) {\n                NSError *error = [NSError errorWithDomain:SDWebImageErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @\"Trying to load a nil url\"}];\n                completedBlock(nil, error, SDImageCacheTypeNone, url);\n            }\n        });\n    }\n}\n\n- (void)sd_cancelCurrentImageLoad {\n    [self sd_cancelImageLoadOperationWithKey:NSStringFromClass([self class])];\n}\n\n- (void)sd_setImage:(UIImage *)image imageData:(NSData *)imageData basedOnClassOrViaCustomSetImageBlock:(SDSetImageBlock)setImageBlock {\n    if (setImageBlock) {\n        setImageBlock(image, imageData);\n        return;\n    }\n    \n#if SD_UIKIT || SD_MAC\n    if ([self isKindOfClass:[UIImageView class]]) {\n        UIImageView *imageView = (UIImageView *)self;\n        imageView.image = image;\n    }\n#endif\n    \n#if SD_UIKIT\n    if ([self isKindOfClass:[UIButton class]]) {\n        UIButton *button = (UIButton *)self;\n        [button setImage:image forState:UIControlStateNormal];\n    }\n#endif\n}\n\n- (void)sd_setNeedsLayout {\n#if SD_UIKIT\n    [self setNeedsLayout];\n#elif SD_MAC\n    [self setNeedsLayout:YES];\n#endif\n}\n\n#pragma mark - Activity indicator\n\n#pragma mark -\n#if SD_UIKIT\n- (UIActivityIndicatorView *)activityIndicator {\n    return (UIActivityIndicatorView *)objc_getAssociatedObject(self, &TAG_ACTIVITY_INDICATOR);\n}\n\n- (void)setActivityIndicator:(UIActivityIndicatorView *)activityIndicator {\n    objc_setAssociatedObject(self, &TAG_ACTIVITY_INDICATOR, activityIndicator, OBJC_ASSOCIATION_RETAIN);\n}\n#endif\n\n- (void)sd_setShowActivityIndicatorView:(BOOL)show {\n    objc_setAssociatedObject(self, &TAG_ACTIVITY_SHOW, @(show), OBJC_ASSOCIATION_RETAIN);\n}\n\n- (BOOL)sd_showActivityIndicatorView {\n    return [objc_getAssociatedObject(self, &TAG_ACTIVITY_SHOW) boolValue];\n}\n\n#if SD_UIKIT\n- (void)sd_setIndicatorStyle:(UIActivityIndicatorViewStyle)style{\n    objc_setAssociatedObject(self, &TAG_ACTIVITY_STYLE, [NSNumber numberWithInt:style], OBJC_ASSOCIATION_RETAIN);\n}\n\n- (int)sd_getIndicatorStyle{\n    return [objc_getAssociatedObject(self, &TAG_ACTIVITY_STYLE) intValue];\n}\n#endif\n\n- (void)sd_addActivityIndicator {\n#if SD_UIKIT\n    dispatch_main_async_safe(^{\n        if (!self.activityIndicator) {\n            self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:[self sd_getIndicatorStyle]];\n            self.activityIndicator.translatesAutoresizingMaskIntoConstraints = NO;\n        \n            [self addSubview:self.activityIndicator];\n            \n            [self addConstraint:[NSLayoutConstraint constraintWithItem:self.activityIndicator\n                                                             attribute:NSLayoutAttributeCenterX\n                                                             relatedBy:NSLayoutRelationEqual\n                                                                toItem:self\n                                                             attribute:NSLayoutAttributeCenterX\n                                                            multiplier:1.0\n                                                              constant:0.0]];\n            [self addConstraint:[NSLayoutConstraint constraintWithItem:self.activityIndicator\n                                                             attribute:NSLayoutAttributeCenterY\n                                                             relatedBy:NSLayoutRelationEqual\n                                                                toItem:self\n                                                             attribute:NSLayoutAttributeCenterY\n                                                            multiplier:1.0\n                                                              constant:0.0]];\n        }\n        [self.activityIndicator startAnimating];\n    });\n#endif\n}\n\n- (void)sd_removeActivityIndicator {\n#if SD_UIKIT\n    dispatch_main_async_safe(^{\n        if (self.activityIndicator) {\n            [self.activityIndicator removeFromSuperview];\n            self.activityIndicator = nil;\n        }\n    });\n#endif\n}\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"SDWebImageCompat.h\"\n\n#if SD_UIKIT || SD_MAC\n\n#import \"SDWebImageManager.h\"\n\n@interface UIView (WebCacheOperation)\n\n/**\n *  Set the image load operation (storage in a UIView based dictionary)\n *\n *  @param operation the operation\n *  @param key       key for storing the operation\n */\n- (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key;\n\n/**\n *  Cancel all operations for the current UIView and key\n *\n *  @param key key for identifying the operations\n */\n- (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key;\n\n/**\n *  Just remove the operations corresponding to the current UIView and key without cancelling them\n *\n *  @param key key for identifying the operations\n */\n- (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key;\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.m",
    "content": "/*\n * This file is part of the SDWebImage package.\n * (c) Olivier Poitrey <rs@dailymotion.com>\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n#import \"UIView+WebCacheOperation.h\"\n\n#if SD_UIKIT || SD_MAC\n\n#import \"objc/runtime.h\"\n\nstatic char loadOperationKey;\n\ntypedef NSMutableDictionary<NSString *, id> SDOperationsDictionary;\n\n@implementation UIView (WebCacheOperation)\n\n- (SDOperationsDictionary *)operationDictionary {\n    SDOperationsDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey);\n    if (operations) {\n        return operations;\n    }\n    operations = [NSMutableDictionary dictionary];\n    objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC);\n    return operations;\n}\n\n- (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key {\n    if (key) {\n        [self sd_cancelImageLoadOperationWithKey:key];\n        if (operation) {\n            SDOperationsDictionary *operationDictionary = [self operationDictionary];\n            operationDictionary[key] = operation;\n        }\n    }\n}\n\n- (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key {\n    // Cancel in progress downloader from queue\n    SDOperationsDictionary *operationDictionary = [self operationDictionary];\n    id operations = operationDictionary[key];\n    if (operations) {\n        if ([operations isKindOfClass:[NSArray class]]) {\n            for (id <SDWebImageOperation> operation in operations) {\n                if (operation) {\n                    [operation cancel];\n                }\n            }\n        } else if ([operations conformsToProtocol:@protocol(SDWebImageOperation)]){\n            [(id<SDWebImageOperation>) operations cancel];\n        }\n        [operationDictionary removeObjectForKey:key];\n    }\n}\n\n- (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key {\n    if (key) {\n        SDOperationsDictionary *operationDictionary = [self operationDictionary];\n        [operationDictionary removeObjectForKey:key];\n    }\n}\n\n@end\n\n#endif\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/LICENSE.txt",
    "content": "Copyright (c) 2011-2017 Sam Vermette, Tobias Tiemerding and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nA different license may apply to other resources included in this package, including Freepik Icons. Please consult their respective headers for the terms of their individual licenses.\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/README.md",
    "content": "# SVProgressHUD\n\n![Pod Version](https://img.shields.io/cocoapods/v/SVProgressHUD.svg?style=flat)\n![Pod Platform](https://img.shields.io/cocoapods/p/SVProgressHUD.svg?style=flat)\n![Pod License](https://img.shields.io/cocoapods/l/SVProgressHUD.svg?style=flat)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n\n`SVProgressHUD` is a clean and easy-to-use HUD meant to display the progress of an ongoing task on iOS and tvOS.\n\n![SVProgressHUD](http://f.cl.ly/items/2G1F1Z0M0k0h2U3V1p39/SVProgressHUD.gif)\n\n## Demo\t\t\n\nTry `SVProgressHUD` on [Appetize.io](https://appetize.io/app/p8r2cvy8kq74x7q7tjqf5gyatr).\n\n## Installation\n\n### From CocoaPods\n\n[CocoaPods](http://cocoapods.org) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like `SVProgressHUD` in your projects. First, add the following line to your [Podfile](http://guides.cocoapods.org/using/using-cocoapods.html):\n\n```ruby\npod 'SVProgressHUD'\n```\n\nIf you want to use the latest features of `SVProgressHUD` use normal external source dependencies.\n\n```ruby\npod 'SVProgressHUD', :git => 'https://github.com/SVProgressHUD/SVProgressHUD.git'\n```\n\nThis pulls from the `master` branch directly.\n\nSecond, install `SVProgressHUD` into your project:\n\n```ruby\npod install\n```\n\n### Carthage \n\n[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate `SVProgressHUD` into your Xcode project using Carthage, specify it in your `Cartfile`:\n\n```ogdl\ngithub \"SVProgressHUD/SVProgressHUD\"\n```\n\nRun `carthage update` to build the framework and drag the built `SVProgressHUD.framework` (in Carthage/Build/iOS folder) into your Xcode project (Linked Frameworks and Libraries in `Targets`).\n\n\n### Manually\n\n* Drag the `SVProgressHUD/SVProgressHUD` folder into your project.\n* Take care that `SVProgressHUD.bundle` is added to `Targets->Build Phases->Copy Bundle Resources`.\n* Add the **QuartzCore** framework to your project.\n\n## Swift\n\nEven though `SVProgressHUD` is written in Objective-C, it can be used in Swift with no hassle. If you use [CocoaPods](http://cocoapods.org) add the following line to your [Podfile](http://guides.cocoapods.org/using/using-cocoapods.html):\n\n```ruby\nuse_frameworks!\n```\n\nIf you added `SVProgressHUD` manually, just add a [bridging header](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html) file to your project with the `SVProgressHUD` header included. \n\n## Usage\n\n(see sample Xcode project in `/Demo`)\n\n`SVProgressHUD` is created as a singleton (i.e. it doesn't need to be explicitly allocated and instantiated; you directly call `[SVProgressHUD method]`).\n\n**Use `SVProgressHUD` wisely! Only use it if you absolutely need to perform a task before taking the user forward. Bad use case examples: pull to refresh, infinite scrolling, sending message.**\n\nUsing `SVProgressHUD` in your app will usually look as simple as this (using Grand Central Dispatch):\n\n```objective-c\n[SVProgressHUD show];\ndispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{\n    // time-consuming task\n    dispatch_async(dispatch_get_main_queue(), ^{\n        [SVProgressHUD dismiss];\n    });\n});\n```\n\n### Showing the HUD\n\nYou can show the status of indeterminate tasks using one of the following:\n\n```objective-c\n+ (void)show;\n+ (void)showWithStatus:(NSString*)string;\n```\n\nIf you'd like the HUD to reflect the progress of a task, use one of these:\n\n```objective-c\n+ (void)showProgress:(CGFloat)progress;\n+ (void)showProgress:(CGFloat)progress status:(NSString*)status;\n```\n\n### Dismissing the HUD\n\nThe HUD can be dismissed using:\n\n```objective-c\n+ (void)dismiss;\n+ (void)dismissWithDelay:(NSTimeInterval)delay;\n```\n\nIf you'd like to stack HUDs, you can balance out every show call using:\n\n```\n+ (void)popActivity;\n```\n\nThe HUD will get dismissed once the popActivity calls will match the number of show calls.\n\nOr show a confirmation glyph before before getting dismissed a little bit later. The display time depends on `minimumDismissTimeInterval` and the length of the given string.\n\n```objective-c\n+ (void)showInfoWithStatus:(NSString*)string;\n+ (void)showSuccessWithStatus:(NSString*)string;\n+ (void)showErrorWithStatus:(NSString*)string;\n+ (void)showImage:(UIImage*)image status:(NSString*)string;\n```\n\n## Customization\n\n`SVProgressHUD` can be customized via the following methods:\n\n```objective-c\n+ (void)setDefaultStyle:(SVProgressHUDStyle)style;                  // default is SVProgressHUDStyleLight\n+ (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType;         // default is SVProgressHUDMaskTypeNone\n+ (void)setDefaultAnimationType:(SVProgressHUDAnimationType)type;   // default is SVProgressHUDAnimationTypeFlat\n+ (void)setContainerView:(UIView*)containerView;                    // default is window level\n+ (void)setMinimumSize:(CGSize)minimumSize;                         // default is CGSizeZero, can be used to avoid resizing\n+ (void)setRingThickness:(CGFloat)width;                            // default is 2 pt\n+ (void)setRingRadius:(CGFloat)radius;                              // default is 18 pt\n+ (void)setRingNoTextRadius:(CGFloat)radius;                        // default is 24 pt\n+ (void)setCornerRadius:(CGFloat)cornerRadius;                      // default is 14 pt\n+ (void)setBorderColor:(nonnull UIColor*)color;                     // default is nil\n+ (void)setBorderWidth:(CGFloat)width;                              // default is 0\n+ (void)setFont:(UIFont*)font;                                      // default is [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]\n+ (void)setForegroundColor:(UIColor*)color;                         // default is [UIColor blackColor], only used for SVProgressHUDStyleCustom\n+ (void)setBackgroundColor:(UIColor*)color;                         // default is [UIColor whiteColor], only used for SVProgressHUDStyleCustom\n+ (void)setBackgroundLayerColor:(UIColor*)color;                    // default is [UIColor colorWithWhite:0 alpha:0.4], only used for SVProgressHUDMaskTypeCustom\n+ (void)setImageViewSize:(CGSize)size;                              // default is 28x28 pt\n+ (void)setInfoImage:(UIImage*)image;                               // default is the bundled info image provided by Freepik\n+ (void)setSuccessImage:(UIImage*)image;                            // default is bundled success image from Freepik\n+ (void)setErrorImage:(UIImage*)image;                              // default is bundled error image from Freepik\n+ (void)setViewForExtension:(UIView*)view;                          // default is nil, only used if #define SV_APP_EXTENSIONS is set\n+ (void)setGraceTimeInterval:(NSTimeInterval)interval;              // default is 0 seconds\n+ (void)setMinimumDismissTimeInterval:(NSTimeInterval)interval;     // default is 5.0 seconds\n+ (void)setMaximumDismissTimeInterval:(NSTimeInterval)interval;     // default is CGFLOAT_MAX\n+ (void)setFadeInAnimationDuration:(NSTimeInterval)duration;        // default is 0.15 seconds\n+ (void)setFadeOutAnimationDuration:(NSTimeInterval)duration;       // default is 0.15 seconds\n+ (void)setMaxSupportedWindowLevel:(UIWindowLevel)windowLevel;      // default is UIWindowLevelNormal\n+ (void)setHapticsEnabled:(BOOL)hapticsEnabled;\t\t\t\t\t\t// default is NO\n```\n\nAdditionally `SVProgressHUD` supports the `UIAppearance` protocol for most of the above methods.\n\n### Hint\n\nAs standard `SVProgressHUD` offers two preconfigured styles:\n\n* `SVProgressHUDStyleLight`: White background with black spinner and text\n* `SVProgressHUDStyleDark`: Black background with white spinner and text\n\nIf you want to use custom colors use `setForegroundColor` and `setBackgroundColor:`. These implicity set the HUD's style to `SVProgressHUDStyleCustom`.\n\n## Haptic Feedback\n\nFor users with newer devices (starting with the iPhone 7), `SVProgressHUD` can automatically trigger haptic feedback depending on which HUD is being displayed. The feedback maps as follows:\n\n* `showSuccessWithStatus:` <-> `UINotificationFeedbackTypeSuccess`\n* `showInfoWithStatus:` <-> `UINotificationFeedbackTypeWarning`\n* `showErrorWithStatus:` <-> `UINotificationFeedbackTypeError`\n\nTo enable this functionality, use `setHapticsEnabled:`.\n\nUsers with devices prior to iPhone 7 will have no change in functionality.\n\n## Notifications\n\n`SVProgressHUD` posts four notifications via `NSNotificationCenter` in response to being shown/dismissed:\n* `SVProgressHUDWillAppearNotification` when the show animation starts\n* `SVProgressHUDDidAppearNotification` when the show animation completes\n* `SVProgressHUDWillDisappearNotification` when the dismiss animation starts\n* `SVProgressHUDDidDisappearNotification` when the dismiss animation completes\n\nEach notification passes a `userInfo` dictionary holding the HUD's status string (if any), retrievable via `SVProgressHUDStatusUserInfoKey`.\n\n`SVProgressHUD` also posts `SVProgressHUDDidReceiveTouchEventNotification` when users touch on the overall screen or `SVProgressHUDDidTouchDownInsideNotification` when a user touches on the HUD directly. For this notifications `userInfo` is not passed but the object parameter contains the `UIEvent` that related to the touch.\n\n## App Extensions\n\nWhen using `SVProgressHUD` in an App Extension, `#define SV_APP_EXTENSIONS` to avoid using unavailable APIs. Additionally call `setViewForExtension:` from your extensions view controller with `self.view`.\n\n## Contributing to this project\n\nIf you have feature requests or bug reports, feel free to help out by sending pull requests or by [creating new issues](https://github.com/SVProgressHUD/SVProgressHUD/issues/new). Please take a moment to\nreview the guidelines written by [Nicolas Gallagher](https://github.com/necolas):\n\n* [Bug reports](https://github.com/necolas/issue-guidelines/blob/master/CONTRIBUTING.md#bugs)\n* [Feature requests](https://github.com/necolas/issue-guidelines/blob/master/CONTRIBUTING.md#features)\n* [Pull requests](https://github.com/necolas/issue-guidelines/blob/master/CONTRIBUTING.md#pull-requests)\n\n## License\n\n`SVProgressHUD` is distributed under the terms and conditions of the [MIT license](https://github.com/SVProgressHUD/SVProgressHUD/blob/master/LICENSE.txt). The success, error and info icons are made by [Freepik](http://www.freepik.com) from [Flaticon](http://www.flaticon.com) and are licensed under [Creative Commons BY 3.0](http://creativecommons.org/licenses/by/3.0/). \n\n## Credits\n\n`SVProgressHUD` is brought to you by [Sam Vermette](http://samvermette.com), [Tobias Tiemerding](http://tiemerding.com) and [contributors to the project](https://github.com/SVProgressHUD/SVProgressHUD/contributors). If you're using `SVProgressHUD` in your project, attribution would be very appreciated.\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.h",
    "content": "//\n//  SVIndefiniteAnimatedView.h\n//  SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n//  Copyright (c) 2014-2017 Guillaume Campagna. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface SVIndefiniteAnimatedView : UIView\n\n@property (nonatomic, assign) CGFloat strokeThickness;\n@property (nonatomic, assign) CGFloat radius;\n@property (nonatomic, strong) UIColor *strokeColor;\n\n@end\n\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVIndefiniteAnimatedView.m",
    "content": "//\n//  SVIndefiniteAnimatedView.m\n//  SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n//  Copyright (c) 2014-2017 Guillaume Campagna. All rights reserved.\n//\n\n#import \"SVIndefiniteAnimatedView.h\"\n#import \"SVProgressHUD.h\"\n\n@interface SVIndefiniteAnimatedView ()\n\n@property (nonatomic, strong) CAShapeLayer *indefiniteAnimatedLayer;\n\n@end\n\n@implementation SVIndefiniteAnimatedView\n\n- (void)willMoveToSuperview:(UIView*)newSuperview {\n    if (newSuperview) {\n        [self layoutAnimatedLayer];\n    } else {\n        [_indefiniteAnimatedLayer removeFromSuperlayer];\n        _indefiniteAnimatedLayer = nil;\n    }\n}\n\n- (void)layoutAnimatedLayer {\n    CALayer *layer = self.indefiniteAnimatedLayer;\n    [self.layer addSublayer:layer];\n    \n    CGFloat widthDiff = CGRectGetWidth(self.bounds) - CGRectGetWidth(layer.bounds);\n    CGFloat heightDiff = CGRectGetHeight(self.bounds) - CGRectGetHeight(layer.bounds);\n    layer.position = CGPointMake(CGRectGetWidth(self.bounds) - CGRectGetWidth(layer.bounds) / 2 - widthDiff / 2, CGRectGetHeight(self.bounds) - CGRectGetHeight(layer.bounds) / 2 - heightDiff / 2);\n}\n\n- (CAShapeLayer*)indefiniteAnimatedLayer {\n    if(!_indefiniteAnimatedLayer) {\n        CGPoint arcCenter = CGPointMake(self.radius+self.strokeThickness/2+5, self.radius+self.strokeThickness/2+5);\n        UIBezierPath* smoothedPath = [UIBezierPath bezierPathWithArcCenter:arcCenter radius:self.radius startAngle:(CGFloat) (M_PI*3/2) endAngle:(CGFloat) (M_PI/2+M_PI*5) clockwise:YES];\n        \n        _indefiniteAnimatedLayer = [CAShapeLayer layer];\n        _indefiniteAnimatedLayer.contentsScale = [[UIScreen mainScreen] scale];\n        _indefiniteAnimatedLayer.frame = CGRectMake(0.0f, 0.0f, arcCenter.x*2, arcCenter.y*2);\n        _indefiniteAnimatedLayer.fillColor = [UIColor clearColor].CGColor;\n        _indefiniteAnimatedLayer.strokeColor = self.strokeColor.CGColor;\n        _indefiniteAnimatedLayer.lineWidth = self.strokeThickness;\n        _indefiniteAnimatedLayer.lineCap = kCALineCapRound;\n        _indefiniteAnimatedLayer.lineJoin = kCALineJoinBevel;\n        _indefiniteAnimatedLayer.path = smoothedPath.CGPath;\n        \n        CALayer *maskLayer = [CALayer layer];\n        \n        NSBundle *bundle = [NSBundle bundleForClass:[SVProgressHUD class]];\n        NSURL *url = [bundle URLForResource:@\"SVProgressHUD\" withExtension:@\"bundle\"];\n        NSBundle *imageBundle = [NSBundle bundleWithURL:url];\n        \n        NSString *path = [imageBundle pathForResource:@\"angle-mask\" ofType:@\"png\"];\n        \n        maskLayer.contents = (__bridge id)[[UIImage imageWithContentsOfFile:path] CGImage];\n        maskLayer.frame = _indefiniteAnimatedLayer.bounds;\n        _indefiniteAnimatedLayer.mask = maskLayer;\n        \n        NSTimeInterval animationDuration = 1;\n        CAMediaTimingFunction *linearCurve = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];\n        \n        CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@\"transform.rotation\"];\n        animation.fromValue = (id) 0;\n        animation.toValue = @(M_PI*2);\n        animation.duration = animationDuration;\n        animation.timingFunction = linearCurve;\n        animation.removedOnCompletion = NO;\n        animation.repeatCount = INFINITY;\n        animation.fillMode = kCAFillModeForwards;\n        animation.autoreverses = NO;\n        [_indefiniteAnimatedLayer.mask addAnimation:animation forKey:@\"rotate\"];\n        \n        CAAnimationGroup *animationGroup = [CAAnimationGroup animation];\n        animationGroup.duration = animationDuration;\n        animationGroup.repeatCount = INFINITY;\n        animationGroup.removedOnCompletion = NO;\n        animationGroup.timingFunction = linearCurve;\n        \n        CABasicAnimation *strokeStartAnimation = [CABasicAnimation animationWithKeyPath:@\"strokeStart\"];\n        strokeStartAnimation.fromValue = @0.015;\n        strokeStartAnimation.toValue = @0.515;\n        \n        CABasicAnimation *strokeEndAnimation = [CABasicAnimation animationWithKeyPath:@\"strokeEnd\"];\n        strokeEndAnimation.fromValue = @0.485;\n        strokeEndAnimation.toValue = @0.985;\n        \n        animationGroup.animations = @[strokeStartAnimation, strokeEndAnimation];\n        [_indefiniteAnimatedLayer addAnimation:animationGroup forKey:@\"progress\"];\n        \n    }\n    return _indefiniteAnimatedLayer;\n}\n\n- (void)setFrame:(CGRect)frame {\n    if(!CGRectEqualToRect(frame, super.frame)) {\n        [super setFrame:frame];\n        \n        if(self.superview) {\n            [self layoutAnimatedLayer];\n        }\n    }\n    \n}\n\n- (void)setRadius:(CGFloat)radius {\n    if(radius != _radius) {\n        _radius = radius;\n        \n        [_indefiniteAnimatedLayer removeFromSuperlayer];\n        _indefiniteAnimatedLayer = nil;\n        \n        if(self.superview) {\n            [self layoutAnimatedLayer];\n        }\n    }\n}\n\n- (void)setStrokeColor:(UIColor*)strokeColor {\n    _strokeColor = strokeColor;\n    _indefiniteAnimatedLayer.strokeColor = strokeColor.CGColor;\n}\n\n- (void)setStrokeThickness:(CGFloat)strokeThickness {\n    _strokeThickness = strokeThickness;\n    _indefiniteAnimatedLayer.lineWidth = _strokeThickness;\n}\n\n- (CGSize)sizeThatFits:(CGSize)size {\n    return CGSizeMake((self.radius+self.strokeThickness/2+5)*2, (self.radius+self.strokeThickness/2+5)*2);\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.h",
    "content": "//\n//  SVProgressAnimatedView.h\n//  SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n//  Copyright (c) 2017 Tobias Tiemerding. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface SVProgressAnimatedView : UIView\n\n@property (nonatomic, assign) CGFloat radius;\n@property (nonatomic, assign) CGFloat strokeThickness;\n@property (nonatomic, strong) UIColor *strokeColor;\n@property (nonatomic, assign) CGFloat strokeEnd;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressAnimatedView.m",
    "content": "//\n//  SVProgressAnimatedView.m\n//  SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n//  Copyright (c) 2017 Tobias Tiemerding. All rights reserved.\n//\n\n#import \"SVProgressAnimatedView.h\"\n\n@interface SVProgressAnimatedView ()\n\n@property (nonatomic, strong) CAShapeLayer *ringAnimatedLayer;\n\n@end\n\n@implementation SVProgressAnimatedView\n\n- (void)willMoveToSuperview:(UIView*)newSuperview {\n    if (newSuperview) {\n        [self layoutAnimatedLayer];\n    } else {\n        [_ringAnimatedLayer removeFromSuperlayer];\n        _ringAnimatedLayer = nil;\n    }\n}\n\n- (void)layoutAnimatedLayer {\n    CALayer *layer = self.ringAnimatedLayer;\n    [self.layer addSublayer:layer];\n    \n    CGFloat widthDiff = CGRectGetWidth(self.bounds) - CGRectGetWidth(layer.bounds);\n    CGFloat heightDiff = CGRectGetHeight(self.bounds) - CGRectGetHeight(layer.bounds);\n    layer.position = CGPointMake(CGRectGetWidth(self.bounds) - CGRectGetWidth(layer.bounds) / 2 - widthDiff / 2, CGRectGetHeight(self.bounds) - CGRectGetHeight(layer.bounds) / 2 - heightDiff / 2);\n}\n\n- (CAShapeLayer*)ringAnimatedLayer {\n    if(!_ringAnimatedLayer) {\n        CGPoint arcCenter = CGPointMake(self.radius+self.strokeThickness/2+5, self.radius+self.strokeThickness/2+5);\n        UIBezierPath* smoothedPath = [UIBezierPath bezierPathWithArcCenter:arcCenter radius:self.radius startAngle:(CGFloat)-M_PI_2 endAngle:(CGFloat) (M_PI + M_PI_2) clockwise:YES];\n        \n        _ringAnimatedLayer = [CAShapeLayer layer];\n        _ringAnimatedLayer.contentsScale = [[UIScreen mainScreen] scale];\n        _ringAnimatedLayer.frame = CGRectMake(0.0f, 0.0f, arcCenter.x*2, arcCenter.y*2);\n        _ringAnimatedLayer.fillColor = [UIColor clearColor].CGColor;\n        _ringAnimatedLayer.strokeColor = self.strokeColor.CGColor;\n        _ringAnimatedLayer.lineWidth = self.strokeThickness;\n        _ringAnimatedLayer.lineCap = kCALineCapRound;\n        _ringAnimatedLayer.lineJoin = kCALineJoinBevel;\n        _ringAnimatedLayer.path = smoothedPath.CGPath;\n    }\n    return _ringAnimatedLayer;\n}\n\n- (void)setFrame:(CGRect)frame {\n    if(!CGRectEqualToRect(frame, super.frame)) {\n        [super setFrame:frame];\n        \n        if(self.superview) {\n            [self layoutAnimatedLayer];\n        }\n    }\n}\n\n- (void)setRadius:(CGFloat)radius {\n    if(radius != _radius) {\n        _radius = radius;\n        \n        [_ringAnimatedLayer removeFromSuperlayer];\n        _ringAnimatedLayer = nil;\n        \n        if(self.superview) {\n            [self layoutAnimatedLayer];\n        }\n    }\n}\n\n- (void)setStrokeColor:(UIColor*)strokeColor {\n    _strokeColor = strokeColor;\n    _ringAnimatedLayer.strokeColor = strokeColor.CGColor;\n}\n\n- (void)setStrokeThickness:(CGFloat)strokeThickness {\n    _strokeThickness = strokeThickness;\n    _ringAnimatedLayer.lineWidth = _strokeThickness;\n}\n\n- (void)setStrokeEnd:(CGFloat)strokeEnd {\n    _strokeEnd = strokeEnd;\n    _ringAnimatedLayer.strokeEnd = _strokeEnd;\n}\n\n- (CGSize)sizeThatFits:(CGSize)size {\n    return CGSizeMake((self.radius+self.strokeThickness/2+5)*2, (self.radius+self.strokeThickness/2+5)*2);\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h",
    "content": "//\n//  SVProgressHUD.h\n//  SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n//  Copyright (c) 2011-2017 Sam Vermette and contributors. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import <AvailabilityMacros.h>\n\n#if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000\n\n#define UI_APPEARANCE_SELECTOR\n\n#endif\n\nextern NSString * _Nonnull const SVProgressHUDDidReceiveTouchEventNotification;\nextern NSString * _Nonnull const SVProgressHUDDidTouchDownInsideNotification;\nextern NSString * _Nonnull const SVProgressHUDWillDisappearNotification;\nextern NSString * _Nonnull const SVProgressHUDDidDisappearNotification;\nextern NSString * _Nonnull const SVProgressHUDWillAppearNotification;\nextern NSString * _Nonnull const SVProgressHUDDidAppearNotification;\n\nextern NSString * _Nonnull const SVProgressHUDStatusUserInfoKey;\n\ntypedef NS_ENUM(NSInteger, SVProgressHUDStyle) {\n    SVProgressHUDStyleLight,        // default style, white HUD with black text, HUD background will be blurred\n    SVProgressHUDStyleDark,         // black HUD and white text, HUD background will be blurred\n    SVProgressHUDStyleCustom        // uses the fore- and background color properties\n};\n\ntypedef NS_ENUM(NSUInteger, SVProgressHUDMaskType) {\n    SVProgressHUDMaskTypeNone = 1,  // default mask type, allow user interactions while HUD is displayed\n    SVProgressHUDMaskTypeClear,     // don't allow user interactions with background objects\n    SVProgressHUDMaskTypeBlack,     // don't allow user interactions with background objects and dim the UI in the back of the HUD (as seen in iOS 7 and above)\n    SVProgressHUDMaskTypeGradient,  // don't allow user interactions with background objects and dim the UI with a a-la UIAlertView background gradient (as seen in iOS 6)\n    SVProgressHUDMaskTypeCustom     // don't allow user interactions with background objects and dim the UI in the back of the HUD with a custom color\n};\n\ntypedef NS_ENUM(NSUInteger, SVProgressHUDAnimationType) {\n    SVProgressHUDAnimationTypeFlat,     // default animation type, custom flat animation (indefinite animated ring)\n    SVProgressHUDAnimationTypeNative    // iOS native UIActivityIndicatorView\n};\n\ntypedef void (^SVProgressHUDShowCompletion)(void);\ntypedef void (^SVProgressHUDDismissCompletion)(void);\n\n@interface SVProgressHUD : UIView\n\n#pragma mark - Customization\n\n@property (assign, nonatomic) SVProgressHUDStyle defaultStyle UI_APPEARANCE_SELECTOR;                   // default is SVProgressHUDStyleLight\n@property (assign, nonatomic) SVProgressHUDMaskType defaultMaskType UI_APPEARANCE_SELECTOR;             // default is SVProgressHUDMaskTypeNone\n@property (assign, nonatomic) SVProgressHUDAnimationType defaultAnimationType UI_APPEARANCE_SELECTOR;   // default is SVProgressHUDAnimationTypeFlat\n@property (strong, nonatomic, nullable) UIView *containerView;                              // if nil then use default window level\n@property (assign, nonatomic) CGSize minimumSize UI_APPEARANCE_SELECTOR;                    // default is CGSizeZero, can be used to avoid resizing for a larger message\n@property (assign, nonatomic) CGFloat ringThickness UI_APPEARANCE_SELECTOR;                 // default is 2 pt\n@property (assign, nonatomic) CGFloat ringRadius UI_APPEARANCE_SELECTOR;                    // default is 18 pt\n@property (assign, nonatomic) CGFloat ringNoTextRadius UI_APPEARANCE_SELECTOR;              // default is 24 pt\n@property (assign, nonatomic) CGFloat cornerRadius UI_APPEARANCE_SELECTOR;                  // default is 14 pt\n@property (strong, nonatomic, nonnull) UIFont *font UI_APPEARANCE_SELECTOR;                 // default is [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]\n@property (strong, nonatomic, nonnull) UIColor *backgroundColor UI_APPEARANCE_SELECTOR;     // default is [UIColor whiteColor]\n@property (strong, nonatomic, nonnull) UIColor *foregroundColor UI_APPEARANCE_SELECTOR;     // default is [UIColor blackColor]\n@property (strong, nonatomic, nonnull) UIColor *backgroundLayerColor UI_APPEARANCE_SELECTOR;// default is [UIColor colorWithWhite:0 alpha:0.4]\n@property (assign, nonatomic) CGSize imageViewSize UI_APPEARANCE_SELECTOR;                  // default is 28x28 pt\n@property (strong, nonatomic, nonnull) UIImage *infoImage UI_APPEARANCE_SELECTOR;           // default is the bundled info image provided by Freepik\n@property (strong, nonatomic, nonnull) UIImage *successImage UI_APPEARANCE_SELECTOR;        // default is the bundled success image provided by Freepik\n@property (strong, nonatomic, nonnull) UIImage *errorImage UI_APPEARANCE_SELECTOR;          // default is the bundled error image provided by Freepik\n@property (strong, nonatomic, nonnull) UIView *viewForExtension UI_APPEARANCE_SELECTOR;     // default is nil, only used if #define SV_APP_EXTENSIONS is set\n@property (assign, nonatomic) NSTimeInterval graceTimeInterval;                             // default is 0 seconds\n@property (assign, nonatomic) NSTimeInterval minimumDismissTimeInterval;                    // default is 5.0 seconds\n@property (assign, nonatomic) NSTimeInterval maximumDismissTimeInterval;                    // default is CGFLOAT_MAX\n\n@property (assign, nonatomic) UIOffset offsetFromCenter UI_APPEARANCE_SELECTOR; // default is 0, 0\n\n@property (assign, nonatomic) NSTimeInterval fadeInAnimationDuration UI_APPEARANCE_SELECTOR;    // default is 0.15\n@property (assign, nonatomic) NSTimeInterval fadeOutAnimationDuration UI_APPEARANCE_SELECTOR;   // default is 0.15\n\n@property (assign, nonatomic) UIWindowLevel maxSupportedWindowLevel; // default is UIWindowLevelNormal\n\n@property (assign, nonatomic) BOOL hapticsEnabled;\t// default is NO\n\n+ (void)setDefaultStyle:(SVProgressHUDStyle)style;                  // default is SVProgressHUDStyleLight\n+ (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType;         // default is SVProgressHUDMaskTypeNone\n+ (void)setDefaultAnimationType:(SVProgressHUDAnimationType)type;   // default is SVProgressHUDAnimationTypeFlat\n+ (void)setContainerView:(nullable UIView*)containerView;           // default is window level\n+ (void)setMinimumSize:(CGSize)minimumSize;                         // default is CGSizeZero, can be used to avoid resizing for a larger message\n+ (void)setRingThickness:(CGFloat)ringThickness;                    // default is 2 pt\n+ (void)setRingRadius:(CGFloat)radius;                              // default is 18 pt\n+ (void)setRingNoTextRadius:(CGFloat)radius;                        // default is 24 pt\n+ (void)setCornerRadius:(CGFloat)cornerRadius;                      // default is 14 pt\n+ (void)setBorderColor:(nonnull UIColor*)color;                     // default is nil\n+ (void)setBorderWidth:(CGFloat)width;                              // default is 0\n+ (void)setFont:(nonnull UIFont*)font;                              // default is [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]\n+ (void)setForegroundColor:(nonnull UIColor*)color;                 // default is [UIColor blackColor], only used for SVProgressHUDStyleCustom\n+ (void)setBackgroundColor:(nonnull UIColor*)color;                 // default is [UIColor whiteColor], only used for SVProgressHUDStyleCustom\n+ (void)setBackgroundLayerColor:(nonnull UIColor*)color;            // default is [UIColor colorWithWhite:0 alpha:0.5], only used for SVProgressHUDMaskTypeCustom\n+ (void)setImageViewSize:(CGSize)size;                              // default is 28x28 pt\n+ (void)setInfoImage:(nonnull UIImage*)image;                       // default is the bundled info image provided by Freepik\n+ (void)setSuccessImage:(nonnull UIImage*)image;                    // default is the bundled success image provided by Freepik\n+ (void)setErrorImage:(nonnull UIImage*)image;                      // default is the bundled error image provided by Freepik\n+ (void)setViewForExtension:(nonnull UIView*)view;                  // default is nil, only used if #define SV_APP_EXTENSIONS is set\n+ (void)setGraceTimeInterval:(NSTimeInterval)interval;              // default is 0 seconds\n+ (void)setMinimumDismissTimeInterval:(NSTimeInterval)interval;     // default is 5.0 seconds\n+ (void)setMaximumDismissTimeInterval:(NSTimeInterval)interval;     // default is infinite\n+ (void)setFadeInAnimationDuration:(NSTimeInterval)duration;        // default is 0.15 seconds\n+ (void)setFadeOutAnimationDuration:(NSTimeInterval)duration;       // default is 0.15 seconds\n+ (void)setMaxSupportedWindowLevel:(UIWindowLevel)windowLevel;      // default is UIWindowLevelNormal\n+ (void)setHapticsEnabled:(BOOL)hapticsEnabled;\t\t\t\t\t\t// default is NO\n\n#pragma mark - Show Methods\n\n+ (void)show;\n+ (void)showWithMaskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated(\"Use show and setDefaultMaskType: instead.\")));\n+ (void)showWithStatus:(nullable NSString*)status;\n+ (void)showWithStatus:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated(\"Use showWithStatus: and setDefaultMaskType: instead.\")));\n\n+ (void)showProgress:(float)progress;\n+ (void)showProgress:(float)progress maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated(\"Use showProgress: and setDefaultMaskType: instead.\")));\n+ (void)showProgress:(float)progress status:(nullable NSString*)status;\n+ (void)showProgress:(float)progress status:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated(\"Use showProgress:status: and setDefaultMaskType: instead.\")));\n\n+ (void)setStatus:(nullable NSString*)status; // change the HUD loading status while it's showing\n\n// stops the activity indicator, shows a glyph + status, and dismisses the HUD a little bit later\n+ (void)showInfoWithStatus:(nullable NSString*)status;\n+ (void)showInfoWithStatus:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated(\"Use showInfoWithStatus: and setDefaultMaskType: instead.\")));\n+ (void)showSuccessWithStatus:(nullable NSString*)status;\n+ (void)showSuccessWithStatus:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated(\"Use showSuccessWithStatus: and setDefaultMaskType: instead.\")));\n+ (void)showErrorWithStatus:(nullable NSString*)status;\n+ (void)showErrorWithStatus:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated(\"Use showErrorWithStatus: and setDefaultMaskType: instead.\")));\n\n// shows a image + status, use white PNGs with the imageViewSize (default is 28x28 pt)\n+ (void)showImage:(nonnull UIImage*)image status:(nullable NSString*)status;\n+ (void)showImage:(nonnull UIImage*)image status:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated(\"Use showImage:status: and setDefaultMaskType: instead.\")));\n\n+ (void)setOffsetFromCenter:(UIOffset)offset;\n+ (void)resetOffsetFromCenter;\n\n+ (void)popActivity; // decrease activity count, if activity count == 0 the HUD is dismissed\n+ (void)dismiss;\n+ (void)dismissWithCompletion:(nullable SVProgressHUDDismissCompletion)completion;\n+ (void)dismissWithDelay:(NSTimeInterval)delay;\n+ (void)dismissWithDelay:(NSTimeInterval)delay completion:(nullable SVProgressHUDDismissCompletion)completion;\n\n+ (BOOL)isVisible;\n\n+ (NSTimeInterval)displayDurationForString:(nullable NSString*)string;\n\n@end\n\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.m",
    "content": "//\n//  SVProgressHUD.h\n//  SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n//  Copyright (c) 2011-2017 Sam Vermette and contributors. All rights reserved.\n//\n\n#if !__has_feature(objc_arc)\n#error SVProgressHUD is ARC only. Either turn on ARC for the project or use -fobjc-arc flag\n#endif\n\n#import \"SVProgressHUD.h\"\n#import \"SVIndefiniteAnimatedView.h\"\n#import \"SVProgressAnimatedView.h\"\n#import \"SVRadialGradientLayer.h\"\n\nNSString * const SVProgressHUDDidReceiveTouchEventNotification = @\"SVProgressHUDDidReceiveTouchEventNotification\";\nNSString * const SVProgressHUDDidTouchDownInsideNotification = @\"SVProgressHUDDidTouchDownInsideNotification\";\nNSString * const SVProgressHUDWillDisappearNotification = @\"SVProgressHUDWillDisappearNotification\";\nNSString * const SVProgressHUDDidDisappearNotification = @\"SVProgressHUDDidDisappearNotification\";\nNSString * const SVProgressHUDWillAppearNotification = @\"SVProgressHUDWillAppearNotification\";\nNSString * const SVProgressHUDDidAppearNotification = @\"SVProgressHUDDidAppearNotification\";\n\nNSString * const SVProgressHUDStatusUserInfoKey = @\"SVProgressHUDStatusUserInfoKey\";\n\nstatic const CGFloat SVProgressHUDParallaxDepthPoints = 10.0f;\nstatic const CGFloat SVProgressHUDUndefinedProgress = -1;\nstatic const CGFloat SVProgressHUDDefaultAnimationDuration = 0.15f;\nstatic const CGFloat SVProgressHUDVerticalSpacing = 12.0f;\nstatic const CGFloat SVProgressHUDHorizontalSpacing = 12.0f;\nstatic const CGFloat SVProgressHUDLabelSpacing = 8.0f;\n\n\n@interface SVProgressHUD ()\n\n@property (nonatomic, strong) NSTimer *graceTimer;\n@property (nonatomic, strong) NSTimer *fadeOutTimer;\n\n@property (nonatomic, strong) UIControl *controlView;\n@property (nonatomic, strong) UIView *backgroundView;\n@property (nonatomic, strong) SVRadialGradientLayer *backgroundRadialGradientLayer;\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n@property (nonatomic, strong) UIVisualEffectView *hudView;\n#else\n@property (nonatomic, strong) UIView *hudView;\n#endif\n@property (nonatomic, strong) UILabel *statusLabel;\n@property (nonatomic, strong) UIImageView *imageView;\n\n@property (nonatomic, strong) UIView *indefiniteAnimatedView;\n@property (nonatomic, strong) SVProgressAnimatedView *ringView;\n@property (nonatomic, strong) SVProgressAnimatedView *backgroundRingView;\n\n@property (nonatomic, readwrite) CGFloat progress;\n@property (nonatomic, readwrite) NSUInteger activityCount;\n\n@property (nonatomic, readonly) CGFloat visibleKeyboardHeight;\n@property (nonatomic, readonly) UIWindow *frontWindow;\n\n#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n@property (nonatomic, strong) UINotificationFeedbackGenerator *hapticGenerator;\n#endif\n\n@end\n\n@implementation SVProgressHUD {\n    BOOL _isInitializing;\n}\n\n+ (SVProgressHUD*)sharedView {\n    static dispatch_once_t once;\n    \n    static SVProgressHUD *sharedView;\n#if !defined(SV_APP_EXTENSIONS)\n    dispatch_once(&once, ^{ sharedView = [[self alloc] initWithFrame:[[[UIApplication sharedApplication] delegate] window].bounds]; });\n#else\n    dispatch_once(&once, ^{ sharedView = [[self alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; });\n#endif\n    return sharedView;\n}\n\n\n#pragma mark - Setters\n\n+ (void)setStatus:(NSString*)status {\n    [[self sharedView] setStatus:status];\n}\n\n+ (void)setDefaultStyle:(SVProgressHUDStyle)style {\n    [self sharedView].defaultStyle = style;\n}\n\n+ (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType {\n    [self sharedView].defaultMaskType = maskType;\n}\n\n+ (void)setDefaultAnimationType:(SVProgressHUDAnimationType)type {\n    [self sharedView].defaultAnimationType = type;\n}\n\n+ (void)setContainerView:(nullable UIView*)containerView {\n    [self sharedView].containerView = containerView;\n}\n\n+ (void)setMinimumSize:(CGSize)minimumSize {\n    [self sharedView].minimumSize = minimumSize;\n}\n\n+ (void)setRingThickness:(CGFloat)ringThickness {\n    [self sharedView].ringThickness = ringThickness;\n}\n\n+ (void)setRingRadius:(CGFloat)radius {\n    [self sharedView].ringRadius = radius;\n}\n\n+ (void)setRingNoTextRadius:(CGFloat)radius {\n    [self sharedView].ringNoTextRadius = radius;\n}\n\n+ (void)setCornerRadius:(CGFloat)cornerRadius {\n    [self sharedView].cornerRadius = cornerRadius;\n}\n\n+ (void)setBorderColor:(nonnull UIColor*)color {\n    [self sharedView].hudView.layer.borderColor = color.CGColor;\n}\n\n+ (void)setBorderWidth:(CGFloat)width {\n    [self sharedView].hudView.layer.borderWidth = width;\n}\n\n+ (void)setFont:(UIFont*)font {\n    [self sharedView].font = font;\n}\n\n+ (void)setForegroundColor:(UIColor*)color {\n    [self sharedView].foregroundColor = color;\n    [self setDefaultStyle:SVProgressHUDStyleCustom];\n}\n\n+ (void)setBackgroundColor:(UIColor*)color {\n    [self sharedView].backgroundColor = color;\n    [self setDefaultStyle:SVProgressHUDStyleCustom];\n}\n\n+ (void)setBackgroundLayerColor:(UIColor*)color {\n    [self sharedView].backgroundLayerColor = color;\n}\n\n+ (void)setImageViewSize:(CGSize)size {\n\t[self sharedView].imageViewSize = size;\n}\n\n+ (void)setInfoImage:(UIImage*)image {\n    [self sharedView].infoImage = image;\n}\n\n+ (void)setSuccessImage:(UIImage*)image {\n    [self sharedView].successImage = image;\n}\n\n+ (void)setErrorImage:(UIImage*)image {\n    [self sharedView].errorImage = image;\n}\n\n+ (void)setViewForExtension:(UIView*)view {\n    [self sharedView].viewForExtension = view;\n}\n\n+ (void)setGraceTimeInterval:(NSTimeInterval)interval {\n    [self sharedView].graceTimeInterval = interval;\n}\n\n+ (void)setMinimumDismissTimeInterval:(NSTimeInterval)interval {\n    [self sharedView].minimumDismissTimeInterval = interval;\n}\n\n+ (void)setMaximumDismissTimeInterval:(NSTimeInterval)interval {\n    [self sharedView].maximumDismissTimeInterval = interval;\n}\n\n+ (void)setFadeInAnimationDuration:(NSTimeInterval)duration {\n    [self sharedView].fadeInAnimationDuration = duration;\n}\n\n+ (void)setFadeOutAnimationDuration:(NSTimeInterval)duration {\n    [self sharedView].fadeOutAnimationDuration = duration;\n}\n\n+ (void)setMaxSupportedWindowLevel:(UIWindowLevel)windowLevel {\n    [self sharedView].maxSupportedWindowLevel = windowLevel;\n}\n\n+ (void)setHapticsEnabled:(BOOL)hapticsEnabled {\n    [self sharedView].hapticsEnabled = hapticsEnabled;\n}\n\n#pragma mark - Show Methods\n\n+ (void)show {\n    [self showWithStatus:nil];\n}\n\n+ (void)showWithMaskType:(SVProgressHUDMaskType)maskType {\n    SVProgressHUDMaskType existingMaskType = [self sharedView].defaultMaskType;\n    [self setDefaultMaskType:maskType];\n    [self show];\n    [self setDefaultMaskType:existingMaskType];\n}\n\n+ (void)showWithStatus:(NSString*)status {\n    [self showProgress:SVProgressHUDUndefinedProgress status:status];\n}\n\n+ (void)showWithStatus:(NSString*)status maskType:(SVProgressHUDMaskType)maskType {\n    SVProgressHUDMaskType existingMaskType = [self sharedView].defaultMaskType;\n    [self setDefaultMaskType:maskType];\n    [self showWithStatus:status];\n    [self setDefaultMaskType:existingMaskType];\n}\n\n+ (void)showProgress:(float)progress {\n    [self showProgress:progress status:nil];\n}\n\n+ (void)showProgress:(float)progress maskType:(SVProgressHUDMaskType)maskType {\n    SVProgressHUDMaskType existingMaskType = [self sharedView].defaultMaskType;\n    [self setDefaultMaskType:maskType];\n    [self showProgress:progress];\n    [self setDefaultMaskType:existingMaskType];\n}\n\n+ (void)showProgress:(float)progress status:(NSString*)status {\n    [[self sharedView] showProgress:progress status:status];\n}\n\n+ (void)showProgress:(float)progress status:(NSString*)status maskType:(SVProgressHUDMaskType)maskType {\n    SVProgressHUDMaskType existingMaskType = [self sharedView].defaultMaskType;\n    [self setDefaultMaskType:maskType];\n    [self showProgress:progress status:status];\n    [self setDefaultMaskType:existingMaskType];\n}\n\n\n#pragma mark - Show, then automatically dismiss methods\n\n+ (void)showInfoWithStatus:(NSString*)status {\n    [self showImage:[self sharedView].infoImage status:status];\n    \n#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n    dispatch_async(dispatch_get_main_queue(), ^{\n        [[self sharedView].hapticGenerator notificationOccurred:UINotificationFeedbackTypeWarning];\n    });\n#endif\n}\n\n+ (void)showInfoWithStatus:(NSString*)status maskType:(SVProgressHUDMaskType)maskType {\n    SVProgressHUDMaskType existingMaskType = [self sharedView].defaultMaskType;\n    [self setDefaultMaskType:maskType];\n    [self showInfoWithStatus:status];\n    [self setDefaultMaskType:existingMaskType];\n}\n\n+ (void)showSuccessWithStatus:(NSString*)status {\n    [self showImage:[self sharedView].successImage status:status];\n\n#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n    dispatch_async(dispatch_get_main_queue(), ^{\n        [[self sharedView].hapticGenerator notificationOccurred:UINotificationFeedbackTypeSuccess];\n    });\n#endif\n}\n\n+ (void)showSuccessWithStatus:(NSString*)status maskType:(SVProgressHUDMaskType)maskType {\n    SVProgressHUDMaskType existingMaskType = [self sharedView].defaultMaskType;\n    [self setDefaultMaskType:maskType];\n    [self showSuccessWithStatus:status];\n    [self setDefaultMaskType:existingMaskType];\n    \n#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n    dispatch_async(dispatch_get_main_queue(), ^{\n        [[self sharedView].hapticGenerator notificationOccurred:UINotificationFeedbackTypeSuccess];\n    });\n#endif\n}\n\n+ (void)showErrorWithStatus:(NSString*)status {\n    [self showImage:[self sharedView].errorImage status:status];\n    \n#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n    dispatch_async(dispatch_get_main_queue(), ^{\n        [[self sharedView].hapticGenerator notificationOccurred:UINotificationFeedbackTypeError];\n    });\n#endif\n}\n\n+ (void)showErrorWithStatus:(NSString*)status maskType:(SVProgressHUDMaskType)maskType {\n    SVProgressHUDMaskType existingMaskType = [self sharedView].defaultMaskType;\n    [self setDefaultMaskType:maskType];\n    [self showErrorWithStatus:status];\n    [self setDefaultMaskType:existingMaskType];\n    \n#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n    dispatch_async(dispatch_get_main_queue(), ^{\n        [[self sharedView].hapticGenerator notificationOccurred:UINotificationFeedbackTypeError];\n    });\n#endif\n}\n\n+ (void)showImage:(UIImage*)image status:(NSString*)status {\n    NSTimeInterval displayInterval = [self displayDurationForString:status];\n    [[self sharedView] showImage:image status:status duration:displayInterval];\n}\n\n+ (void)showImage:(UIImage*)image status:(NSString*)status maskType:(SVProgressHUDMaskType)maskType {\n    SVProgressHUDMaskType existingMaskType = [self sharedView].defaultMaskType;\n    [self setDefaultMaskType:maskType];\n    [self showImage:image status:status];\n    [self setDefaultMaskType:existingMaskType];\n}\n\n\n#pragma mark - Dismiss Methods\n\n+ (void)popActivity {\n    if([self sharedView].activityCount > 0) {\n        [self sharedView].activityCount--;\n    }\n    if([self sharedView].activityCount == 0) {\n        [[self sharedView] dismiss];\n    }\n}\n\n+ (void)dismiss {\n    [self dismissWithDelay:0.0 completion:nil];\n}\n\n+ (void)dismissWithCompletion:(SVProgressHUDDismissCompletion)completion {\n    [self dismissWithDelay:0.0 completion:completion];\n}\n\n+ (void)dismissWithDelay:(NSTimeInterval)delay {\n    [self dismissWithDelay:delay completion:nil];\n}\n\n+ (void)dismissWithDelay:(NSTimeInterval)delay completion:(SVProgressHUDDismissCompletion)completion {\n    [[self sharedView] dismissWithDelay:delay completion:completion];\n}\n\n\n#pragma mark - Offset\n\n+ (void)setOffsetFromCenter:(UIOffset)offset {\n    [self sharedView].offsetFromCenter = offset;\n}\n\n+ (void)resetOffsetFromCenter {\n    [self setOffsetFromCenter:UIOffsetZero];\n}\n\n\n#pragma mark - Instance Methods\n\n- (instancetype)initWithFrame:(CGRect)frame {\n    if((self = [super initWithFrame:frame])) {\n        _isInitializing = YES;\n        \n        self.userInteractionEnabled = NO;\n        self.activityCount = 0;\n        \n        self.backgroundView.alpha = 0.0f;\n        self.imageView.alpha = 0.0f;\n        self.statusLabel.alpha = 0.0f;\n        self.indefiniteAnimatedView.alpha = 0.0f;\n        self.ringView.alpha = self.backgroundRingView.alpha = 0.0f;\n        \n\n        _backgroundColor = [UIColor whiteColor];\n        _foregroundColor = [UIColor blackColor];\n        _backgroundLayerColor = [UIColor colorWithWhite:0 alpha:0.4];\n        \n        // Set default values\n        _defaultMaskType = SVProgressHUDMaskTypeNone;\n        _defaultStyle = SVProgressHUDStyleLight;\n        _defaultAnimationType = SVProgressHUDAnimationTypeFlat;\n        _minimumSize = CGSizeZero;\n        _font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];\n        \n        NSBundle *bundle = [NSBundle bundleForClass:[SVProgressHUD class]];\n        NSURL *url = [bundle URLForResource:@\"SVProgressHUD\" withExtension:@\"bundle\"];\n        NSBundle *imageBundle = [NSBundle bundleWithURL:url];\n        \n        UIImage* infoImage = [UIImage imageWithContentsOfFile:[imageBundle pathForResource:@\"info\" ofType:@\"png\"]];\n        UIImage* successImage = [UIImage imageWithContentsOfFile:[imageBundle pathForResource:@\"success\" ofType:@\"png\"]];\n        UIImage* errorImage = [UIImage imageWithContentsOfFile:[imageBundle pathForResource:@\"error\" ofType:@\"png\"]];\n\n        _infoImage = [infoImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];\n        _successImage = [successImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];\n        _errorImage = [errorImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];\n\n        _ringThickness = 2.0f;\n        _ringRadius = 18.0f;\n        _ringNoTextRadius = 24.0f;\n        \n        _cornerRadius = 14.0f;\n\t\t\n        _imageViewSize = CGSizeMake(28.0f, 28.0f);\n        \n        _graceTimeInterval = 0.0f;\n        _minimumDismissTimeInterval = 5.0;\n        _maximumDismissTimeInterval = CGFLOAT_MAX;\n\n        _fadeInAnimationDuration = SVProgressHUDDefaultAnimationDuration;\n        _fadeOutAnimationDuration = SVProgressHUDDefaultAnimationDuration;\n        \n        _maxSupportedWindowLevel = UIWindowLevelNormal;\n        \n        _hapticsEnabled = NO;\n        \n        // Accessibility support\n        self.accessibilityIdentifier = @\"SVProgressHUD\";\n        self.isAccessibilityElement = YES;\n        \n        _isInitializing = NO;\n    }\n    return self;\n}\n\n- (void)updateHUDFrame {\n    // Check if an image or progress ring is displayed\n    BOOL imageUsed = (self.imageView.image) && !(self.imageView.hidden);\n    BOOL progressUsed = self.imageView.hidden;\n    \n    // Calculate size of string\n    CGRect labelRect = CGRectZero;\n    CGFloat labelHeight = 0.0f;\n    CGFloat labelWidth = 0.0f;\n    \n    if(self.statusLabel.text) {\n        CGSize constraintSize = CGSizeMake(200.0f, 300.0f);\n        labelRect = [self.statusLabel.text boundingRectWithSize:constraintSize\n                                                        options:(NSStringDrawingOptions)(NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin)\n                                                     attributes:@{NSFontAttributeName: self.statusLabel.font}\n                                                        context:NULL];\n        labelHeight = ceilf(CGRectGetHeight(labelRect));\n        labelWidth = ceilf(CGRectGetWidth(labelRect));\n    }\n    \n    // Calculate hud size based on content\n    // For the beginning use default values, these\n    // might get update if string is too large etc.\n    CGFloat hudWidth;\n    CGFloat hudHeight;\n    \n    CGFloat contentWidth = 0.0f;\n    CGFloat contentHeight = 0.0f;\n    \n    if(imageUsed || progressUsed) {\n        contentWidth = CGRectGetWidth(imageUsed ? self.imageView.frame : self.indefiniteAnimatedView.frame);\n        contentHeight = CGRectGetHeight(imageUsed ? self.imageView.frame : self.indefiniteAnimatedView.frame);\n    }\n    \n    // |-spacing-content-spacing-|\n    hudWidth = SVProgressHUDHorizontalSpacing + MAX(labelWidth, contentWidth) + SVProgressHUDHorizontalSpacing;\n    \n    // |-spacing-content-(labelSpacing-label-)spacing-|\n    hudHeight = SVProgressHUDVerticalSpacing + labelHeight + contentHeight + SVProgressHUDVerticalSpacing;\n    if(self.statusLabel.text && (imageUsed || progressUsed)){\n        // Add spacing if both content and label are used\n        hudHeight += SVProgressHUDLabelSpacing;\n    }\n    \n    // Update values on subviews\n    self.hudView.bounds = CGRectMake(0.0f, 0.0f, MAX(self.minimumSize.width, hudWidth), MAX(self.minimumSize.height, hudHeight));\n    \n    // Animate value update\n    [CATransaction begin];\n    [CATransaction setDisableActions:YES];\n    \n    // Spinner and image view\n    CGFloat centerY;\n    if(self.statusLabel.text) {\n        CGFloat yOffset = MAX(SVProgressHUDVerticalSpacing, (self.minimumSize.height - contentHeight - SVProgressHUDLabelSpacing - labelHeight) / 2.0f);\n        centerY = yOffset + contentHeight / 2.0f;\n    } else {\n        centerY = CGRectGetMidY(self.hudView.bounds);\n    }\n    self.indefiniteAnimatedView.center = CGPointMake(CGRectGetMidX(self.hudView.bounds), centerY);\n    if(self.progress != SVProgressHUDUndefinedProgress) {\n        self.backgroundRingView.center = self.ringView.center = CGPointMake(CGRectGetMidX(self.hudView.bounds), centerY);\n    }\n    self.imageView.center = CGPointMake(CGRectGetMidX(self.hudView.bounds), centerY);\n\n    // Label\n    if(imageUsed || progressUsed) {\n        centerY = CGRectGetMaxY(imageUsed ? self.imageView.frame : self.indefiniteAnimatedView.frame) + SVProgressHUDLabelSpacing + labelHeight / 2.0f;\n    } else {\n        centerY = CGRectGetMidY(self.hudView.bounds);\n    }\n    self.statusLabel.frame = labelRect;\n    self.statusLabel.center = CGPointMake(CGRectGetMidX(self.hudView.bounds), centerY);\n    \n    [CATransaction commit];\n}\n\n#if TARGET_OS_IOS\n- (void)updateMotionEffectForOrientation:(UIInterfaceOrientation)orientation {\n    UIInterpolatingMotionEffectType xMotionEffectType = UIInterfaceOrientationIsPortrait(orientation) ? UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis : UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis;\n    UIInterpolatingMotionEffectType yMotionEffectType = UIInterfaceOrientationIsPortrait(orientation) ? UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis : UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis;\n    [self updateMotionEffectForXMotionEffectType:xMotionEffectType yMotionEffectType:yMotionEffectType];\n}\n#endif\n\n- (void)updateMotionEffectForXMotionEffectType:(UIInterpolatingMotionEffectType)xMotionEffectType yMotionEffectType:(UIInterpolatingMotionEffectType)yMotionEffectType {\n    UIInterpolatingMotionEffect *effectX = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@\"center.x\" type:xMotionEffectType];\n    effectX.minimumRelativeValue = @(-SVProgressHUDParallaxDepthPoints);\n    effectX.maximumRelativeValue = @(SVProgressHUDParallaxDepthPoints);\n    \n    UIInterpolatingMotionEffect *effectY = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@\"center.y\" type:yMotionEffectType];\n    effectY.minimumRelativeValue = @(-SVProgressHUDParallaxDepthPoints);\n    effectY.maximumRelativeValue = @(SVProgressHUDParallaxDepthPoints);\n    \n    UIMotionEffectGroup *effectGroup = [UIMotionEffectGroup new];\n    effectGroup.motionEffects = @[effectX, effectY];\n    \n    // Clear old motion effect, then add new motion effects\n    self.hudView.motionEffects = @[];\n    [self.hudView addMotionEffect:effectGroup];\n}\n\n- (void)updateViewHierarchy {\n    // Add the overlay to the application window if necessary\n    if(!self.controlView.superview) {\n        if(self.containerView){\n            [self.containerView addSubview:self.controlView];\n        } else {\n#if !defined(SV_APP_EXTENSIONS)\n            [self.frontWindow addSubview:self.controlView];\n#else\n            // If SVProgressHUD is used inside an app extension add it to the given view\n            if(self.viewForExtension) {\n                [self.viewForExtension addSubview:self.controlView];\n            }\n#endif\n        }\n    } else {\n        // The HUD is already on screen, but maybe not in front. Therefore\n        // ensure that overlay will be on top of rootViewController (which may\n        // be changed during runtime).\n        [self.controlView.superview bringSubviewToFront:self.controlView];\n    }\n    \n    // Add self to the overlay view\n    if(!self.superview) {\n        [self.controlView addSubview:self];\n    }\n}\n\n- (void)setStatus:(NSString*)status {\n    self.statusLabel.text = status;\n    [self updateHUDFrame];\n}\n\n- (void)setGraceTimer:(NSTimer*)timer {\n    if(_graceTimer) {\n        [_graceTimer invalidate];\n        _graceTimer = nil;\n    }\n    if(timer) {\n        _graceTimer = timer;\n    }\n}\n\n- (void)setFadeOutTimer:(NSTimer*)timer {\n    if(_fadeOutTimer) {\n        [_fadeOutTimer invalidate];\n        _fadeOutTimer = nil;\n    }\n    if(timer) {\n        _fadeOutTimer = timer;\n    }\n}\n\n\n#pragma mark - Notifications and their handling\n\n- (void)registerNotifications {\n#if TARGET_OS_IOS\n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(positionHUD:)\n                                                 name:UIApplicationDidChangeStatusBarOrientationNotification\n                                               object:nil];\n    \n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(positionHUD:)\n                                                 name:UIKeyboardWillHideNotification\n                                               object:nil];\n    \n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(positionHUD:)\n                                                 name:UIKeyboardDidHideNotification\n                                               object:nil];\n    \n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(positionHUD:)\n                                                 name:UIKeyboardWillShowNotification\n                                               object:nil];\n    \n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(positionHUD:)\n                                                 name:UIKeyboardDidShowNotification\n                                               object:nil];\n#endif\n    [[NSNotificationCenter defaultCenter] addObserver:self\n                                             selector:@selector(positionHUD:)\n                                                 name:UIApplicationDidBecomeActiveNotification\n                                               object:nil];\n}\n\n- (NSDictionary*)notificationUserInfo {\n    return (self.statusLabel.text ? @{SVProgressHUDStatusUserInfoKey : self.statusLabel.text} : nil);\n}\n\n- (void)positionHUD:(NSNotification*)notification {\n    CGFloat keyboardHeight = 0.0f;\n    double animationDuration = 0.0;\n\n#if !defined(SV_APP_EXTENSIONS) && TARGET_OS_IOS\n    self.frame = [[[UIApplication sharedApplication] delegate] window].bounds;\n    UIInterfaceOrientation orientation = UIApplication.sharedApplication.statusBarOrientation;\n#elif !defined(SV_APP_EXTENSIONS) && !TARGET_OS_IOS\n    self.frame= [UIApplication sharedApplication].keyWindow.bounds;\n#else\n    if (self.viewForExtension) {\n        self.frame = self.viewForExtension.frame;\n    } else {\n        self.frame = UIScreen.mainScreen.bounds;\n    }\n#if TARGET_OS_IOS\n    UIInterfaceOrientation orientation = CGRectGetWidth(self.frame) > CGRectGetHeight(self.frame) ? UIInterfaceOrientationLandscapeLeft : UIInterfaceOrientationPortrait;\n#endif\n#endif\n    \n    // No transforms applied to window in iOS 8, but only if compiled with iOS 8 SDK as base SDK, otherwise system supports old rotation logic.\n    BOOL ignoreOrientation = NO;\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n    if([[NSProcessInfo processInfo] respondsToSelector:@selector(operatingSystemVersion)]) {\n        ignoreOrientation = YES;\n    }\n#endif\n    \n#if TARGET_OS_IOS\n    // Get keyboardHeight in regard to current state\n    if(notification) {\n        NSDictionary* keyboardInfo = [notification userInfo];\n        CGRect keyboardFrame = [keyboardInfo[UIKeyboardFrameBeginUserInfoKey] CGRectValue];\n        animationDuration = [keyboardInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];\n        \n        if(notification.name == UIKeyboardWillShowNotification || notification.name == UIKeyboardDidShowNotification) {\n            keyboardHeight = CGRectGetWidth(keyboardFrame);\n            \n            if(ignoreOrientation || UIInterfaceOrientationIsPortrait(orientation)) {\n                keyboardHeight = CGRectGetHeight(keyboardFrame);\n            }\n        }\n    } else {\n        keyboardHeight = self.visibleKeyboardHeight;\n    }\n#endif\n    \n    // Get the currently active frame of the display (depends on orientation)\n    CGRect orientationFrame = self.bounds;\n\n#if !defined(SV_APP_EXTENSIONS) && TARGET_OS_IOS\n    CGRect statusBarFrame = UIApplication.sharedApplication.statusBarFrame;\n#else\n    CGRect statusBarFrame = CGRectZero;\n#endif\n    \n#if TARGET_OS_IOS\n    if(!ignoreOrientation && UIInterfaceOrientationIsLandscape(orientation)) {\n        float temp = CGRectGetWidth(orientationFrame);\n        orientationFrame.size.width = CGRectGetHeight(orientationFrame);\n        orientationFrame.size.height = temp;\n        \n        temp = CGRectGetWidth(statusBarFrame);\n        statusBarFrame.size.width = CGRectGetHeight(statusBarFrame);\n        statusBarFrame.size.height = temp;\n    }\n    \n    // Update the motion effects in regard to orientation\n    [self updateMotionEffectForOrientation:orientation];\n#else\n    [self updateMotionEffectForXMotionEffectType:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis yMotionEffectType:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];\n#endif\n    \n    // Calculate available height for display\n    CGFloat activeHeight = CGRectGetHeight(orientationFrame);\n    if(keyboardHeight > 0) {\n        activeHeight += CGRectGetHeight(statusBarFrame) * 2;\n    }\n    activeHeight -= keyboardHeight;\n    \n    CGFloat posX = CGRectGetMidX(orientationFrame);\n    CGFloat posY = floorf(activeHeight*0.45f);\n\n    CGFloat rotateAngle = 0.0;\n    CGPoint newCenter = CGPointMake(posX, posY);\n    \n    if(notification) {\n        // Animate update if notification was present\n        [UIView animateWithDuration:animationDuration\n                              delay:0\n                            options:(UIViewAnimationOptions) (UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState)\n                         animations:^{\n                             [self moveToPoint:newCenter rotateAngle:rotateAngle];\n                             [self.hudView setNeedsDisplay];\n                         } completion:nil];\n    } else {\n        [self moveToPoint:newCenter rotateAngle:rotateAngle];\n    }\n}\n\n- (void)moveToPoint:(CGPoint)newCenter rotateAngle:(CGFloat)angle {\n    self.hudView.transform = CGAffineTransformMakeRotation(angle);\n    if (self.containerView) {\n        self.hudView.center = CGPointMake(self.containerView.center.x + self.offsetFromCenter.horizontal, self.containerView.center.y + self.offsetFromCenter.vertical);\n    } else {\n        self.hudView.center = CGPointMake(newCenter.x + self.offsetFromCenter.horizontal, newCenter.y + self.offsetFromCenter.vertical);\n    }\n}\n\n\n#pragma mark - Event handling\n\n- (void)controlViewDidReceiveTouchEvent:(id)sender forEvent:(UIEvent*)event {\n    [[NSNotificationCenter defaultCenter] postNotificationName:SVProgressHUDDidReceiveTouchEventNotification\n                                                        object:self\n                                                      userInfo:[self notificationUserInfo]];\n    \n    UITouch *touch = event.allTouches.anyObject;\n    CGPoint touchLocation = [touch locationInView:self];\n    \n    if(CGRectContainsPoint(self.hudView.frame, touchLocation)) {\n        [[NSNotificationCenter defaultCenter] postNotificationName:SVProgressHUDDidTouchDownInsideNotification\n                                                            object:self\n                                                          userInfo:[self notificationUserInfo]];\n    }\n}\n\n\n#pragma mark - Master show/dismiss methods\n\n- (void)showProgress:(float)progress status:(NSString*)status {\n    __weak SVProgressHUD *weakSelf = self;\n    [[NSOperationQueue mainQueue] addOperationWithBlock:^{\n        __strong SVProgressHUD *strongSelf = weakSelf;\n        if(strongSelf){\n            if(strongSelf.fadeOutTimer) {\n                strongSelf.activityCount = 0;\n            }\n            \n            // Stop timer\n            strongSelf.fadeOutTimer = nil;\n            strongSelf.graceTimer = nil;\n            \n            // Update / Check view hierarchy to ensure the HUD is visible\n            [strongSelf updateViewHierarchy];\n            \n            // Reset imageView and fadeout timer if an image is currently displayed\n            strongSelf.imageView.hidden = YES;\n            strongSelf.imageView.image = nil;\n            \n            // Update text and set progress to the given value\n            strongSelf.statusLabel.hidden = status.length == 0;\n            strongSelf.statusLabel.text = status;\n            strongSelf.progress = progress;\n            \n            // Choose the \"right\" indicator depending on the progress\n            if(progress >= 0) {\n                // Cancel the indefiniteAnimatedView, then show the ringLayer\n                [strongSelf cancelIndefiniteAnimatedViewAnimation];\n                \n                // Add ring to HUD\n                if(!strongSelf.ringView.superview){\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n                    [strongSelf.hudView.contentView addSubview:strongSelf.ringView];\n#else\n                    [strongSelf.hudView addSubview:strongSelf.ringView];\n#endif\n                }\n                if(!strongSelf.backgroundRingView.superview){\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n                    [strongSelf.hudView.contentView addSubview:strongSelf.backgroundRingView];\n#else\n                    [strongSelf.hudView addSubview:strongSelf.backgroundRingView];\n#endif\n                }\n                \n                // Set progress animated\n                [CATransaction begin];\n                [CATransaction setDisableActions:YES];\n                strongSelf.ringView.strokeEnd = progress;\n                [CATransaction commit];\n                \n                // Update the activity count\n                if(progress == 0) {\n                    strongSelf.activityCount++;\n                }\n            } else {\n                // Cancel the ringLayer animation, then show the indefiniteAnimatedView\n                [strongSelf cancelRingLayerAnimation];\n                \n                // Add indefiniteAnimatedView to HUD\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n                [strongSelf.hudView.contentView addSubview:strongSelf.indefiniteAnimatedView];\n#else\n                [strongSelf.hudView addSubview:strongSelf.indefiniteAnimatedView];\n#endif\n                if([strongSelf.indefiniteAnimatedView respondsToSelector:@selector(startAnimating)]) {\n                    [(id)strongSelf.indefiniteAnimatedView startAnimating];\n                }\n                \n                // Update the activity count\n                strongSelf.activityCount++;\n            }\n            \n            // Fade in delayed if a grace time is set\n            if (self.graceTimeInterval > 0.0 && self.backgroundView.alpha == 0.0f) {\n                strongSelf.graceTimer = [NSTimer timerWithTimeInterval:self.graceTimeInterval target:strongSelf selector:@selector(fadeIn:) userInfo:nil repeats:NO];\n                [[NSRunLoop mainRunLoop] addTimer:strongSelf.graceTimer forMode:NSRunLoopCommonModes];\n            } else {\n                [strongSelf fadeIn:nil];\n            }\n            \n            // Tell the Haptics Generator to prepare for feedback, which may come soon\n#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n            [strongSelf.hapticGenerator prepare];\n#endif\n        }\n    }];\n}\n\n- (void)showImage:(UIImage*)image status:(NSString*)status duration:(NSTimeInterval)duration {\n    __weak SVProgressHUD *weakSelf = self;\n    [[NSOperationQueue mainQueue] addOperationWithBlock:^{\n        __strong SVProgressHUD *strongSelf = weakSelf;\n        if(strongSelf){\n            // Stop timer\n            strongSelf.fadeOutTimer = nil;\n            strongSelf.graceTimer = nil;\n            \n            // Update / Check view hierarchy to ensure the HUD is visible\n            [strongSelf updateViewHierarchy];\n            \n            // Reset progress and cancel any running animation\n            strongSelf.progress = SVProgressHUDUndefinedProgress;\n            [strongSelf cancelRingLayerAnimation];\n            [strongSelf cancelIndefiniteAnimatedViewAnimation];\n            \n            // Update imageView\n            strongSelf.imageView.tintColor = strongSelf.foregroundColorForStyle;\n            strongSelf.imageView.image = image;\n            strongSelf.imageView.hidden = NO;\n            \n            // Update text\n            strongSelf.statusLabel.hidden = status.length == 0;\n            strongSelf.statusLabel.text = status;\n            \n            // Fade in delayed if a grace time is set\n            // An image will be dismissed automatically. Thus pass the duration as userInfo.\n            if (self.graceTimeInterval > 0.0 && self.backgroundView.alpha == 0.0f) {\n                strongSelf.graceTimer = [NSTimer timerWithTimeInterval:self.graceTimeInterval target:strongSelf selector:@selector(fadeIn:) userInfo:@(duration) repeats:NO];\n                [[NSRunLoop mainRunLoop] addTimer:strongSelf.graceTimer forMode:NSRunLoopCommonModes];\n            } else {\n                [strongSelf fadeIn:@(duration)];\n            }\n        }\n    }];\n}\n\n- (void)fadeIn:(id)data {\n    // Update the HUDs frame to the new content and position HUD\n    [self updateHUDFrame];\n    [self positionHUD:nil];\n    \n    // Update accessibility as well as user interaction\n    if(self.defaultMaskType != SVProgressHUDMaskTypeNone) {\n        self.controlView.userInteractionEnabled = YES;\n        self.accessibilityLabel = self.statusLabel.text ?: NSLocalizedString(@\"Loading\", nil);\n        self.isAccessibilityElement = YES;\n    } else {\n        self.controlView.userInteractionEnabled = NO;\n        self.hudView.accessibilityLabel = self.statusLabel.text ?: NSLocalizedString(@\"Loading\", nil);\n        self.hudView.isAccessibilityElement = YES;\n    }\n    \n    // Get duration\n    id duration = [data isKindOfClass:[NSTimer class]] ? ((NSTimer *)data).userInfo : data;\n    \n    // Show if not already visible\n    if(self.backgroundView.alpha != 1.0f) {\n        // Post notification to inform user\n        [[NSNotificationCenter defaultCenter] postNotificationName:SVProgressHUDWillAppearNotification\n                                                            object:self\n                                                          userInfo:[self notificationUserInfo]];\n        \n        // Shrink HUD to to make a nice appear / pop up animation\n        self.hudView.transform = self.hudView.transform = CGAffineTransformScale(self.hudView.transform, 1/1.5f, 1/1.5f);\n        \n        __block void (^animationsBlock)(void) = ^{\n            // Zoom HUD a little to make a nice appear / pop up animation\n            self.hudView.transform = CGAffineTransformIdentity;\n            \n            // Fade in all effects (colors, blur, etc.)\n            [self fadeInEffects];\n        };\n        \n        __block void (^completionBlock)(void) = ^{\n            // Check if we really achieved to show the HUD (<=> alpha)\n            // and the change of these values has not been cancelled in between e.g. due to a dismissal\n            if(self.backgroundView.alpha == 1.0f){\n                // Register observer <=> we now have to handle orientation changes etc.\n                [self registerNotifications];\n                \n                // Post notification to inform user\n                [[NSNotificationCenter defaultCenter] postNotificationName:SVProgressHUDDidAppearNotification\n                                                                    object:self\n                                                                  userInfo:[self notificationUserInfo]];\n                \n                // Update accessibility\n                UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil);\n                UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, self.statusLabel.text);\n                \n                // Dismiss automatically if a duration was passed as userInfo. We start a timer\n                // which then will call dismiss after the predefined duration\n                if(duration){\n                    self.fadeOutTimer = [NSTimer timerWithTimeInterval:[(NSNumber *)duration doubleValue] target:self selector:@selector(dismiss) userInfo:nil repeats:NO];\n                    [[NSRunLoop mainRunLoop] addTimer:self.fadeOutTimer forMode:NSRunLoopCommonModes];\n                }\n            }\n        };\n        \n        // Animate appearance\n        if (self.fadeInAnimationDuration > 0) {\n            // Animate appearance\n            [UIView animateWithDuration:self.fadeInAnimationDuration\n                                  delay:0\n                                options:(UIViewAnimationOptions) (UIViewAnimationOptionAllowUserInteraction | UIViewAnimationCurveEaseIn | UIViewAnimationOptionBeginFromCurrentState)\n                             animations:^{\n                                 animationsBlock();\n                             } completion:^(BOOL finished) {\n                                 completionBlock();\n                             }];\n        } else {\n            animationsBlock();\n            completionBlock();\n        }\n        \n        // Inform iOS to redraw the view hierarchy\n        [self setNeedsDisplay];\n    } else {\n        // Update accessibility\n        UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil);\n        UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, self.statusLabel.text);\n        \n        // Dismiss automatically if a duration was passed as userInfo. We start a timer\n        // which then will call dismiss after the predefined duration\n        if(duration){\n            self.fadeOutTimer = [NSTimer timerWithTimeInterval:[(NSNumber *)duration doubleValue] target:self selector:@selector(dismiss) userInfo:nil repeats:NO];\n            [[NSRunLoop mainRunLoop] addTimer:self.fadeOutTimer forMode:NSRunLoopCommonModes];\n        }\n    }\n}\n\n- (void)dismiss {\n    [self dismissWithDelay:0.0 completion:nil];\n}\n\n- (void)dismissWithDelay:(NSTimeInterval)delay completion:(SVProgressHUDDismissCompletion)completion {\n    __weak SVProgressHUD *weakSelf = self;\n    [[NSOperationQueue mainQueue] addOperationWithBlock:^{\n        __strong SVProgressHUD *strongSelf = weakSelf;\n        if(strongSelf){\n            // Stop timer\n            strongSelf.graceTimer = nil;\n            \n            // Post notification to inform user\n            [[NSNotificationCenter defaultCenter] postNotificationName:SVProgressHUDWillDisappearNotification\n                                                                object:nil\n                                                              userInfo:[strongSelf notificationUserInfo]];\n            \n            // Reset activity count\n            strongSelf.activityCount = 0;\n            \n            __block void (^animationsBlock)(void) = ^{\n                // Shrink HUD a little to make a nice disappear animation\n                strongSelf.hudView.transform = CGAffineTransformScale(strongSelf.hudView.transform, 1/1.3f, 1/1.3f);\n                \n                // Fade out all effects (colors, blur, etc.)\n                [strongSelf fadeOutEffects];\n            };\n            \n            __block void (^completionBlock)(void) = ^{\n                // Check if we really achieved to dismiss the HUD (<=> alpha values are applied)\n                // and the change of these values has not been cancelled in between e.g. due to a new show\n                if(self.backgroundView.alpha == 0.0f){\n                    // Clean up view hierarchy (overlays)\n                    [strongSelf.controlView removeFromSuperview];\n                    [strongSelf.backgroundView removeFromSuperview];\n                    [strongSelf.hudView removeFromSuperview];\n                    [strongSelf removeFromSuperview];\n                    \n                    // Reset progress and cancel any running animation\n                    strongSelf.progress = SVProgressHUDUndefinedProgress;\n                    [strongSelf cancelRingLayerAnimation];\n                    [strongSelf cancelIndefiniteAnimatedViewAnimation];\n                    \n                    // Remove observer <=> we do not have to handle orientation changes etc.\n                    [[NSNotificationCenter defaultCenter] removeObserver:strongSelf];\n                    \n                    // Post notification to inform user\n                    [[NSNotificationCenter defaultCenter] postNotificationName:SVProgressHUDDidDisappearNotification\n                                                                        object:strongSelf\n                                                                      userInfo:[strongSelf notificationUserInfo]];\n                    \n                    // Tell the rootViewController to update the StatusBar appearance\n#if !defined(SV_APP_EXTENSIONS) && TARGET_OS_IOS\n                    UIViewController *rootController = [[UIApplication sharedApplication] keyWindow].rootViewController;\n                    [rootController setNeedsStatusBarAppearanceUpdate];\n#endif\n                    \n                    // Run an (optional) completionHandler\n                    if (completion) {\n                        completion();\n                    }\n                }\n            };\n            \n            // UIViewAnimationOptionBeginFromCurrentState AND a delay doesn't always work as expected\n            // When UIViewAnimationOptionBeginFromCurrentState is set, animateWithDuration: evaluates the current\n            // values to check if an animation is necessary. The evaluation happens at function call time and not\n            // after the delay => the animation is sometimes skipped. Therefore we delay using dispatch_after.\n            \n            dispatch_time_t dipatchTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC));\n            dispatch_after(dipatchTime, dispatch_get_main_queue(), ^{\n                if (strongSelf.fadeOutAnimationDuration > 0) {\n                    // Animate appearance\n                    [UIView animateWithDuration:strongSelf.fadeOutAnimationDuration\n                                          delay:0\n                                        options:(UIViewAnimationOptions) (UIViewAnimationOptionAllowUserInteraction | UIViewAnimationCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState)\n                                     animations:^{\n                                         animationsBlock();\n                                     } completion:^(BOOL finished) {\n                                         completionBlock();\n                                     }];\n                } else {\n                    animationsBlock();\n                    completionBlock();\n                }\n            });\n            \n            // Inform iOS to redraw the view hierarchy\n            [strongSelf setNeedsDisplay];\n        }\n    }];\n}\n\n\n#pragma mark - Ring progress animation\n\n- (UIView*)indefiniteAnimatedView {\n    // Get the correct spinner for defaultAnimationType\n    if(self.defaultAnimationType == SVProgressHUDAnimationTypeFlat){\n        // Check if spinner exists and is an object of different class\n        if(_indefiniteAnimatedView && ![_indefiniteAnimatedView isKindOfClass:[SVIndefiniteAnimatedView class]]){\n            [_indefiniteAnimatedView removeFromSuperview];\n            _indefiniteAnimatedView = nil;\n        }\n        \n        if(!_indefiniteAnimatedView){\n            _indefiniteAnimatedView = [[SVIndefiniteAnimatedView alloc] initWithFrame:CGRectZero];\n        }\n        \n        // Update styling\n        SVIndefiniteAnimatedView *indefiniteAnimatedView = (SVIndefiniteAnimatedView*)_indefiniteAnimatedView;\n        indefiniteAnimatedView.strokeColor = self.foregroundColorForStyle;\n        indefiniteAnimatedView.strokeThickness = self.ringThickness;\n        indefiniteAnimatedView.radius = self.statusLabel.text ? self.ringRadius : self.ringNoTextRadius;\n    } else {\n        // Check if spinner exists and is an object of different class\n        if(_indefiniteAnimatedView && ![_indefiniteAnimatedView isKindOfClass:[UIActivityIndicatorView class]]){\n            [_indefiniteAnimatedView removeFromSuperview];\n            _indefiniteAnimatedView = nil;\n        }\n        \n        if(!_indefiniteAnimatedView){\n            _indefiniteAnimatedView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];\n        }\n        \n        // Update styling\n        UIActivityIndicatorView *activityIndicatorView = (UIActivityIndicatorView*)_indefiniteAnimatedView;\n        activityIndicatorView.color = self.foregroundColorForStyle;\n    }\n    [_indefiniteAnimatedView sizeToFit];\n    \n    return _indefiniteAnimatedView;\n}\n\n- (SVProgressAnimatedView*)ringView {\n    if(!_ringView) {\n        _ringView = [[SVProgressAnimatedView alloc] initWithFrame:CGRectZero];\n    }\n    \n    // Update styling\n    _ringView.strokeColor = self.foregroundColorForStyle;\n    _ringView.strokeThickness = self.ringThickness;\n    _ringView.radius = self.statusLabel.text ? self.ringRadius : self.ringNoTextRadius;\n    \n    return _ringView;\n}\n\n- (SVProgressAnimatedView*)backgroundRingView {\n    if(!_backgroundRingView) {\n        _backgroundRingView = [[SVProgressAnimatedView alloc] initWithFrame:CGRectZero];\n        _backgroundRingView.strokeEnd = 1.0f;\n    }\n    \n    // Update styling\n    _backgroundRingView.strokeColor = [self.foregroundColorForStyle colorWithAlphaComponent:0.1f];\n    _backgroundRingView.strokeThickness = self.ringThickness;\n    _backgroundRingView.radius = self.statusLabel.text ? self.ringRadius : self.ringNoTextRadius;\n    \n    return _backgroundRingView;\n}\n\n- (void)cancelRingLayerAnimation {\n    // Animate value update, stop animation\n    [CATransaction begin];\n    [CATransaction setDisableActions:YES];\n    \n    [self.hudView.layer removeAllAnimations];\n    self.ringView.strokeEnd = 0.0f;\n    \n    [CATransaction commit];\n    \n    // Remove from view\n    [self.ringView removeFromSuperview];\n    [self.backgroundRingView removeFromSuperview];\n}\n\n- (void)cancelIndefiniteAnimatedViewAnimation {\n    // Stop animation\n    if([self.indefiniteAnimatedView respondsToSelector:@selector(stopAnimating)]) {\n        [(id)self.indefiniteAnimatedView stopAnimating];\n    }\n    // Remove from view\n    [self.indefiniteAnimatedView removeFromSuperview];\n}\n\n\n#pragma mark - Utilities\n\n+ (BOOL)isVisible {\n    // Checking one alpha value is sufficient as they are all the same\n    return [self sharedView].backgroundView.alpha > 0.0f;\n}\n\n\n#pragma mark - Getters\n\n+ (NSTimeInterval)displayDurationForString:(NSString*)string {\n    CGFloat minimum = MAX((CGFloat)string.length * 0.06 + 0.5, [self sharedView].minimumDismissTimeInterval);\n    return MIN(minimum, [self sharedView].maximumDismissTimeInterval);\n}\n\n- (UIColor*)foregroundColorForStyle {\n    if(self.defaultStyle == SVProgressHUDStyleLight) {\n        return [UIColor blackColor];\n    } else if(self.defaultStyle == SVProgressHUDStyleDark) {\n        return [UIColor whiteColor];\n    } else {\n        return self.foregroundColor;\n    }\n}\n\n- (UIColor*)backgroundColorForStyle {\n    if(self.defaultStyle == SVProgressHUDStyleLight) {\n        return [UIColor whiteColor];\n    } else if(self.defaultStyle == SVProgressHUDStyleDark) {\n        return [UIColor blackColor];\n    } else {\n        return self.backgroundColor;\n    }\n}\n\n- (UIControl*)controlView {\n    if(!_controlView) {\n        _controlView = [UIControl new];\n        _controlView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;\n        _controlView.backgroundColor = [UIColor clearColor];\n        _controlView.userInteractionEnabled = YES;\n        [_controlView addTarget:self action:@selector(controlViewDidReceiveTouchEvent:forEvent:) forControlEvents:UIControlEventTouchDown];\n    }\n    \n    // Update frames\n#if !defined(SV_APP_EXTENSIONS)\n    CGRect windowBounds = [[[UIApplication sharedApplication] delegate] window].bounds;\n    _controlView.frame = windowBounds;\n#else\n    _controlView.frame = [UIScreen mainScreen].bounds;\n#endif\n    \n    return _controlView;\n}\n\n-(UIView *)backgroundView {\n    if(!_backgroundView){\n        _backgroundView = [UIView new];\n        _backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;\n    }\n    if(!_backgroundView.superview){\n        [self insertSubview:_backgroundView belowSubview:self.hudView];\n    }\n    \n    // Update styling\n    if(self.defaultMaskType == SVProgressHUDMaskTypeGradient){\n        if(!_backgroundRadialGradientLayer){\n            _backgroundRadialGradientLayer = [SVRadialGradientLayer layer];\n        }\n        if(!_backgroundRadialGradientLayer.superlayer){\n            [_backgroundView.layer insertSublayer:_backgroundRadialGradientLayer atIndex:0];\n        }\n        _backgroundView.backgroundColor = [UIColor clearColor];\n    } else {\n        if(_backgroundRadialGradientLayer && _backgroundRadialGradientLayer.superlayer){\n            [_backgroundRadialGradientLayer removeFromSuperlayer];\n        }\n        if(self.defaultMaskType == SVProgressHUDMaskTypeBlack){\n            _backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4];\n        } else if(self.defaultMaskType == SVProgressHUDMaskTypeCustom){\n            _backgroundView.backgroundColor = self.backgroundLayerColor;\n        } else {\n            _backgroundView.backgroundColor = [UIColor clearColor];\n        }\n    }\n\n    // Update frame\n    if(_backgroundView){\n        _backgroundView.frame = self.bounds;\n    }\n    if(_backgroundRadialGradientLayer){\n        _backgroundRadialGradientLayer.frame = self.bounds;\n        \n        // Calculate the new center of the gradient, it may change if keyboard is visible\n        CGPoint gradientCenter = self.center;\n        gradientCenter.y = (self.bounds.size.height - self.visibleKeyboardHeight)/2;\n        _backgroundRadialGradientLayer.gradientCenter = gradientCenter;\n        [_backgroundRadialGradientLayer setNeedsDisplay];\n    }\n    \n    return _backgroundView;\n}\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n- (UIVisualEffectView*)hudView {\n#else\n- (UIView*)hudView {\n#endif\n    if(!_hudView) {\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n        _hudView = [UIVisualEffectView new];\n#else\n        _hudView = [UIView new];\n#endif\n        _hudView.layer.masksToBounds = YES;\n        _hudView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin;\n    }\n    if(!_hudView.superview) {\n        [self addSubview:_hudView];\n    }\n    \n    // Update styling\n    _hudView.layer.cornerRadius = self.cornerRadius;\n    \n    return _hudView;\n}\n\n- (UILabel*)statusLabel {\n    if(!_statusLabel) {\n        _statusLabel = [[UILabel alloc] initWithFrame:CGRectZero];\n        _statusLabel.backgroundColor = [UIColor clearColor];\n        _statusLabel.adjustsFontSizeToFitWidth = YES;\n        _statusLabel.textAlignment = NSTextAlignmentCenter;\n        _statusLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters;\n        _statusLabel.numberOfLines = 0;\n    }\n    if(!_statusLabel.superview) {\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n      [self.hudView.contentView addSubview:_statusLabel];\n#else\n      [self.hudView addSubview:_statusLabel];\n#endif\n    }\n    \n    // Update styling\n    _statusLabel.textColor = self.foregroundColorForStyle;\n    _statusLabel.font = self.font;\n\n    return _statusLabel;\n}\n\n- (UIImageView*)imageView {\n    if(_imageView && !CGSizeEqualToSize(_imageView.bounds.size, _imageViewSize)) {\n        [_imageView removeFromSuperview];\n        _imageView = nil;\n    }\n    \n    if(!_imageView) {\n        _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, _imageViewSize.width, _imageViewSize.height)];\n    }\n    if(!_imageView.superview) {\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n        [self.hudView.contentView addSubview:_imageView];\n#else\n        [self.hudView addSubview:_imageView];\n#endif\n    }\n    \n    return _imageView;\n}\n\n\n#pragma mark - Helper\n    \n- (CGFloat)visibleKeyboardHeight {\n#if !defined(SV_APP_EXTENSIONS)\n    UIWindow *keyboardWindow = nil;\n    for (UIWindow *testWindow in UIApplication.sharedApplication.windows) {\n        if(![testWindow.class isEqual:UIWindow.class]) {\n            keyboardWindow = testWindow;\n            break;\n        }\n    }\n    \n    for (__strong UIView *possibleKeyboard in keyboardWindow.subviews) {\n        NSString *viewName = NSStringFromClass(possibleKeyboard.class);\n        if([viewName hasPrefix:@\"UI\"]){\n            if([viewName hasSuffix:@\"PeripheralHostView\"] || [viewName hasSuffix:@\"Keyboard\"]){\n                return CGRectGetHeight(possibleKeyboard.bounds);\n            } else if ([viewName hasSuffix:@\"InputSetContainerView\"]){\n                for (__strong UIView *possibleKeyboardSubview in possibleKeyboard.subviews) {\n                    viewName = NSStringFromClass(possibleKeyboardSubview.class);\n                    if([viewName hasPrefix:@\"UI\"] && [viewName hasSuffix:@\"InputSetHostView\"]) {\n                        return CGRectGetHeight(possibleKeyboardSubview.bounds);\n                    }\n                }\n            }\n        }\n    }\n#endif\n    return 0;\n}\n    \n- (UIWindow *)frontWindow {\n#if !defined(SV_APP_EXTENSIONS)\n    NSEnumerator *frontToBackWindows = [UIApplication.sharedApplication.windows reverseObjectEnumerator];\n    for (UIWindow *window in frontToBackWindows) {\n        BOOL windowOnMainScreen = window.screen == UIScreen.mainScreen;\n        BOOL windowIsVisible = !window.hidden && window.alpha > 0;\n        BOOL windowLevelSupported = (window.windowLevel >= UIWindowLevelNormal && window.windowLevel <= self.maxSupportedWindowLevel);\n        BOOL windowKeyWindow = window.isKeyWindow;\n\t\t\t\n        if(windowOnMainScreen && windowIsVisible && windowLevelSupported && windowKeyWindow) {\n            return window;\n        }\n    }\n#endif\n    return nil;\n}\n    \n- (void)fadeInEffects {\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n    if(self.defaultStyle != SVProgressHUDStyleCustom) {\n        // Add blur effect\n        UIBlurEffectStyle blurEffectStyle = self.defaultStyle == SVProgressHUDStyleDark ? UIBlurEffectStyleDark : UIBlurEffectStyleLight;\n        UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:blurEffectStyle];\n        self.hudView.effect = blurEffect;\n        \n        // We omit UIVibrancy effect and use a suitable background color as an alternative.\n        // This will make everyting more readable. See the following for details:\n        // https://www.omnigroup.com/developer/how-to-make-text-in-a-uivisualeffectview-readable-on-any-background\n        \n        self.hudView.backgroundColor = [self.backgroundColorForStyle colorWithAlphaComponent:0.6f];\n    } else {\n        self.hudView.backgroundColor =  self.backgroundColorForStyle;\n    }\n#else\n    self.hudView.backgroundColor =  self.backgroundColorForStyle;\n#endif\n\n    // Fade in views\n    self.backgroundView.alpha = 1.0f;\n    \n    self.imageView.alpha = 1.0f;\n    self.statusLabel.alpha = 1.0f;\n    self.indefiniteAnimatedView.alpha = 1.0f;\n    self.ringView.alpha = self.backgroundRingView.alpha = 1.0f;\n}\n\n- (void)fadeOutEffects\n{\n#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000\n    if(self.defaultStyle != SVProgressHUDStyleCustom) {\n        // Remove blur effect\n        self.hudView.effect = nil;\n    }\n#endif\n    \n    // Remove background color\n    self.hudView.backgroundColor = [UIColor clearColor];\n    \n    // Fade out views\n    self.backgroundView.alpha = 0.0f;\n    \n    self.imageView.alpha = 0.0f;\n    self.statusLabel.alpha = 0.0f;\n    self.indefiniteAnimatedView.alpha = 0.0f;\n    self.ringView.alpha = self.backgroundRingView.alpha = 0.0f;\n}\n\n#if TARGET_OS_IOS && __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000\n- (UINotificationFeedbackGenerator *)hapticGenerator {\n\t// Only return if haptics are enabled\n\tif(!self.hapticsEnabled) {\n\t\treturn nil;\n\t}\n\t\n\tif(!_hapticGenerator) {\n\t\t_hapticGenerator = [[UINotificationFeedbackGenerator alloc] init];\n\t}\n\treturn _hapticGenerator;\n}\n#endif\n\n    \n#pragma mark - UIAppearance Setters\n\n- (void)setDefaultStyle:(SVProgressHUDStyle)style {\n    if (!_isInitializing) _defaultStyle = style;\n}\n\n- (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType {\n    if (!_isInitializing) _defaultMaskType = maskType;\n}\n\n- (void)setDefaultAnimationType:(SVProgressHUDAnimationType)animationType {\n    if (!_isInitializing) _defaultAnimationType = animationType;\n}\n\n- (void)setContainerView:(UIView *)containerView {\n    if (!_isInitializing) _containerView = containerView;\n}\n\n- (void)setMinimumSize:(CGSize)minimumSize {\n    if (!_isInitializing) _minimumSize = minimumSize;\n}\n\n- (void)setRingThickness:(CGFloat)ringThickness {\n    if (!_isInitializing) _ringThickness = ringThickness;\n}\n\n- (void)setRingRadius:(CGFloat)ringRadius {\n    if (!_isInitializing) _ringRadius = ringRadius;\n}\n\n- (void)setRingNoTextRadius:(CGFloat)ringNoTextRadius {\n    if (!_isInitializing) _ringNoTextRadius = ringNoTextRadius;\n}\n\n- (void)setCornerRadius:(CGFloat)cornerRadius {\n    if (!_isInitializing) _cornerRadius = cornerRadius;\n}\n\n- (void)setFont:(UIFont*)font {\n    if (!_isInitializing) _font = font;\n}\n\n- (void)setForegroundColor:(UIColor*)color {\n    if (!_isInitializing) _foregroundColor = color;\n}\n\n- (void)setBackgroundColor:(UIColor*)color {\n    if (!_isInitializing) _backgroundColor = color;\n}\n\n- (void)setBackgroundLayerColor:(UIColor*)color {\n    if (!_isInitializing) _backgroundLayerColor = color;\n}\n\n- (void)setInfoImage:(UIImage*)image {\n    if (!_isInitializing) _infoImage = image;\n}\n\n- (void)setSuccessImage:(UIImage*)image {\n    if (!_isInitializing) _successImage = image;\n}\n\n- (void)setErrorImage:(UIImage*)image {\n    if (!_isInitializing) _errorImage = image;\n}\n\n- (void)setViewForExtension:(UIView*)view {\n    if (!_isInitializing) _viewForExtension = view;\n}\n\n- (void)setOffsetFromCenter:(UIOffset)offset {\n    if (!_isInitializing) _offsetFromCenter = offset;\n}\n\n- (void)setMinimumDismissTimeInterval:(NSTimeInterval)minimumDismissTimeInterval {\n    if (!_isInitializing) _minimumDismissTimeInterval = minimumDismissTimeInterval;\n}\n\n- (void)setFadeInAnimationDuration:(NSTimeInterval)duration {\n    if (!_isInitializing) _fadeInAnimationDuration = duration;\n}\n\n- (void)setFadeOutAnimationDuration:(NSTimeInterval)duration {\n    if (!_isInitializing) _fadeOutAnimationDuration = duration;\n}\n\n- (void)setMaxSupportedWindowLevel:(UIWindowLevel)maxSupportedWindowLevel {\n    if (!_isInitializing) _maxSupportedWindowLevel = maxSupportedWindowLevel;\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.h",
    "content": "//\n//  SVRadialGradientLayer.h\n//  SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n//  Copyright (c) 2014-2017 Tobias Tiemerding. All rights reserved.\n//\n\n#import <QuartzCore/QuartzCore.h>\n\n@interface SVRadialGradientLayer : CALayer\n\n@property (nonatomic) CGPoint gradientCenter;\n\n@end\n"
  },
  {
    "path": "Example/Pods/SVProgressHUD/SVProgressHUD/SVRadialGradientLayer.m",
    "content": "//\n//  SVRadialGradientLayer.m\n//  SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD\n//\n//  Copyright (c) 2014-2017 Tobias Tiemerding. All rights reserved.\n//\n\n#import \"SVRadialGradientLayer.h\"\n\n@implementation SVRadialGradientLayer\n\n- (void)drawInContext:(CGContextRef)context {\n    size_t locationsCount = 2;\n    CGFloat locations[2] = {0.0f, 1.0f};\n    CGFloat colors[8] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.75f};\n    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();\n    CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, locations, locationsCount);\n    CGColorSpaceRelease(colorSpace);\n\n    float radius = MIN(self.bounds.size.width , self.bounds.size.height);\n    CGContextDrawRadialGradient (context, gradient, self.gradientCenter, 0, self.gradientCenter, radius, kCGGradientDrawsAfterEndLocation);\n    CGGradientRelease(gradient);\n}\n\n@end\n"
  },
  {
    "path": "Example/Pods/Target Support Files/HUPhotoBrowser/HUPhotoBrowser-dummy.m",
    "content": "#import <Foundation/Foundation.h>\n@interface PodsDummy_HUPhotoBrowser : NSObject\n@end\n@implementation PodsDummy_HUPhotoBrowser\n@end\n"
  },
  {
    "path": "Example/Pods/Target Support Files/HUPhotoBrowser/HUPhotoBrowser-prefix.pch",
    "content": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPORT extern \"C\"\n#else\n#define FOUNDATION_EXPORT extern\n#endif\n#endif\n#endif\n\n"
  },
  {
    "path": "Example/Pods/Target Support Files/HUPhotoBrowser/HUPhotoBrowser.xcconfig",
    "content": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/HUPhotoBrowser\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = \"${PODS_ROOT}/Headers/Private\" \"${PODS_ROOT}/Headers/Private/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public\" \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public/SDWebImage\" \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nLIBRARY_SEARCH_PATHS = $(inherited) \"$PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\"\nOTHER_LDFLAGS = -framework \"AssetsLibrary\" -framework \"Photos\" -framework \"UIKit\"\nPODS_BUILD_DIR = $BUILD_DIR\nPODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_ROOT = ${SRCROOT}\nPODS_TARGET_SRCROOT = ${PODS_ROOT}/../..\nPRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\nSKIP_INSTALL = YES\n"
  },
  {
    "path": "Example/Pods/Target Support Files/HUPhotoPicker/HUPhotoPicker-dummy.m",
    "content": "#import <Foundation/Foundation.h>\n@interface PodsDummy_HUPhotoPicker : NSObject\n@end\n@implementation PodsDummy_HUPhotoPicker\n@end\n"
  },
  {
    "path": "Example/Pods/Target Support Files/HUPhotoPicker/HUPhotoPicker-prefix.pch",
    "content": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPORT extern \"C\"\n#else\n#define FOUNDATION_EXPORT extern\n#endif\n#endif\n#endif\n\n"
  },
  {
    "path": "Example/Pods/Target Support Files/HUPhotoPicker/HUPhotoPicker.xcconfig",
    "content": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/HUPhotoPicker\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = \"${PODS_ROOT}/Headers/Private\" \"${PODS_ROOT}/Headers/Private/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public\" \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public/SDWebImage\" \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_LDFLAGS = -framework \"Photos\" -framework \"UIKit\"\nPODS_BUILD_DIR = $BUILD_DIR\nPODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_ROOT = ${SRCROOT}\nPODS_TARGET_SRCROOT = ${PODS_ROOT}/HUPhotoPicker\nPRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\nSKIP_INSTALL = YES\n"
  },
  {
    "path": "Example/Pods/Target Support Files/HUPhotoPicker/ResourceBundle-HUPhotoPicker-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n  <key>CFBundleDevelopmentRegion</key>\n  <string>en</string>\n  <key>CFBundleIdentifier</key>\n  <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>\n  <key>CFBundleInfoDictionaryVersion</key>\n  <string>6.0</string>\n  <key>CFBundleName</key>\n  <string>${PRODUCT_NAME}</string>\n  <key>CFBundlePackageType</key>\n  <string>BNDL</string>\n  <key>CFBundleShortVersionString</key>\n  <string>1.0.3</string>\n  <key>CFBundleSignature</key>\n  <string>????</string>\n  <key>CFBundleVersion</key>\n  <string>1</string>\n  <key>NSPrincipalClass</key>\n  <string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-acknowledgements.markdown",
    "content": "# Acknowledgements\nThis application makes use of the following third party libraries:\n\n## HUPhotoBrowser\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Jewelz Hu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## HUPhotoPicker\n\nMIT License\n\nCopyright (c) 2017 Jewelz Hu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\n## SDWebImage\n\nCopyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com\n \nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n \nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n\n\n## SVProgressHUD\n\nCopyright (c) 2011-2017 Sam Vermette, Tobias Tiemerding and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nA different license may apply to other resources included in this package, including Freepik Icons. Please consult their respective headers for the terms of their individual licenses.\n\nGenerated by CocoaPods - https://cocoapods.org\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-acknowledgements.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>PreferenceSpecifiers</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>This application makes use of the following third party libraries:</string>\n\t\t\t<key>Title</key>\n\t\t\t<string>Acknowledgements</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>The MIT License (MIT)\n\nCopyright (c) 2016 Jewelz Hu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.</string>\n\t\t\t<key>License</key>\n\t\t\t<string>MIT</string>\n\t\t\t<key>Title</key>\n\t\t\t<string>HUPhotoBrowser</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>MIT License\n\nCopyright (c) 2017 Jewelz Hu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n</string>\n\t\t\t<key>License</key>\n\t\t\t<string>MIT</string>\n\t\t\t<key>Title</key>\n\t\t\t<string>HUPhotoPicker</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>Copyright (c) 2009-2017 Olivier Poitrey rs@dailymotion.com\n \nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished\nto do so, subject to the following conditions:\n \nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n</string>\n\t\t\t<key>License</key>\n\t\t\t<string>MIT</string>\n\t\t\t<key>Title</key>\n\t\t\t<string>SDWebImage</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>Copyright (c) 2011-2017 Sam Vermette, Tobias Tiemerding and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nA different license may apply to other resources included in this package, including Freepik Icons. Please consult their respective headers for the terms of their individual licenses.\n</string>\n\t\t\t<key>License</key>\n\t\t\t<string>MIT</string>\n\t\t\t<key>Title</key>\n\t\t\t<string>SVProgressHUD</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>Generated by CocoaPods - https://cocoapods.org</string>\n\t\t\t<key>Title</key>\n\t\t\t<string></string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t</array>\n\t<key>StringsTable</key>\n\t<string>Acknowledgements</string>\n\t<key>Title</key>\n\t<string>Acknowledgements</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-dummy.m",
    "content": "#import <Foundation/Foundation.h>\n@interface PodsDummy_Pods_HUPhotoBrowser_Demo : NSObject\n@end\n@implementation PodsDummy_Pods_HUPhotoBrowser_Demo\n@end\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-frameworks.sh",
    "content": "#!/bin/sh\nset -e\n\necho \"mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\nmkdir -p \"${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n\nSWIFT_STDLIB_PATH=\"${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\"\n\n# This protects against multiple targets copying the same framework dependency at the same time. The solution\n# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html\nRSYNC_PROTECT_TMP_FILES=(--filter \"P .*.??????\")\n\ninstall_framework()\n{\n  if [ -r \"${BUILT_PRODUCTS_DIR}/$1\" ]; then\n    local source=\"${BUILT_PRODUCTS_DIR}/$1\"\n  elif [ -r \"${BUILT_PRODUCTS_DIR}/$(basename \"$1\")\" ]; then\n    local source=\"${BUILT_PRODUCTS_DIR}/$(basename \"$1\")\"\n  elif [ -r \"$1\" ]; then\n    local source=\"$1\"\n  fi\n\n  local destination=\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n\n  if [ -L \"${source}\" ]; then\n      echo \"Symlinked...\"\n      source=\"$(readlink \"${source}\")\"\n  fi\n\n  # Use filter instead of exclude so missing patterns don't throw errors.\n  echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \\\"- CVS/\\\" --filter \\\"- .svn/\\\" --filter \\\"- .git/\\\" --filter \\\"- .hg/\\\" --filter \\\"- Headers\\\" --filter \\\"- PrivateHeaders\\\" --filter \\\"- Modules\\\" \\\"${source}\\\" \\\"${destination}\\\"\"\n  rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"\n\n  local basename\n  basename=\"$(basename -s .framework \"$1\")\"\n  binary=\"${destination}/${basename}.framework/${basename}\"\n  if ! [ -r \"$binary\" ]; then\n    binary=\"${destination}/${basename}\"\n  fi\n\n  # Strip invalid architectures so \"fat\" simulator / device frameworks work on device\n  if [[ \"$(file \"$binary\")\" == *\"dynamically linked shared library\"* ]]; then\n    strip_invalid_archs \"$binary\"\n  fi\n\n  # Resign the code if required by the build settings to avoid unstable apps\n  code_sign_if_enabled \"${destination}/$(basename \"$1\")\"\n\n  # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.\n  if [ \"${XCODE_VERSION_MAJOR}\" -lt 7 ]; then\n    local swift_runtime_libs\n    swift_runtime_libs=$(xcrun otool -LX \"$binary\" | grep --color=never @rpath/libswift | sed -E s/@rpath\\\\/\\(.+dylib\\).*/\\\\1/g | uniq -u  && exit ${PIPESTATUS[0]})\n    for lib in $swift_runtime_libs; do\n      echo \"rsync -auv \\\"${SWIFT_STDLIB_PATH}/${lib}\\\" \\\"${destination}\\\"\"\n      rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"\n      code_sign_if_enabled \"${destination}/${lib}\"\n    done\n  fi\n}\n\n# Copies the dSYM of a vendored framework\ninstall_dsym() {\n  local source=\"$1\"\n  if [ -r \"$source\" ]; then\n    echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \\\"- CVS/\\\" --filter \\\"- .svn/\\\" --filter \\\"- .git/\\\" --filter \\\"- .hg/\\\" --filter \\\"- Headers\\\" --filter \\\"- PrivateHeaders\\\" --filter \\\"- Modules\\\" \\\"${source}\\\" \\\"${DWARF_DSYM_FOLDER_PATH}\\\"\"\n    rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\"\n  fi\n}\n\n# Signs a framework with the provided identity\ncode_sign_if_enabled() {\n  if [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n    # Use the current code_sign_identitiy\n    echo \"Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}\"\n    local code_sign_cmd=\"/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'\"\n\n    if [ \"${COCOAPODS_PARALLEL_CODE_SIGN}\" == \"true\" ]; then\n      code_sign_cmd=\"$code_sign_cmd &\"\n    fi\n    echo \"$code_sign_cmd\"\n    eval \"$code_sign_cmd\"\n  fi\n}\n\n# Strip invalid architectures\nstrip_invalid_archs() {\n  binary=\"$1\"\n  # Get architectures for current file\n  archs=\"$(lipo -info \"$binary\" | rev | cut -d ':' -f1 | rev)\"\n  stripped=\"\"\n  for arch in $archs; do\n    if ! [[ \"${ARCHS}\" == *\"$arch\"* ]]; then\n      # Strip non-valid architectures in-place\n      lipo -remove \"$arch\" -output \"$binary\" \"$binary\" || exit 1\n      stripped=\"$stripped $arch\"\n    fi\n  done\n  if [[ \"$stripped\" ]]; then\n    echo \"Stripped $binary of architectures:$stripped\"\n  fi\n}\n\nif [ \"${COCOAPODS_PARALLEL_CODE_SIGN}\" == \"true\" ]; then\n  wait\nfi\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo-resources.sh",
    "content": "#!/bin/sh\nset -e\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n\nRESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt\n> \"$RESOURCES_TO_COPY\"\n\nXCASSET_FILES=()\n\n# This protects against multiple targets copying the same framework dependency at the same time. The solution\n# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html\nRSYNC_PROTECT_TMP_FILES=(--filter \"P .*.??????\")\n\ncase \"${TARGETED_DEVICE_FAMILY}\" in\n  1,2)\n    TARGET_DEVICE_ARGS=\"--target-device ipad --target-device iphone\"\n    ;;\n  1)\n    TARGET_DEVICE_ARGS=\"--target-device iphone\"\n    ;;\n  2)\n    TARGET_DEVICE_ARGS=\"--target-device ipad\"\n    ;;\n  3)\n    TARGET_DEVICE_ARGS=\"--target-device tv\"\n    ;;\n  4)\n    TARGET_DEVICE_ARGS=\"--target-device watch\"\n    ;;\n  *)\n    TARGET_DEVICE_ARGS=\"--target-device mac\"\n    ;;\nesac\n\ninstall_resource()\n{\n  if [[ \"$1\" = /* ]] ; then\n    RESOURCE_PATH=\"$1\"\n  else\n    RESOURCE_PATH=\"${PODS_ROOT}/$1\"\n  fi\n  if [[ ! -e \"$RESOURCE_PATH\" ]] ; then\n    cat << EOM\nerror: Resource \"$RESOURCE_PATH\" not found. Run 'pod install' to update the copy resources script.\nEOM\n    exit 1\n  fi\n  case $RESOURCE_PATH in\n    *.storyboard)\n      echo \"ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}\" || true\n      ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .storyboard`.storyboardc\" \"$RESOURCE_PATH\" --sdk \"${SDKROOT}\" ${TARGET_DEVICE_ARGS}\n      ;;\n    *.xib)\n      echo \"ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}\" || true\n      ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .xib`.nib\" \"$RESOURCE_PATH\" --sdk \"${SDKROOT}\" ${TARGET_DEVICE_ARGS}\n      ;;\n    *.framework)\n      echo \"mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\" || true\n      mkdir -p \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n      echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\" || true\n      rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n      ;;\n    *.xcdatamodel)\n      echo \"xcrun momc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\"`.mom\\\"\" || true\n      xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodel`.mom\"\n      ;;\n    *.xcdatamodeld)\n      echo \"xcrun momc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodeld`.momd\\\"\" || true\n      xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodeld`.momd\"\n      ;;\n    *.xcmappingmodel)\n      echo \"xcrun mapc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcmappingmodel`.cdm\\\"\" || true\n      xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcmappingmodel`.cdm\"\n      ;;\n    *.xcassets)\n      ABSOLUTE_XCASSET_FILE=\"$RESOURCE_PATH\"\n      XCASSET_FILES+=(\"$ABSOLUTE_XCASSET_FILE\")\n      ;;\n    *)\n      echo \"$RESOURCE_PATH\" || true\n      echo \"$RESOURCE_PATH\" >> \"$RESOURCES_TO_COPY\"\n      ;;\n  esac\n}\nif [[ \"$CONFIGURATION\" == \"Debug\" ]]; then\n  install_resource \"$PODS_CONFIGURATION_BUILD_DIR/HUPhotoPicker/HUPhotoPicker.bundle\"\n  install_resource \"${PODS_ROOT}/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle\"\nfi\nif [[ \"$CONFIGURATION\" == \"Release\" ]]; then\n  install_resource \"$PODS_CONFIGURATION_BUILD_DIR/HUPhotoPicker/HUPhotoPicker.bundle\"\n  install_resource \"${PODS_ROOT}/SVProgressHUD/SVProgressHUD/SVProgressHUD.bundle\"\nfi\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nrsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from=\"$RESOURCES_TO_COPY\" / \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nif [[ \"${ACTION}\" == \"install\" ]] && [[ \"${SKIP_INSTALL}\" == \"NO\" ]]; then\n  mkdir -p \"${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n  rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from=\"$RESOURCES_TO_COPY\" / \"${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nfi\nrm -f \"$RESOURCES_TO_COPY\"\n\nif [[ -n \"${WRAPPER_EXTENSION}\" ]] && [ \"`xcrun --find actool`\" ] && [ -n \"$XCASSET_FILES\" ]\nthen\n  # Find all other xcassets (this unfortunately includes those of path pods and other targets).\n  OTHER_XCASSETS=$(find \"$PWD\" -iname \"*.xcassets\" -type d)\n  while read line; do\n    if [[ $line != \"${PODS_ROOT}*\" ]]; then\n      XCASSET_FILES+=(\"$line\")\n    fi\n  done <<<\"$OTHER_XCASSETS\"\n\n  printf \"%s\\0\" \"${XCASSET_FILES[@]}\" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform \"${PLATFORM_NAME}\" --minimum-deployment-target \"${!DEPLOYMENT_TARGET_SETTING_NAME}\" ${TARGET_DEVICE_ARGS} --compress-pngs --compile \"${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nfi\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo.debug.xcconfig",
    "content": "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_ROOT}/Headers/Public\" \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public/SDWebImage\" \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nLIBRARY_SEARCH_PATHS = $(inherited) \"$PODS_CONFIGURATION_BUILD_DIR/HUPhotoBrowser\" \"$PODS_CONFIGURATION_BUILD_DIR/HUPhotoPicker\" \"$PODS_CONFIGURATION_BUILD_DIR/SDWebImage\" \"$PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\"\nOTHER_CFLAGS = $(inherited) -isystem \"${PODS_ROOT}/Headers/Public\" -isystem \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" -isystem \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" -isystem \"${PODS_ROOT}/Headers/Public/SDWebImage\" -isystem \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_LDFLAGS = $(inherited) -ObjC -l\"HUPhotoBrowser\" -l\"HUPhotoPicker\" -l\"SDWebImage\" -l\"SVProgressHUD\" -framework \"AssetsLibrary\" -framework \"ImageIO\" -framework \"Photos\" -framework \"QuartzCore\" -framework \"UIKit\"\nPODS_BUILD_DIR = $BUILD_DIR\nPODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_PODFILE_DIR_PATH = ${SRCROOT}/.\nPODS_ROOT = ${SRCROOT}/Pods\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser Demo/Pods-HUPhotoBrowser Demo.release.xcconfig",
    "content": "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_ROOT}/Headers/Public\" \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public/SDWebImage\" \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nLIBRARY_SEARCH_PATHS = $(inherited) \"$PODS_CONFIGURATION_BUILD_DIR/HUPhotoBrowser\" \"$PODS_CONFIGURATION_BUILD_DIR/HUPhotoPicker\" \"$PODS_CONFIGURATION_BUILD_DIR/SDWebImage\" \"$PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\"\nOTHER_CFLAGS = $(inherited) -isystem \"${PODS_ROOT}/Headers/Public\" -isystem \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" -isystem \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" -isystem \"${PODS_ROOT}/Headers/Public/SDWebImage\" -isystem \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_LDFLAGS = $(inherited) -ObjC -l\"HUPhotoBrowser\" -l\"HUPhotoPicker\" -l\"SDWebImage\" -l\"SVProgressHUD\" -framework \"AssetsLibrary\" -framework \"ImageIO\" -framework \"Photos\" -framework \"QuartzCore\" -framework \"UIKit\"\nPODS_BUILD_DIR = $BUILD_DIR\nPODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_PODFILE_DIR_PATH = ${SRCROOT}/.\nPODS_ROOT = ${SRCROOT}/Pods\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-acknowledgements.markdown",
    "content": "# Acknowledgements\nThis application makes use of the following third party libraries:\nGenerated by CocoaPods - https://cocoapods.org\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-acknowledgements.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>PreferenceSpecifiers</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>This application makes use of the following third party libraries:</string>\n\t\t\t<key>Title</key>\n\t\t\t<string>Acknowledgements</string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>FooterText</key>\n\t\t\t<string>Generated by CocoaPods - https://cocoapods.org</string>\n\t\t\t<key>Title</key>\n\t\t\t<string></string>\n\t\t\t<key>Type</key>\n\t\t\t<string>PSGroupSpecifier</string>\n\t\t</dict>\n\t</array>\n\t<key>StringsTable</key>\n\t<string>Acknowledgements</string>\n\t<key>Title</key>\n\t<string>Acknowledgements</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-dummy.m",
    "content": "#import <Foundation/Foundation.h>\n@interface PodsDummy_Pods_HUPhotoBrowser_DemoTests : NSObject\n@end\n@implementation PodsDummy_Pods_HUPhotoBrowser_DemoTests\n@end\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-frameworks.sh",
    "content": "#!/bin/sh\nset -e\n\necho \"mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\nmkdir -p \"${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n\nSWIFT_STDLIB_PATH=\"${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}\"\n\n# This protects against multiple targets copying the same framework dependency at the same time. The solution\n# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html\nRSYNC_PROTECT_TMP_FILES=(--filter \"P .*.??????\")\n\ninstall_framework()\n{\n  if [ -r \"${BUILT_PRODUCTS_DIR}/$1\" ]; then\n    local source=\"${BUILT_PRODUCTS_DIR}/$1\"\n  elif [ -r \"${BUILT_PRODUCTS_DIR}/$(basename \"$1\")\" ]; then\n    local source=\"${BUILT_PRODUCTS_DIR}/$(basename \"$1\")\"\n  elif [ -r \"$1\" ]; then\n    local source=\"$1\"\n  fi\n\n  local destination=\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n\n  if [ -L \"${source}\" ]; then\n      echo \"Symlinked...\"\n      source=\"$(readlink \"${source}\")\"\n  fi\n\n  # Use filter instead of exclude so missing patterns don't throw errors.\n  echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \\\"- CVS/\\\" --filter \\\"- .svn/\\\" --filter \\\"- .git/\\\" --filter \\\"- .hg/\\\" --filter \\\"- Headers\\\" --filter \\\"- PrivateHeaders\\\" --filter \\\"- Modules\\\" \\\"${source}\\\" \\\"${destination}\\\"\"\n  rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"\n\n  local basename\n  basename=\"$(basename -s .framework \"$1\")\"\n  binary=\"${destination}/${basename}.framework/${basename}\"\n  if ! [ -r \"$binary\" ]; then\n    binary=\"${destination}/${basename}\"\n  fi\n\n  # Strip invalid architectures so \"fat\" simulator / device frameworks work on device\n  if [[ \"$(file \"$binary\")\" == *\"dynamically linked shared library\"* ]]; then\n    strip_invalid_archs \"$binary\"\n  fi\n\n  # Resign the code if required by the build settings to avoid unstable apps\n  code_sign_if_enabled \"${destination}/$(basename \"$1\")\"\n\n  # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.\n  if [ \"${XCODE_VERSION_MAJOR}\" -lt 7 ]; then\n    local swift_runtime_libs\n    swift_runtime_libs=$(xcrun otool -LX \"$binary\" | grep --color=never @rpath/libswift | sed -E s/@rpath\\\\/\\(.+dylib\\).*/\\\\1/g | uniq -u  && exit ${PIPESTATUS[0]})\n    for lib in $swift_runtime_libs; do\n      echo \"rsync -auv \\\"${SWIFT_STDLIB_PATH}/${lib}\\\" \\\"${destination}\\\"\"\n      rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"\n      code_sign_if_enabled \"${destination}/${lib}\"\n    done\n  fi\n}\n\n# Copies the dSYM of a vendored framework\ninstall_dsym() {\n  local source=\"$1\"\n  if [ -r \"$source\" ]; then\n    echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \\\"- CVS/\\\" --filter \\\"- .svn/\\\" --filter \\\"- .git/\\\" --filter \\\"- .hg/\\\" --filter \\\"- Headers\\\" --filter \\\"- PrivateHeaders\\\" --filter \\\"- Modules\\\" \\\"${source}\\\" \\\"${DWARF_DSYM_FOLDER_PATH}\\\"\"\n    rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DWARF_DSYM_FOLDER_PATH}\"\n  fi\n}\n\n# Signs a framework with the provided identity\ncode_sign_if_enabled() {\n  if [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n    # Use the current code_sign_identitiy\n    echo \"Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}\"\n    local code_sign_cmd=\"/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'\"\n\n    if [ \"${COCOAPODS_PARALLEL_CODE_SIGN}\" == \"true\" ]; then\n      code_sign_cmd=\"$code_sign_cmd &\"\n    fi\n    echo \"$code_sign_cmd\"\n    eval \"$code_sign_cmd\"\n  fi\n}\n\n# Strip invalid architectures\nstrip_invalid_archs() {\n  binary=\"$1\"\n  # Get architectures for current file\n  archs=\"$(lipo -info \"$binary\" | rev | cut -d ':' -f1 | rev)\"\n  stripped=\"\"\n  for arch in $archs; do\n    if ! [[ \"${ARCHS}\" == *\"$arch\"* ]]; then\n      # Strip non-valid architectures in-place\n      lipo -remove \"$arch\" -output \"$binary\" \"$binary\" || exit 1\n      stripped=\"$stripped $arch\"\n    fi\n  done\n  if [[ \"$stripped\" ]]; then\n    echo \"Stripped $binary of architectures:$stripped\"\n  fi\n}\n\nif [ \"${COCOAPODS_PARALLEL_CODE_SIGN}\" == \"true\" ]; then\n  wait\nfi\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests-resources.sh",
    "content": "#!/bin/sh\nset -e\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n\nRESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt\n> \"$RESOURCES_TO_COPY\"\n\nXCASSET_FILES=()\n\n# This protects against multiple targets copying the same framework dependency at the same time. The solution\n# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html\nRSYNC_PROTECT_TMP_FILES=(--filter \"P .*.??????\")\n\ncase \"${TARGETED_DEVICE_FAMILY}\" in\n  1,2)\n    TARGET_DEVICE_ARGS=\"--target-device ipad --target-device iphone\"\n    ;;\n  1)\n    TARGET_DEVICE_ARGS=\"--target-device iphone\"\n    ;;\n  2)\n    TARGET_DEVICE_ARGS=\"--target-device ipad\"\n    ;;\n  3)\n    TARGET_DEVICE_ARGS=\"--target-device tv\"\n    ;;\n  4)\n    TARGET_DEVICE_ARGS=\"--target-device watch\"\n    ;;\n  *)\n    TARGET_DEVICE_ARGS=\"--target-device mac\"\n    ;;\nesac\n\ninstall_resource()\n{\n  if [[ \"$1\" = /* ]] ; then\n    RESOURCE_PATH=\"$1\"\n  else\n    RESOURCE_PATH=\"${PODS_ROOT}/$1\"\n  fi\n  if [[ ! -e \"$RESOURCE_PATH\" ]] ; then\n    cat << EOM\nerror: Resource \"$RESOURCE_PATH\" not found. Run 'pod install' to update the copy resources script.\nEOM\n    exit 1\n  fi\n  case $RESOURCE_PATH in\n    *.storyboard)\n      echo \"ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}\" || true\n      ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .storyboard`.storyboardc\" \"$RESOURCE_PATH\" --sdk \"${SDKROOT}\" ${TARGET_DEVICE_ARGS}\n      ;;\n    *.xib)\n      echo \"ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}\" || true\n      ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \\\"$RESOURCE_PATH\\\" .xib`.nib\" \"$RESOURCE_PATH\" --sdk \"${SDKROOT}\" ${TARGET_DEVICE_ARGS}\n      ;;\n    *.framework)\n      echo \"mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\" || true\n      mkdir -p \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n      echo \"rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\" || true\n      rsync --delete -av \"${RSYNC_PROTECT_TMP_FILES[@]}\" \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n      ;;\n    *.xcdatamodel)\n      echo \"xcrun momc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\"`.mom\\\"\" || true\n      xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodel`.mom\"\n      ;;\n    *.xcdatamodeld)\n      echo \"xcrun momc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodeld`.momd\\\"\" || true\n      xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcdatamodeld`.momd\"\n      ;;\n    *.xcmappingmodel)\n      echo \"xcrun mapc \\\"$RESOURCE_PATH\\\" \\\"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcmappingmodel`.cdm\\\"\" || true\n      xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xcmappingmodel`.cdm\"\n      ;;\n    *.xcassets)\n      ABSOLUTE_XCASSET_FILE=\"$RESOURCE_PATH\"\n      XCASSET_FILES+=(\"$ABSOLUTE_XCASSET_FILE\")\n      ;;\n    *)\n      echo \"$RESOURCE_PATH\" || true\n      echo \"$RESOURCE_PATH\" >> \"$RESOURCES_TO_COPY\"\n      ;;\n  esac\n}\n\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nrsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from=\"$RESOURCES_TO_COPY\" / \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nif [[ \"${ACTION}\" == \"install\" ]] && [[ \"${SKIP_INSTALL}\" == \"NO\" ]]; then\n  mkdir -p \"${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\n  rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from=\"$RESOURCES_TO_COPY\" / \"${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nfi\nrm -f \"$RESOURCES_TO_COPY\"\n\nif [[ -n \"${WRAPPER_EXTENSION}\" ]] && [ \"`xcrun --find actool`\" ] && [ -n \"$XCASSET_FILES\" ]\nthen\n  # Find all other xcassets (this unfortunately includes those of path pods and other targets).\n  OTHER_XCASSETS=$(find \"$PWD\" -iname \"*.xcassets\" -type d)\n  while read line; do\n    if [[ $line != \"${PODS_ROOT}*\" ]]; then\n      XCASSET_FILES+=(\"$line\")\n    fi\n  done <<<\"$OTHER_XCASSETS\"\n\n  printf \"%s\\0\" \"${XCASSET_FILES[@]}\" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform \"${PLATFORM_NAME}\" --minimum-deployment-target \"${!DEPLOYMENT_TARGET_SETTING_NAME}\" ${TARGET_DEVICE_ARGS} --compress-pngs --compile \"${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\nfi\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests.debug.xcconfig",
    "content": "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_ROOT}/Headers/Public\" \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public/SDWebImage\" \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_CFLAGS = $(inherited) -isystem \"${PODS_ROOT}/Headers/Public\" -isystem \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" -isystem \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" -isystem \"${PODS_ROOT}/Headers/Public/SDWebImage\" -isystem \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_LDFLAGS = $(inherited) -ObjC\nPODS_BUILD_DIR = $BUILD_DIR\nPODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_PODFILE_DIR_PATH = ${SRCROOT}/.\nPODS_ROOT = ${SRCROOT}/Pods\n"
  },
  {
    "path": "Example/Pods/Target Support Files/Pods-HUPhotoBrowser DemoTests/Pods-HUPhotoBrowser DemoTests.release.xcconfig",
    "content": "GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = $(inherited) \"${PODS_ROOT}/Headers/Public\" \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public/SDWebImage\" \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_CFLAGS = $(inherited) -isystem \"${PODS_ROOT}/Headers/Public\" -isystem \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" -isystem \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" -isystem \"${PODS_ROOT}/Headers/Public/SDWebImage\" -isystem \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_LDFLAGS = $(inherited) -ObjC\nPODS_BUILD_DIR = $BUILD_DIR\nPODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_PODFILE_DIR_PATH = ${SRCROOT}/.\nPODS_ROOT = ${SRCROOT}/Pods\n"
  },
  {
    "path": "Example/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m",
    "content": "#import <Foundation/Foundation.h>\n@interface PodsDummy_SDWebImage : NSObject\n@end\n@implementation PodsDummy_SDWebImage\n@end\n"
  },
  {
    "path": "Example/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch",
    "content": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPORT extern \"C\"\n#else\n#define FOUNDATION_EXPORT extern\n#endif\n#endif\n#endif\n\n"
  },
  {
    "path": "Example/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig",
    "content": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SDWebImage\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = \"${PODS_ROOT}/Headers/Private\" \"${PODS_ROOT}/Headers/Private/SDWebImage\" \"${PODS_ROOT}/Headers/Public\" \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public/SDWebImage\" \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_LDFLAGS = -framework \"ImageIO\"\nPODS_BUILD_DIR = $BUILD_DIR\nPODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_ROOT = ${SRCROOT}\nPODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage\nPRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\nSKIP_INSTALL = YES\n"
  },
  {
    "path": "Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-dummy.m",
    "content": "#import <Foundation/Foundation.h>\n@interface PodsDummy_SVProgressHUD : NSObject\n@end\n@implementation PodsDummy_SVProgressHUD\n@end\n"
  },
  {
    "path": "Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD-prefix.pch",
    "content": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#else\n#ifndef FOUNDATION_EXPORT\n#if defined(__cplusplus)\n#define FOUNDATION_EXPORT extern \"C\"\n#else\n#define FOUNDATION_EXPORT extern\n#endif\n#endif\n#endif\n\n"
  },
  {
    "path": "Example/Pods/Target Support Files/SVProgressHUD/SVProgressHUD.xcconfig",
    "content": "CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\nGCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1\nHEADER_SEARCH_PATHS = \"${PODS_ROOT}/Headers/Private\" \"${PODS_ROOT}/Headers/Private/SVProgressHUD\" \"${PODS_ROOT}/Headers/Public\" \"${PODS_ROOT}/Headers/Public/HUPhotoBrowser\" \"${PODS_ROOT}/Headers/Public/HUPhotoPicker\" \"${PODS_ROOT}/Headers/Public/SDWebImage\" \"${PODS_ROOT}/Headers/Public/SVProgressHUD\"\nOTHER_LDFLAGS = -framework \"QuartzCore\"\nPODS_BUILD_DIR = $BUILD_DIR\nPODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\nPODS_ROOT = ${SRCROOT}\nPODS_TARGET_SRCROOT = ${PODS_ROOT}/SVProgressHUD\nPRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}\nSKIP_INSTALL = YES\n"
  },
  {
    "path": "HUPhotoBrowser/HUPhotoBrowser.h",
    "content": "\n//\n//  HUPhotoBrowser.h\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/24.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\ntypedef void(^ __nullable DismissBlock)(UIImage * __nullable image, NSInteger index);\n\n@interface HUPhotoBrowser : UIView\n\n@property (nonatomic, strong, readonly) UIButton *saveButton;\n\n/*\n * 是否隐藏工具栏，默认不隐藏\n */\n@property (nonatomic) BOOL didHideToolBar;\n\n/*\n * @param imageView    点击的imageView\n * @param URLStrings   加载的网络图片的urlString\n * @param index        点击的图片在所有要展示图片中的位置\n */\n\n+ (nonnull instancetype)showFromImageView:(nullable UIImageView *)imageView withURLStrings:(nullable NSArray *)URLStrings atIndex:(NSInteger)index;\n\n/*\n * @param imageView    点击的imageView\n * @param withImages   加载的本地图片\n * @param index        点击的图片在所有要展示图片中的位置\n */\n\n+ (nonnull instancetype)showFromImageView:(nullable UIImageView *)imageView withImages:(nullable NSArray *)images atIndex:(NSInteger)index;\n\n/*\n * @param imageView    点击的imageView\n * @param URLStrings   加载的网络图片的urlString\n * @param image        占位图片\n * @param index        点击的图片在所有要展示图片中的位置\n * @param dismiss      photoBrowser消失的回调\n */\n+ (nonnull instancetype)showFromImageView:(nullable UIImageView *)imageView withURLStrings:(nullable NSArray *)URLStrings placeholderImage:(nullable UIImage *)image atIndex:(NSInteger)index dismiss:(DismissBlock)block;\n\n/*\n * @param imageView    点击的imageView\n * @param withImages   加载的本地图片\n * @param image        占位图片\n * @param index        点击的图片在所有要展示图片中的位置\n * @param dismiss      photoBrowser消失的回调\n */\n+ (nonnull instancetype)showFromImageView:(nullable UIImageView *)imageView withImages:(nullable NSArray *)images atIndex:(NSInteger)index dismiss:(DismissBlock)block;\n\n@property (nonatomic, strong, nullable) UIImage *placeholderImage;\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUPhotoBrowser.m",
    "content": "//\n//  HUPhotoBrowser.m\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/24.\n//  Copyright (c) 2016年 jinhuadiqigan. All rights reserved.\n//\n\n#import \"HUPhotoBrowser.h\"\n#import \"HUPhotoBrowserCell.h\"\n#import \"hu_const.h\"\n#import \"HUWebImage.h\"\n#import <SVProgressHUD/SVProgressHUD.h>\n\n@interface HUPhotoBrowser () <UICollectionViewDataSource, UICollectionViewDelegate,UICollectionViewDelegateFlowLayout> {\n    CGRect _endTempFrame;\n    NSInteger _currentPage;\n    NSIndexPath *_zoomingIndexPath;\n    BOOL _imageDidLoaded;\n    BOOL _animationCompleted;\n}\n\n@property (nonatomic, strong) UIImageView *imageView;\n@property (nonatomic, strong) UIImageView *tmpImageView;\n@property (nonatomic, strong) UICollectionView *collectionView;\n@property (nonatomic, strong) UIView *toolBar;\n@property (nonatomic, weak) UILabel *countLab;\n@property (nonatomic, strong) NSArray *URLStrings;\n@property (nonatomic) NSInteger index;\n@property (nonatomic) NSInteger imagesCount;\n@property (nonatomic, copy) DismissBlock dismissDlock;\n@property (nonatomic, strong) NSArray *images;\n\n@end\n\n@implementation HUPhotoBrowser\n\n- (void)dealloc {\n    self.collectionView.delegate = nil; \n    [[NSNotificationCenter defaultCenter] removeObserver:self];\n}\n\n+ (instancetype)showFromImageView:(UIImageView *)imageView withURLStrings:(NSArray *)URLStrings placeholderImage:(UIImage *)image atIndex:(NSInteger)index dismiss:(DismissBlock)block {\n    HUPhotoBrowser *browser = [[HUPhotoBrowser alloc] initWithFrame:kScreenRect];\n    browser.imageView = imageView;\n    browser.URLStrings = URLStrings;\n    browser.imagesCount = URLStrings.count;\n    [browser resetCountLabWithIndex:index+1];\n    [browser configureBrowser];\n    [browser animateImageViewAtIndex:index];\n    browser.placeholderImage = image;\n    browser.dismissDlock = block;\n    \n    return browser;\n}\n\n\n+ (instancetype)showFromImageView:(UIImageView *)imageView withImages:(NSArray *)images atIndex:(NSInteger)index dismiss:(DismissBlock)block {\n    HUPhotoBrowser *browser = [[HUPhotoBrowser alloc] initWithFrame:kScreenRect];\n    browser.imageView = imageView;\n    browser.images = images;\n    browser.imagesCount = images.count;\n    [browser resetCountLabWithIndex:index+1];\n    [browser configureBrowser];\n    [browser animateImageViewAtIndex:index];\n    browser.dismissDlock = block;\n    \n    return browser;\n}\n\n+ (instancetype)showFromImageView:(UIImageView *)imageView withURLStrings:(NSArray *)URLStrings atIndex:(NSInteger)index {\n\n    return [self showFromImageView:imageView withURLStrings:URLStrings placeholderImage:nil atIndex:index dismiss:nil];\n}\n\n+ (instancetype)showFromImageView:(UIImageView *)imageView withImages:(NSArray *)images atIndex:(NSInteger)index {\n    return [self showFromImageView:imageView withImages:images atIndex:index dismiss:nil];\n}\n\n- (instancetype)initWithFrame:(CGRect)frame {\n    self = [super initWithFrame:frame];\n    if (self) {\n        self.backgroundColor = [UIColor blackColor];\n        \n        [self addSubview:self.collectionView];\n        \n        [self setupToolBar];\n        \n        [[NSNotificationCenter defaultCenter] removeObserver:self];\n        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadForScreenRotate) name:UIDeviceOrientationDidChangeNotification object:nil];\n         [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(photoCellDidZooming:) name:kPhotoCellDidZommingNotification object:nil];\n        \n    }\n    return self;\n}\n\n\n#pragma mark - UICollectionViewDataSource\n\n- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {\n    NSInteger count = 0;\n    if (self.URLStrings) {\n        count = _URLStrings.count;\n    }else if (self.images) {\n        count = _images.count;\n    }\n    return count;\n}\n\n- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {\n    HUPhotoBrowserCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kPhotoBrowserCellID forIndexPath:indexPath];\n    cell.indexPath = indexPath;\n    [cell resetZoomingScale];\n    __weak __typeof(self) wself = self;\n    cell.tapActionBlock = ^(UITapGestureRecognizer *sender) {\n        [wself dismiss];\n    };\n    if (self.URLStrings) {\n        [cell startAnimating];\n        __weak __typeof(cell) weakCell = cell;\n        NSURL *url = [NSURL URLWithString:self.URLStrings[indexPath.row]];\n        if (indexPath.row != _index) {\n            if (_placeholderImage) {\n                [cell stopAnimating];\n                [cell.imageView hu_setImageWithURL:url placeholderImage:_placeholderImage completed:^(UIImage * _Nullable image, NSError * _Nullable error, NSURL * _Nullable imageUrl) {\n                    __strong __typeof(weakCell) strongCell = weakCell;\n                    [strongCell resizeImageView];\n                }];\n            } else {\n                [cell.imageView hu_setImageWithURL:url placeholderImage:nil completed:^(UIImage * _Nullable image, NSError * _Nullable error, NSURL * _Nullable imageUrl) {\n                    if (image) {\n                        __strong __typeof(weakCell) strongCell = weakCell;\n                        [strongCell resizeImageView];\n                        [strongCell stopAnimating];\n                    }\n                }];\n            }\n        } else {\n            UIImage *placeHolder = _tmpImageView.image;\n            [cell.imageView hu_setImageWithURL:url placeholderImage:placeHolder completed:^(UIImage *image, NSError *error, NSURL *imageUrl) {\n                __strong __typeof(wself) strongSelf = wself;\n                __strong __typeof(weakCell) strongCell = weakCell;\n                [strongCell stopAnimating];\n                [strongCell resizeImageView];\n                if (!strongSelf->_imageDidLoaded) {\n                     strongSelf->_imageDidLoaded = YES;\n                    if (strongSelf->_animationCompleted) {\n                        strongSelf.collectionView.hidden = NO;\n                        [strongSelf->_tmpImageView removeFromSuperview];\n                        strongSelf->_animationCompleted = NO;\n                    }\n                   \n                }\n            }];\n        }\n    }\n    else if (self.images) {\n        [cell stopAnimating];\n        cell.imageView.image = self.images[indexPath.row];\n        [cell resizeImageView];\n    }\n\n    return cell;\n}\n\n- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {\n    return kScreenRect.size;\n}\n\n- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {\n    _currentPage = scrollView.contentOffset.x/kScreenWidth + 0.5;\n    _countLab.text = [NSString stringWithFormat:@\"%zd/%zd\",_currentPage+1,_imagesCount];\n    \n    if (_zoomingIndexPath) {\n       [self.collectionView reloadItemsAtIndexPaths:@[_zoomingIndexPath]];\n        _zoomingIndexPath = nil;\n    }\n    \n}\n\n#pragma mark - notification handler\n\n- (void)reloadForScreenRotate {\n     _collectionView.frame = kScreenRect;\n   \n    [self.collectionView reloadData];\n    self.collectionView.contentOffset = CGPointMake(kScreenWidth * _currentPage,0);\n}\n\n- (void)photoCellDidZooming:(NSNotification *)nofit {\n    NSIndexPath *indexPath = nofit.object;\n    _zoomingIndexPath = indexPath;\n}\n\n#pragma mark - getter & setter\n\n- (void)setDidHideToolBar:(BOOL)didHideToolBar {\n    _didHideToolBar = didHideToolBar;\n    _toolBar.hidden = didHideToolBar;\n}\n\n- (UICollectionView *)collectionView {\n    if (!_collectionView) {\n        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];\n        layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;\n        layout.minimumInteritemSpacing = 0;\n        layout.minimumLineSpacing = 0;\n        \n        _collectionView = [[UICollectionView alloc]initWithFrame:self.bounds collectionViewLayout:layout];\n        _collectionView.hidden = YES;\n        _collectionView.pagingEnabled = YES;\n        _collectionView.showsHorizontalScrollIndicator = NO;\n        \n    }\n    return _collectionView;\n}\n\n#pragma mark - private \n\n- (void)configureBrowser {\n    \n    self.collectionView.delegate = self;\n    self.collectionView.dataSource = self;\n    [self.collectionView registerClass:[HUPhotoBrowserCell class] forCellWithReuseIdentifier:kPhotoBrowserCellID];\n    \n    [[UIApplication sharedApplication].keyWindow addSubview:self];\n}\n\n- (void)setupToolBar {\n    _toolBar = [[UIView alloc] initWithFrame:CGRectMake(0, self.frame.size.height-38, self.frame.size.width, 30)];\n    _toolBar.backgroundColor = [UIColor clearColor];\n    [self addSubview:_toolBar];\n    \n    UILabel *countLab = [[UILabel alloc] init];\n    countLab.textColor = [UIColor whiteColor];\n    countLab.layer.cornerRadius = 2;\n    countLab.layer.masksToBounds = YES;\n    countLab.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.4];\n    countLab.font = [UIFont systemFontOfSize:13];\n    countLab.textAlignment = NSTextAlignmentCenter;\n    [_toolBar addSubview:countLab];\n    _countLab = countLab;\n    \n    UIButton *saveBtn = [UIButton buttonWithType:UIButtonTypeCustom];\n    saveBtn.frame = CGRectMake(_toolBar.frame.size.width-58, 1, 50, 28);\n    saveBtn.layer.cornerRadius = 2;\n    [saveBtn setBackgroundColor:[[UIColor blackColor]colorWithAlphaComponent:0.4]];\n    [saveBtn setTitle:@\"保存\" forState:UIControlStateNormal];\n    [saveBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];\n    saveBtn.titleLabel.font = [UIFont systemFontOfSize:13];\n    [saveBtn addTarget:self action:@selector(saveImae) forControlEvents:UIControlEventTouchUpInside];\n    [_toolBar addSubview:saveBtn];\n    _saveButton = saveBtn;\n    \n}\n\n- (void)animateImageViewAtIndex:(NSInteger)index {\n    _index = index;\n    CGRect startFrame = [self.imageView.superview convertRect:self.imageView.frame toView:[UIApplication sharedApplication].keyWindow];\n    CGRect endFrame = kScreenRect;\n    \n    if (self.imageView.image) {\n        UIImage *image = self.imageView.image;\n        CGFloat ratio = image.size.width / image.size.height;\n        \n        if (ratio > kScreenRatio) {\n            \n            endFrame.size.width = kScreenWidth;\n            endFrame.size.height = kScreenWidth / ratio;\n            \n        } else {\n            endFrame.size.height = kScreenHeight;\n            endFrame.size.width = kScreenHeight * ratio;\n            \n        }\n        endFrame.origin.x = (kScreenWidth - endFrame.size.width) / 2;\n        endFrame.origin.y = (kScreenHeight - endFrame.size.height) / 2;\n        \n    }\n    \n    _endTempFrame = endFrame;\n    \n#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0\n    \n    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];\n#endif\n    \n    UIImageView *tempImageView = [[UIImageView alloc] initWithFrame:startFrame];\n    tempImageView.image = self.imageView.image;\n    tempImageView.contentMode = UIViewContentModeScaleAspectFit;\n    [[UIApplication sharedApplication].keyWindow addSubview:tempImageView];\n    _tmpImageView = tempImageView;\n    \n    if (self.URLStrings && !self.images) {\n        NSString *key = [HUWebImageDownloader cacheKeyForURL:[NSURL URLWithString:self.URLStrings[_index]]];\n        UIImage *image = [HUWebImageDownloader imageFromDiskCacheForKey:key];\n        _imageDidLoaded = image != nil;\n    }\n    [self.collectionView setContentOffset:CGPointMake(kScreenWidth * index,0) animated:NO];\n    \n    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{\n        tempImageView.frame = endFrame;\n        \n    } completion:^(BOOL finished) {\n        _currentPage = index;\n        _animationCompleted = YES;\n        if (self.images || _imageDidLoaded || (self.URLStrings && !_imageDidLoaded)) {\n            self.collectionView.hidden = NO;\n            [tempImageView removeFromSuperview];\n            _animationCompleted = NO;\n        }\n        \n    }];\n    \n    \n}\n\n- (void)dismiss {\n#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_9_0\n    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];\n#endif\n    \n    if (self.dismissDlock) {\n        HUPhotoBrowserCell *cell = (HUPhotoBrowserCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:_currentPage inSection:0]];\n        self.dismissDlock(cell.imageView.image, _currentPage);\n    }\n    \n    if (_currentPage != _index) {\n        [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{\n            self.alpha = 0;\n        } completion:^(BOOL finished) {\n            \n            [self removeFromSuperview];\n        }];\n        return;\n    }\n    \n    CGRect endFrame = [self.imageView.superview convertRect:self.imageView.frame toView:[UIApplication sharedApplication].keyWindow];\n    \n    UIImageView *tempImageView = [[UIImageView alloc] initWithFrame:_endTempFrame];\n    tempImageView.image = self.imageView.image;\n    tempImageView.contentMode = UIViewContentModeScaleAspectFit;\n    self.collectionView.hidden = YES;\n    \n    [[UIApplication sharedApplication].keyWindow addSubview:tempImageView];\n    \n    \n    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{\n        tempImageView.frame = endFrame;\n        self.alpha = 0;\n    } completion:^(BOOL finished) {\n        \n        [self removeFromSuperview];\n        [tempImageView removeFromSuperview];\n        \n    }];\n    \n}\n\n- (void)resetCountLabWithIndex:(NSInteger)index {\n    \n    NSString *text = [NSString stringWithFormat:@\"%zd%zd\",_imagesCount,_imagesCount];\n    CGFloat width = [text sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]}].width+8;\n    _countLab.frame = CGRectMake(8, 1, MAX(50, width), 28);\n    _countLab.text = [NSString stringWithFormat:@\"%zd/%zd\",index,_imagesCount];\n}\n\n- (void)saveImae {\n    HUPhotoBrowserCell *cell = (HUPhotoBrowserCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:_currentPage inSection:0]];\n    UIImage *seavedImage = cell.imageView.image;\n    if (seavedImage) {\n         UIImageWriteToSavedPhotosAlbum(seavedImage, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);\n    }\n   \n}\n\n- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {\n  \n    NSString *msg = nil ;\n    if(error != nil){\n        msg = @\"保存图片失败\";\n        [SVProgressHUD showInfoWithStatus:msg];\n    }\n    else{\n        msg = @\"保存图片成功\";\n        [SVProgressHUD showSuccessWithStatus:msg];\n    }\n    \n}\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUPhotoBrowserCell.h",
    "content": "//\n//  HUPhotoBrowserCell.h\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/24.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n#define kPhotoBrowserCellID @\"HUPhotoBrowserCell\"\nstatic NSString * const kPhotoCellDidZommingNotification = @\"kPhotoCellDidZommingNotification\";\nstatic NSString * const kPhotoCellDidImageLoadedNotification = @\"kPhotoCellDidImageLoadedNotification\";\n\n@interface HUPhotoBrowserCell : UICollectionViewCell\n\n@property (nonatomic, strong, readonly) UIActivityIndicatorView *indicatorView;\n@property (nonatomic, strong, readonly) UIImageView *imageView;\n\n@property (nonatomic, strong) NSIndexPath *indexPath;\n\n- (void)resetZoomingScale;\n\n- (void)resizeImageView;\n\n- (void)startAnimating;\n\n- (void)stopAnimating;\n\n@property (nonatomic, copy) void(^tapActionBlock)(UITapGestureRecognizer *tapGesture);\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUPhotoBrowserCell.m",
    "content": "//\n//  HUPhotoBrowserCell.m\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/24.\n//  Copyright (c) 2016年 jinhuadiqigan. All rights reserved.\n//\n\n#import \"HUPhotoBrowserCell.h\"\n#import \"hu_const.h\"\n#import \"UIImageView+HUWebImage.h\"\n\n@interface HUPhotoBrowserCell () <UIScrollViewDelegate>\n\n@property (nonatomic, strong, readwrite) UIActivityIndicatorView *indicatorView;\n@property (nonatomic, strong, readwrite) UIImageView *imageView;\n@property (nonatomic, strong) UIScrollView *scrollView;\n@property (nonatomic,strong) UITapGestureRecognizer *doubleTap;\n@property (nonatomic,strong) UITapGestureRecognizer *singleTap;\n\n@end\n\n@implementation HUPhotoBrowserCell\n\n- (instancetype)initWithFrame:(CGRect)frame {\n    self = [super initWithFrame:frame];\n    if (self) {\n        self.backgroundColor = [UIColor blackColor];\n        [self setupView];\n        [self addGestureRecognizer:self.singleTap];\n        [self addGestureRecognizer:self.doubleTap];\n    }\n    return self;\n}\n\n- (void)setupView {\n    [self.scrollView addSubview:self.imageView];\n    [self addSubview:self.scrollView];\n    [self addSubview:self.indicatorView];\n}\n\n- (void)resetZoomingScale {\n    \n    if (self.scrollView.zoomScale !=1) {\n         self.scrollView.zoomScale = 1;\n    }\n}\n\n- (void)resizeImageView {\n    CGSize size = self.imageView.image.size;\n    CGFloat scale = size.height / size.width;\n    BOOL flag = scale > kScreenHeight / kScreenWidth;\n    if (size.height > kScreenHeight * 2 && flag) {\n        CGFloat height = kScreenWidth * size.height / size.width;\n        self.imageView.frame = CGRectMake(0, 0, kScreenWidth, height);\n    } else {\n        self.imageView.frame = self.scrollView.bounds;\n    }\n}\n\n- (void)startAnimating {\n    [self.indicatorView startAnimating];\n}\n\n- (void)stopAnimating {\n    [self.indicatorView stopAnimating];\n}\n\n- (void)layoutSubviews {\n    [super layoutSubviews];\n    \n    self.scrollView.frame = self.bounds;\n    self.imageView.frame = self.scrollView.bounds;\n    self.indicatorView.center = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2);\n}\n\n- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {\n    return self.imageView;\n}\n\n#pragma mark UIScrollViewDelegate\n\n- (void)scrollViewDidZoom:(UIScrollView *)scrollView {\n    self.imageView.center = [self centerOfScrollViewContent:scrollView];\n}\n\n- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {\n    [[NSNotificationCenter defaultCenter] postNotificationName:kPhotoCellDidZommingNotification object:_indexPath];\n}\n\n#pragma mark - gesture handler\n\n- (void)doubleTapGestrueHandle:(UITapGestureRecognizer *)sender {\n    CGPoint p = [sender locationInView:self];\n    if (self.scrollView.zoomScale <=1.0) {\n        //CGFloat scaleX = p.x + self.scrollView.contentOffset.x;\n        //CGFloat scaley = p.y + self.scrollView.contentOffset.y;\n        CGRect rect = [self zoomRectForScale:self.scrollView.zoomScale*3 withCenter:p];\n        [self.scrollView zoomToRect:rect animated:YES];\n    }\n    else {\n        [self.scrollView setZoomScale:1.0 animated:YES];\n    }\n}\n\n- (void)singleTapGestrueHandle:(UITapGestureRecognizer *)sender {\n    if (self.tapActionBlock) {\n        self.tapActionBlock(sender);\n    }\n    \n}\n\n#pragma mark - private\n\n- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center {\n    CGRect zoomRect;\n    zoomRect.size.height = self.scrollView.frame.size.height/scale;\n    zoomRect.size.width = self.scrollView.frame.size.width/scale;\n    zoomRect.origin.x = center.x - (zoomRect.size.width/2.0);\n    zoomRect.origin.y = center.y - (zoomRect.size.height/2.0);\n    \n    return zoomRect;\n    \n}\n\n- (CGPoint)centerOfScrollViewContent:(UIScrollView *)scrollView {\n    CGFloat offsetX = (scrollView.bounds.size.width > scrollView.contentSize.width)?\n    (scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5 : 0.0;\n    CGFloat offsetY = (scrollView.bounds.size.height > scrollView.contentSize.height)?\n    (scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5 : 0.0;\n    CGPoint actualCenter = CGPointMake(scrollView.contentSize.width * 0.5 + offsetX,\n                                       scrollView.contentSize.height * 0.5 + offsetY);\n    return actualCenter;\n}\n\n#pragma mark - getter\n\n- (UIScrollView *)scrollView {\n    if (_scrollView == nil) {\n        _scrollView = [[UIScrollView alloc] init];\n        _scrollView.backgroundColor = [UIColor blackColor];\n        _scrollView.showsHorizontalScrollIndicator = NO;\n        _scrollView.showsVerticalScrollIndicator = NO;\n        _scrollView.maximumZoomScale = 4;\n        _scrollView.minimumZoomScale = 0.5;\n        _scrollView.delegate = self;\n    }\n    return _scrollView;\n}\n\n- (UIImageView *)imageView {\n    if (_imageView == nil) {\n        _imageView = [[UIImageView alloc] init];\n        _imageView.contentMode = UIViewContentModeScaleAspectFit;\n    }\n    return _imageView;\n}\n\n- (UIActivityIndicatorView *)indicatorView {\n    if (_indicatorView == nil) {\n        _indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];\n        _indicatorView.hidesWhenStopped = YES;\n    }\n    return _indicatorView;\n}\n\n- (UITapGestureRecognizer *)doubleTap {\n    if (!_doubleTap) {\n        _doubleTap  =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapGestrueHandle:)];\n        _doubleTap.numberOfTapsRequired = 2;\n        _doubleTap.numberOfTouchesRequired = 1;\n    }\n    return _doubleTap;\n}\n\n- (UITapGestureRecognizer *)singleTap {\n    if (!_singleTap) {\n        _singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestrueHandle:)];\n        _singleTap.numberOfTapsRequired = 1;\n        _singleTap.numberOfTouchesRequired = 1;\n        [_singleTap requireGestureRecognizerToFail:self.doubleTap];\n    }\n    return _singleTap;\n}\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImage.h",
    "content": "//\n//  HUWebImage.h\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#ifndef HUPhotoBrowser_HUWebImage_h\n#define HUPhotoBrowser_HUWebImage_h\n\n#import \"UIImageView+HUWebImage.h\"\n#import \"HUWebImageDownloader.h\"\n\n#endif\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloadOperation.h",
    "content": "//\n//  HUWebImageDownloadOperation.h\n//  Pods\n//\n//  Created by mac on 16/4/19.\n//\n//\n\n#import <UIKit/UIKit.h>\n\ntypedef void (^HUWebImageDownloadCompltedBlock) (UIImage * __nullable image, NSData * __nullable data, NSError * __nullable error);\n\n@interface HUWebImageDownloadOperation : NSOperation\n\n- (nonnull instancetype)initWithURL:(nonnull NSURL *)url completed:(nullable HUWebImageDownloadCompltedBlock)completedBlock;\n- (void)resume;\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloadOperation.m",
    "content": "//\n//  HUWebImageDownloadOperation.m\n//  Pods\n//\n//  Created by mac on 16/4/19.\n//\n//\n\n#import \"HUWebImageDownloadOperation.h\"\n#import \"UIImage+HUExtension.h\"\n\n@interface HUWebImageDownloadOperation () {\n    NSLock *_lock;\n}\n\n@property (nonatomic, copy) HUWebImageDownloadCompltedBlock completedBlock;\n@property (nonatomic, strong) NSURL *url;\n@property (nonatomic, strong) NSURLSession *session;\n@property (nonatomic, strong) NSURLSessionDownloadTask *downloadTask;\n@property (nonatomic, assign) BOOL myFinished;\n@property (nonatomic, assign) BOOL myExecuting;\n\n@end\n\n@implementation HUWebImageDownloadOperation\n\n- (instancetype)initWithURL:(NSURL *)url completed:(HUWebImageDownloadCompltedBlock)completedBlock {\n    if (self = [super init]) {\n        _url = url;\n        _completedBlock = completedBlock;\n        _lock = [NSLock new];\n    }\n    return self;\n}\n\n- (void)resume {\n    if (self.isCancelled && !self.isFinished) {\n        [_lock lock];\n        self.myExecuting = YES;\n        [_lock unlock];\n        [_downloadTask resume];\n    }\n}\n\n- (void)start {\n    if (self.isCancelled) {\n        [self reset];\n        return;\n    }\n    [_lock lock];\n    self.myExecuting = YES;\n    [_lock unlock];\n    [self beginTask];\n}\n\n- (BOOL)isConcurrent {\n    return YES;\n}\n\n- (BOOL)isFinished {\n    return _myFinished;\n}\n\n- (BOOL)isExecuting {\n    return _myExecuting;\n}\n\n- (void)setMyExecuting:(BOOL)myExecuting {\n    [self willChangeValueForKey:@\"isExecuting\"];\n    _myExecuting = myExecuting;\n    [self didChangeValueForKey:@\"isExecuting\"];\n}\n\n- (void)setMyFinished:(BOOL)myFinished {\n    [self willChangeValueForKey:@\"isFinished\"];\n    _myFinished = myFinished;\n    [self didChangeValueForKey:@\"isFinished\"];\n}\n\n- (void)beginTask {\n    \n    NSURLRequest *request = [NSURLRequest requestWithURL:_url];\n    __weak __typeof(self) wself = self;\n    \n    self.downloadTask = [self.session downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {\n        __strong __typeof(self) sself = wself;\n        \n        [sself end];\n        \n        if (!sself.completedBlock) {\n            sself.myFinished = YES;\n            return ;\n        }\n        \n        \n        NSString *caches = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory, NSUserDomainMask, YES) lastObject];\n        NSString *file = [caches stringByAppendingPathComponent:response.suggestedFilename];\n        if (location.path) {\n            [NSFileManager.defaultManager moveItemAtPath:location.path toPath:file error:nil];\n        }\n        \n        NSData *data = [NSData dataWithContentsOfFile:file];\n        \n        [NSFileManager.defaultManager removeItemAtPath:file error:nil];\n        \n        if (data == nil || sself.isCancelled) {\n            sself.completedBlock(nil, nil, error);\n            sself.myFinished = YES;\n            return ;\n        }\n        \n        UIImage *image = [UIImage hu_imageFromData:data];\n        [[NSOperationQueue mainQueue] addOperationWithBlock:^{\n            sself.completedBlock(image, data, nil);\n            sself.myFinished = YES;\n        }];\n        \n    }];\n    \n    [_downloadTask resume];\n}\n\n- (void)reset {\n    [self end];\n    self.completedBlock = nil;\n    [[self.session dataTaskWithURL:_url] cancel];\n}\n\n- (void)end {\n    self.myExecuting = NO;\n    self.myFinished = YES;\n}\n\n- (NSURLSession *)session {\n    if (_session == nil) {\n        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];\n        _session = [NSURLSession sessionWithConfiguration:configuration];\n    }\n    return _session;\n}\n\n\n@end\n\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloader.h",
    "content": "//\n//  HUWebImageDownloader.h\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\ntypedef NS_ENUM(NSInteger, HUWebImageOption) {\n    HUWebImageOptionNone,\n    HUWebImageOptionMemoryOnely,\n    HUWebImageOptionMemoryAndDisk,\n};\n\ntypedef void(^HUDownloadCompletionBlock)( UIImage * __nullable image, NSError * __nullable error, NSURL * __nullable imageUrl);\n\n@class HUWebImageDownloadOperation;\n@interface HUWebImageDownloader : NSObject\n\n+ (nonnull instancetype)sharedInstance;\n+ (nonnull NSString *)cacheKeyForURL:(nonnull NSURL *)url;\n+ (nullable UIImage *)imageFromDiskCacheForKey:(nonnull NSString *)key;\n+ (nullable UIImage *)imageFromMemoryCacheForKey:(nonnull NSString *)key;\n+ (nonnull HUWebImageDownloadOperation *)downloadImageWithURL:(nonnull NSURL *)url completed:(nullable HUDownloadCompletionBlock)completeBlock;\n+ (nonnull HUWebImageDownloadOperation *)downloadImageWithURL:(nonnull NSURL *)url option:(HUWebImageOption)option completed:(nullable HUDownloadCompletionBlock)completeBlock;\n\n- (nonnull NSString *)cacheKeyForURL:(nonnull NSURL *)url;\n- (nullable UIImage *)imageFromDiskCacheForKey:(nonnull NSString *)key;\n- (nullable UIImage *)imageFromMemoryCacheForKey:(nonnull NSString *)key;\n- (void)saveImage:(nullable UIImage *)image forKey:(nonnull NSString *)key toDisk:(BOOL)toDisk;\n\n\n- (nonnull HUWebImageDownloadOperation *)downloadImageWithURL:(nonnull NSURL *)url completed:(nullable HUDownloadCompletionBlock)completeBlock;\n\n\n- (nonnull HUWebImageDownloadOperation *)downloadImageWithURL:(nonnull NSURL *)url option:(HUWebImageOption)option completed:(nullable HUDownloadCompletionBlock)completeBlock;\n\n@property (nonatomic) BOOL shouldCacheImagesInMemory;\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/HUWebImageDownloader.m",
    "content": "//\n//  HUWebImageDownloader.m\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import \"HUWebImageDownloader.h\"\n#import <CommonCrypto/CommonDigest.h>\n#import \"HUWebImageDownloadOperation.h\"\n#import \"hu_const.h\"\n\nstatic NSString *const kDefaultDiskCachePath = @\"com.huwebimagedownloader\";\n\n\nFOUNDATION_STATIC_INLINE NSUInteger HUCacheCostForImage(UIImage *image) {\n    return image.size.width * image.size.height *image.scale * image.scale;\n}\n\n@interface HUWebImageDownloader () {\n    int count;\n}\n\n@property (nonatomic, strong) NSCache *webImageCache;\n@property (nonatomic) dispatch_queue_t ioQueue;\n@property (nonatomic, strong) NSOperationQueue *operationQueue;\n@property (nonatomic, strong) NSMutableDictionary *downloadOperations;\n\n@end\n\n@implementation HUWebImageDownloader\n\n+ (nonnull instancetype)sharedInstance {\n    static HUWebImageDownloader *downloader = nil;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        downloader = [self new];\n    });\n    return downloader;\n}\n\n- (instancetype)init {\n    self = [super init];\n    if (self) {\n        _webImageCache = [[NSCache alloc] init];\n        _shouldCacheImagesInMemory = YES;\n        [self createDefaultCachePath];\n        _ioQueue = dispatch_queue_create(\"com.huwebimagedownloader.io\", DISPATCH_QUEUE_SERIAL);\n        _downloadOperations = [NSMutableDictionary dictionary];\n        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(clearMemory) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];\n    }\n    return self;\n}\n\n- (void)dealloc {\n    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil];\n}\n\n+ (nonnull NSString *)cacheKeyForURL:(nonnull NSURL *)url {\n    return [[HUWebImageDownloader sharedInstance] cacheKeyForURL:url];\n}\n\n+ (nullable UIImage *)imageFromDiskCacheForKey:(nonnull NSString *)key {\n    return [[HUWebImageDownloader sharedInstance] imageFromDiskCacheForKey:key];\n}\n\n+ (nullable UIImage *)imageFromMemoryCacheForKey:(nonnull NSString *)key {\n    return [[HUWebImageDownloader sharedInstance] imageFromMemoryCacheForKey:key];\n}\n\n+ (nonnull HUWebImageDownloadOperation *)downloadImageWithURL:(nonnull NSURL *)url completed:(nullable HUDownloadCompletionBlock)completeBlock {\n    return[self downloadImageWithURL:url option:HUWebImageOptionMemoryAndDisk completed:completeBlock];\n}\n\n+ (nonnull HUWebImageDownloadOperation *)downloadImageWithURL:(nonnull NSURL *)url option:(HUWebImageOption)option completed:(nullable HUDownloadCompletionBlock)completeBlock {\n    return[[HUWebImageDownloader sharedInstance] downloadImageWithURL:url option:option completed:completeBlock];\n}\n\n#pragma mark - save image\n\n- (void)saveImage:(nullable UIImage *)image forKey:(nonnull NSString *)key toDisk:(BOOL)toDisk {\n    if (image == nil) {\n        return;\n    }\n    if (toDisk) {\n        NSData *imageData = UIImagePNGRepresentation(image);\n        [self saveImage:imageData toDiskForKey:key];\n    }\n    \n    [self saveImage:image toMemoryForKey:key];\n}\n\n#pragma mark - cache key for url\n\n- (nonnull NSString *)cacheKeyForURL:(nonnull NSURL *)url {\n    return [url absoluteString];\n}\n\n#pragma mark - the image from disk for key\n\n- (nullable UIImage *)imageFromDiskCacheForKey:(nonnull NSString *)key {\n    \n    UIImage *image = [self imageFromMemoryCacheForKey:key]; //first from memory\n    if (image) {\n        //NSLog(@\"image from memory\");\n        return image;\n    }\n    UIImage *diskImage = [self diskImageForKey:key];\n    if (diskImage && self.shouldCacheImagesInMemory) {\n        ///NSLog(@\"image from disk\");\n        NSUInteger cost = HUCacheCostForImage(diskImage);\n        [self.webImageCache setObject:diskImage forKey:key cost:cost];\n    }\n    \n    return diskImage;\n}\n\n#pragma mark - the image from memory for key\n\n- (nullable UIImage *)imageFromMemoryCacheForKey:(nonnull NSString *)key {\n    return [self.webImageCache objectForKey:key];\n}\n\n#pragma mark - download image for url whit option\n\n- (nonnull HUWebImageDownloadOperation *)downloadImageWithURL:(nonnull NSURL *)url option:(HUWebImageOption)option completed:(nullable HUDownloadCompletionBlock)completeBlock {\n    UIImage *image = [self imageFromDiskCacheForKey:[self cacheKeyForURL:url]];\n    if (image) {\n        if (completeBlock) {\n            completeBlock(image, nil, url);\n        }\n        return nil;\n    }\n    HUWebImageDownloadOperation *operation = self.downloadOperations[[self cacheKeyForURL:url]];\n    __weak __typeof(self) wself = self;\n    if (operation == nil) {\n        operation = [[HUWebImageDownloadOperation alloc] initWithURL:url completed:^(UIImage *image, NSData *data, NSError *error) {\n            __strong __typeof(self) sself = wself;\n            \n            if (completeBlock) {\n                dispatch_async_main({\n                    completeBlock(image, nil, url);\n                })\n            }\n            \n            if (image == nil)  return ;\n\n            [sself.downloadOperations removeObjectForKey:[self cacheKeyForURL:url]];\n            \n            if (option == HUWebImageOptionMemoryAndDisk) {\n                [sself saveImage:data toDiskForKey:[sself cacheKeyForURL:url]];\n                [sself saveImage:image toMemoryForKey:[sself cacheKeyForURL:url]];\n            }\n            else if (option == HUWebImageOptionMemoryOnely) {\n                [sself saveImage:image toMemoryForKey:[sself cacheKeyForURL:url]];\n            }\n           \n        }];\n        \n        [self.operationQueue addOperation:operation];\n        [self.downloadOperations setValue:operation forKey:[self cacheKeyForURL:url]];\n    } else if (operation.isCancelled) {\n        [operation resume];\n    }\n    return operation;\n}\n\n#pragma mark - download image for url and store to disk\n\n- (nonnull HUWebImageDownloadOperation *)downloadImageWithURL:(nonnull NSURL *)url completed:(nullable HUDownloadCompletionBlock)completeBlock {\n   return [self downloadImageWithURL:url option:HUWebImageOptionMemoryAndDisk completed:completeBlock];\n}\n\n#pragma mark - parvate\n\n- (void)saveImage:(UIImage *)image toMemoryForKey:(NSString *)key {\n    UIImage *memoryImage = [self imageFromMemoryCacheForKey:key]; //first from memory\n    if (memoryImage == nil && image) {\n        NSUInteger cost = HUCacheCostForImage(image);\n        [self.webImageCache setObject:image forKey:key cost:cost];\n        //NSLog(@\"save image to memory\");\n    }\n}\n\n#pragma mark - save image to disk\n\n- (void)saveImage:(NSData *)imageData toDiskForKey:(NSString *)key {\n    if (imageData == nil) {\n        return;\n    }\n    UIImage *image = [self imageFromDiskCacheForKey:key];\n    if (image) {\n        return;\n    }\n    NSString *file = [self cacheFileForKey:key];\n    dispatch_sync(_ioQueue, ^{\n       // NSLog(@\"save data to disk %@\", file);\n        [imageData writeToFile:file atomically:YES];\n    });\n}\n\n- (UIImage *)diskImageForKey:(NSString *)key {\n    NSString *fileName = [self cacheFileForKey:key];\n    UIImage *img = [UIImage imageWithContentsOfFile:fileName];\n    return img;\n}\n\n- (nonnull NSString *)cacheFileForKey:(nonnull NSString *)key {\n    const char *cStr = [key UTF8String];\n    if (cStr == NULL) {\n        return @\"\";\n    }\n    unsigned char result[16];\n    \n    CC_MD5(cStr, (CC_LONG)strlen(cStr), result);\n    NSString *md5Key = [NSString stringWithFormat:@\"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\",\n            result[0], result[1], result[2], result[3],\n            result[4], result[5], result[6], result[7],\n            result[8], result[9], result[10], result[11],\n            result[12], result[13], result[14], result[15]\n            ];\n    \n    NSString *cachePath = [self defaultCahePath];\n    return [cachePath stringByAppendingPathComponent:md5Key];\n}\n\n- (BOOL)createDefaultCachePath {\n    \n    NSString *cachePath = [self defaultCahePath];\n    \n    NSFileManager *fileManager = [NSFileManager defaultManager];\n    BOOL isDir = FALSE;\n    BOOL isDirExit = [fileManager fileExistsAtPath:cachePath isDirectory:&isDir];\n    if (!(isDir && isDirExit)) {\n        if ([fileManager createDirectoryAtPath:cachePath withIntermediateDirectories:YES attributes:nil error:nil]) {\n            return NO;\n        }\n    }\n    \n    return isDirExit;\n}\n\n- (NSString *)defaultCahePath {\n    \n    NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];\n    return [cacheDir stringByAppendingPathComponent:kDefaultDiskCachePath];\n}\n\n- (void)clearMemory {\n    [self.webImageCache removeAllObjects];\n    [self.downloadOperations removeAllObjects];\n}\n\n- (NSOperationQueue *)operationQueue {\n    if (!_operationQueue) {\n        _operationQueue = [[NSOperationQueue alloc] init];\n        _operationQueue.maxConcurrentOperationCount = 5;\n    }\n    return _operationQueue;\n}\n\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/UIImage+HUExtension.h",
    "content": "//\n//  UIImage+HUExtension.h\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface UIImage (HUExtension)\n\n+ (UIImage *)hu_imageFromData:(NSData *)data;\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/UIImage+HUExtension.m",
    "content": "//\n//  UIImage+HUExtension.m\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import \"UIImage+HUExtension.h\"\n\n@implementation UIImage (HUExtension)\n\n+ (UIImage *)hu_imageFromData:(NSData *)data {\n    UIImage *image = [UIImage imageWithData:data];\n    return [image fixOrientation];\n}\n\n- (UIImage *)fixOrientation {\n    \n    // No-op if the orientation is already correct\n    if (self.imageOrientation == UIImageOrientationUp)\n        return self;\n    \n    // We need to calculate the proper transformation to make the image upright.\n    // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.\n    CGAffineTransform transform = CGAffineTransformIdentity;\n    \n    switch (self.imageOrientation) {\n        case UIImageOrientationDown:\n        case UIImageOrientationDownMirrored:\n            transform = CGAffineTransformTranslate(transform, self.size.width, self.size.height);\n            transform = CGAffineTransformRotate(transform, M_PI);\n            break;\n            \n        case UIImageOrientationLeft:\n        case UIImageOrientationLeftMirrored:\n            transform = CGAffineTransformTranslate(transform, self.size.width, 0);\n            transform = CGAffineTransformRotate(transform, M_PI_2);\n            break;\n            \n        case UIImageOrientationRight:\n        case UIImageOrientationRightMirrored:\n            transform = CGAffineTransformTranslate(transform, 0, self.size.height);\n            transform = CGAffineTransformRotate(transform, -M_PI_2);\n            break;\n        default:\n            break;\n    }\n    \n    switch (self.imageOrientation) {\n        case UIImageOrientationUpMirrored:\n        case UIImageOrientationDownMirrored:\n            transform = CGAffineTransformTranslate(transform, self.size.width, 0);\n            transform = CGAffineTransformScale(transform, -1, 1);\n            break;\n            \n        case UIImageOrientationLeftMirrored:\n        case UIImageOrientationRightMirrored:\n            transform = CGAffineTransformTranslate(transform, self.size.height, 0);\n            transform = CGAffineTransformScale(transform, -1, 1);\n            break;\n        default:\n            break;\n    }\n    \n    // Now we draw the underlying CGImage into a new context, applying the transform\n    // calculated above.\n    CGContextRef ctx = CGBitmapContextCreate(NULL, self.size.width, self.size.height,\n                                             CGImageGetBitsPerComponent(self.CGImage), 0,\n                                             CGImageGetColorSpace(self.CGImage),\n                                             CGImageGetBitmapInfo(self.CGImage));\n    CGContextConcatCTM(ctx, transform);\n    switch (self.imageOrientation) {\n        case UIImageOrientationLeft:\n        case UIImageOrientationLeftMirrored:\n        case UIImageOrientationRight:\n        case UIImageOrientationRightMirrored:\n            // Grr...\n            CGContextDrawImage(ctx, CGRectMake(0,0,self.size.height,self.size.width), self.CGImage);\n            break;\n            \n        default:\n            CGContextDrawImage(ctx, CGRectMake(0,0,self.size.width,self.size.height), self.CGImage);\n            break;\n    }\n    \n    // And now we just create a new UIImage from the drawing context\n    CGImageRef cgimg = CGBitmapContextCreateImage(ctx);\n    UIImage *img = [UIImage imageWithCGImage:cgimg];\n    CGContextRelease(ctx);\n    CGImageRelease(cgimg);\n    return img;\n}\n\n\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/UIImageView+HUWebImage.h",
    "content": "//\n//  UIImageView+HUWebImage.h\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface UIImageView (HUWebImage)\n\n- (void)hu_setImageWithURL:(nullable NSURL *)url;\n- (void)hu_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder;\n- (void)hu_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable void(^)(UIImage * __nullable image, NSError * __nullable error, NSURL * __nullable imageUrl))completed;\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/HUWebImageDownloader/UIImageView+HUWebImage.m",
    "content": "//\n//  UIImageView+HUWebImage.m\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/25.\n//  Copyright (c) 2016年 hujewelz. All rights reserved.\n//\n\n#import \"UIImageView+HUWebImage.h\"\n#import \"HUWebImageDownloadOperation.h\"\n#import \"HUWebImageDownloader.h\"\n#import <objc/runtime.h>\n#import \"hu_const.h\"\n\n\nstatic char *loadOperationKey = \"loadOperationKey\";\nstatic char imageURLKey;\n\n@implementation UIImageView (HUWebImage)\n\n- (void)hu_setImageWithURL:(nullable NSURL *)url {\n    [self hu_setImageWithURL:url placeholderImage:nil];\n}\n\n- (void)hu_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder {\n    [self hu_setImageWithURL:url placeholderImage:placeholder completed:nil];\n}\n\n- (void)hu_setImageWithURL:(nullable NSURL *)url placeholderImage:(nullable UIImage *)placeholder completed:(nullable void (^)(UIImage *, NSError *, NSURL *))completed {\n    if (url == nil) {\n      return;\n    }\n    self.image = nil;\n    self.image = placeholder;\n    [self hu_cancelImageDownloadOperationForKey:@\"downloadimage\"];\n    objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC);\n    __weak __typeof(self) wself = self;\n    HUWebImageDownloadOperation *operation = [HUWebImageDownloader downloadImageWithURL:url completed:^(UIImage *image, NSError *error, NSURL *imageUrl) {\n        __strong __typeof (wself) sself = wself;\n        if (!sself) {\n          return ;\n        }\n        if (![[sself hu_imageURL].absoluteString isEqualToString:url.absoluteString]) {\n            return;\n        }\n        \n        dispatch_async_main({\n            if (image) {\n                sself.image = image;\n                [sself setNeedsLayout];\n            }\n            else {\n                sself.image = placeholder;\n                [sself setNeedsLayout];\n            }\n            if (completed) {\n                completed(image, error, imageUrl);\n            }\n        })\n    }];\n    if (operation) {\n        [self hu_setImageDownloadOperation:operation forKey:@\"downloadimage\"];\n    }\n\n}\n\n\n\n- (void)hu_setImageDownloadOperation:(id)operation forKey:(NSString *)key {\n    if (key == nil) {\n      return ;\n    }\n    [self hu_cancelImageDownloadOperationForKey:key];\n    NSMutableDictionary *operations = [self operationDict];\n    [operations setObject:operation forKey:key];\n}\n\n- (void)hu_cancelImageDownloadOperationForKey:(NSString *)key {\n    NSMutableDictionary *operations = [self operationDict];\n    \n    id operation = operations[key];\n    if ([operation isKindOfClass:[HUWebImageDownloadOperation class]]) {\n        [operation cancel];\n    }\n    [operations removeObjectForKey:key];\n}\n\n- (NSMutableDictionary *)operationDict {\n    NSMutableDictionary *operations = objc_getAssociatedObject(self, loadOperationKey);\n    if (operations) {\n        return operations;\n    }\n    operations = [NSMutableDictionary dictionary];\n    objc_setAssociatedObject(self, loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC);\n    return operations;\n}\n\n- (NSURL *)hu_imageURL {\n  return objc_getAssociatedObject(self, &imageURLKey);\n}\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/UIView+frame.h",
    "content": "//\n//  UIView+Extension.h\n//  微博\n//\n//  Created by jewelz on 15/4/23.\n//  Copyright (c) 2015年 yangtzeu. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface UIView (frame)\n@property (assign, nonatomic) CGFloat x;\n@property (assign, nonatomic) CGFloat y;\n@property (assign, nonatomic) CGFloat width;\n@property (assign, nonatomic) CGFloat height;\n@property (assign, nonatomic) CGSize  size;\n@property (assign, nonatomic) CGPoint origion;\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/UIView+frame.m",
    "content": "//\n//  UIView+Extension.m\n//  微博\n//\n//  Created by jewelz on 15/4/23.\n//  Copyright (c) 2015年 yangtzeu. All rights reserved.\n//\n\n#import \"UIView+frame.h\"\n\n@implementation UIView (frame)\n\n- (void)setX:(CGFloat)x {\n    CGRect frame = self.frame;\n    frame.origin.x = x;\n    self.frame = frame;\n}\n\n- (CGFloat)x {\n    return self.frame.origin.x;\n}\n\n- (void)setY:(CGFloat)y {\n    CGRect frame = self.frame;\n    frame.origin.y = y;\n    self.frame = frame;\n}\n\n- (CGFloat)y {\n    return self.frame.origin.y;\n}\n\n- (void)setWidth:(CGFloat)width {\n    CGRect frame = self.frame;\n    frame.size.width = width;\n    self.frame = frame;\n}\n\n- (CGFloat)width {\n    return self.frame.size.width;\n}\n\n- (void)setHeight:(CGFloat)height {\n    CGRect frame = self.frame;\n    frame.size.height = height;\n    self.frame = frame;\n}\n\n- (CGFloat)height {\n    return self.frame.size.height;\n}\n\n- (void)setSize:(CGSize)size {\n    CGRect frame = self.frame;\n    frame.size = size;\n    self.frame = frame;\n}\n\n- (CGSize)size {\n    return self.frame.size;\n}\n\n- (void)setOrigion:(CGPoint)origion {\n    CGRect frame = self.frame;\n    frame.origin = origion;\n    self.frame = frame;\n}\n\n- (CGPoint)origion {\n    return self.frame.origin;\n}\n\n\n@end\n"
  },
  {
    "path": "HUPhotoBrowser/hu_const.h",
    "content": "//\n//  const.h\n//  HUPhotoBrowser\n//\n//  Created by mac on 16/2/24.\n//  Copyright (c) 2016年 jinhuadiqigan. All rights reserved.\n//\n\n#ifndef HUPhotoBrowser_const_h\n#define HUPhotoBrowser_const_h\n\n#define kScreenRect [UIScreen mainScreen].bounds\n#define kScreenWidth [UIScreen mainScreen].bounds.size.width\n#define kScreenHeight [UIScreen mainScreen].bounds.size.height\n#define kScreenRatio kScreenWidth / kScreenHeight\n#define kScreenMidX CGRectGetMaxX(kScreenRect)\n#define kScreenMidY CGRectGetMaxY(kScreenRect)\n\n#define dispatch_async_main(block) if ([NSThread isMainThread]) { \\\n    block;\\\n} else { \\\n    dispatch_async(dispatch_get_main_queue(), ^{ \\\n        block; \\\n    }); \\\n} \\\n\n#endif\n"
  },
  {
    "path": "HUPhotoBrowser.podspec",
    "content": "#\n#  Be sure to run `pod spec lint HUPhotoBrowser.podspec' to ensure this is a\n#  valid spec and to remove all comments including this before submitting the spec.\n#\n#  To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html\n#  To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/\n#\n\nPod::Spec.new do |s|\n  s.name         = \"HUPhotoBrowser\"\n  s.version      = \"1.4.5\"\n  s.summary      = \"photo browser for ios, which can browse Photo library and web image\"\n  s.homepage     = \"https://github.com/hujewelz/HUPhotoBrowser\"\n  s.license      = \"MIT\"\n  s.author             = { \"Jewelz Hu\" => \"https://github.com/hujewelz/HUPhotoBrowser\" }\n  s.platform     = :ios, \"7.0\"\n  s.source       = { :git => \"https://github.com/hujewelz/HUPhotoBrowser.git\", :tag => s.version.to_s }\n  s.source_files  = \"HUPhotoBrowser/**/*.{h,m}\"\n  s.requires_arc = true\n  s.frameworks = \"UIKit\", \"Photos\", \"AssetsLibrary\"\n\n  s.public_header_files = \"HUPhotoBrowser/HUPhotoBrowser.h\",\"HUPhotoBrowser/HUWebImageDownloader/HUWebImage.h\", \"HUPhotoBrowser/HUWebImageDownloader/{UIImageView+HUWebImage,HUWebImageDownloader}.h\"\n  s.dependency \"SVProgressHUD\"\n\n\nend\n"
  },
  {
    "path": "HUPhotoBrowser.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t040622691C7E93D0005653C1 /* libHUPhotoBrowser.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0406225D1C7E93D0005653C1 /* libHUPhotoBrowser.a */; };\n\t\t040624741C7EEF60005653C1 /* HUPhotoBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 040624711C7EEF60005653C1 /* HUPhotoBrowser.m */; };\n\t\t040624751C7EEF60005653C1 /* HUPhotoBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 040624731C7EEF60005653C1 /* HUPhotoBrowserCell.m */; };\n\t\t044D06641CD35F41005BDFF2 /* HUAlbum.m in Sources */ = {isa = PBXBuildFile; fileRef = 044D06531CD35F41005BDFF2 /* HUAlbum.m */; };\n\t\t044D06651CD35F41005BDFF2 /* HUAlbumCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 044D06551CD35F41005BDFF2 /* HUAlbumCell.m */; };\n\t\t044D06661CD35F41005BDFF2 /* HUAlbumsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 044D06581CD35F41005BDFF2 /* HUAlbumsViewController.m */; };\n\t\t044D06671CD35F41005BDFF2 /* HUImagePickerCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 044D065A1CD35F41005BDFF2 /* HUImagePickerCell.m */; };\n\t\t044D06681CD35F41005BDFF2 /* HUImagePickerRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 044D065D1CD35F41005BDFF2 /* HUImagePickerRootViewController.m */; };\n\t\t044D06691CD35F41005BDFF2 /* HUImagePickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 044D065F1CD35F41005BDFF2 /* HUImagePickerViewController.m */; };\n\t\t044D066A1CD35F41005BDFF2 /* HUPhotoHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 044D06611CD35F41005BDFF2 /* HUPhotoHelper.m */; };\n\t\t048D4E5A1CD05FB80042B958 /* HUWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 048D4E531CD05FB80042B958 /* HUWebImageDownloader.m */; };\n\t\t048D4E5B1CD05FB80042B958 /* HUWebImageDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 048D4E551CD05FB80042B958 /* HUWebImageDownloadOperation.m */; };\n\t\t048D4E5C1CD05FB80042B958 /* UIImage+HUExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 048D4E571CD05FB80042B958 /* UIImage+HUExtension.m */; };\n\t\t048D4E5D1CD05FB80042B958 /* UIImageView+HUWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 048D4E591CD05FB80042B958 /* UIImageView+HUWebImage.m */; };\n\t\t513CFE841CD4B5F700341995 /* HUToast.m in Sources */ = {isa = PBXBuildFile; fileRef = 513CFE811CD4B5F700341995 /* HUToast.m */; };\n\t\t513CFE851CD4B5F700341995 /* UIView+frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 513CFE831CD4B5F700341995 /* UIView+frame.m */; };\n\t\t51B662261E7F80AB00397C5D /* HUPhotoBrowser.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 040624701C7EEF60005653C1 /* HUPhotoBrowser.h */; };\n\t\t51B662271E7F80AB00397C5D /* HUImagePickerViewController.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 044D065E1CD35F41005BDFF2 /* HUImagePickerViewController.h */; };\n\t\t51B662281E7F80AB00397C5D /* HUWebImageDownloader.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 048D4E521CD05FB80042B958 /* HUWebImageDownloader.h */; };\n\t\t51B662291E7F80AB00397C5D /* UIImageView+HUWebImage.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 048D4E581CD05FB80042B958 /* UIImageView+HUWebImage.h */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t0406226A1C7E93D0005653C1 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 040622551C7E93D0005653C1 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 0406225C1C7E93D0005653C1;\n\t\t\tremoteInfo = HUPhotoBrowser;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t0406225B1C7E93D0005653C1 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"include/$(PRODUCT_NAME)\";\n\t\t\tdstSubfolderSpec = 16;\n\t\t\tfiles = (\n\t\t\t\t51B662261E7F80AB00397C5D /* HUPhotoBrowser.h in CopyFiles */,\n\t\t\t\t51B662271E7F80AB00397C5D /* HUImagePickerViewController.h in CopyFiles */,\n\t\t\t\t51B662281E7F80AB00397C5D /* HUWebImageDownloader.h in CopyFiles */,\n\t\t\t\t51B662291E7F80AB00397C5D /* UIImageView+HUWebImage.h in CopyFiles */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t0406225D1C7E93D0005653C1 /* libHUPhotoBrowser.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libHUPhotoBrowser.a; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t040622681C7E93D0005653C1 /* HUPhotoBrowserTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HUPhotoBrowserTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t0406226E1C7E93D0005653C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t040622AF1C7E94A6005653C1 /* hu_const.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hu_const.h; sourceTree = \"<group>\"; };\n\t\t040624701C7EEF60005653C1 /* HUPhotoBrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUPhotoBrowser.h; sourceTree = \"<group>\"; };\n\t\t040624711C7EEF60005653C1 /* HUPhotoBrowser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUPhotoBrowser.m; sourceTree = \"<group>\"; };\n\t\t040624721C7EEF60005653C1 /* HUPhotoBrowserCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUPhotoBrowserCell.h; sourceTree = \"<group>\"; };\n\t\t040624731C7EEF60005653C1 /* HUPhotoBrowserCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUPhotoBrowserCell.m; sourceTree = \"<group>\"; };\n\t\t044D06521CD35F41005BDFF2 /* HUAlbum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUAlbum.h; sourceTree = \"<group>\"; };\n\t\t044D06531CD35F41005BDFF2 /* HUAlbum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUAlbum.m; sourceTree = \"<group>\"; };\n\t\t044D06541CD35F41005BDFF2 /* HUAlbumCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUAlbumCell.h; sourceTree = \"<group>\"; };\n\t\t044D06551CD35F41005BDFF2 /* HUAlbumCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUAlbumCell.m; sourceTree = \"<group>\"; };\n\t\t044D06561CD35F41005BDFF2 /* HUAlbumCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HUAlbumCell.xib; sourceTree = \"<group>\"; };\n\t\t044D06571CD35F41005BDFF2 /* HUAlbumsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUAlbumsViewController.h; sourceTree = \"<group>\"; };\n\t\t044D06581CD35F41005BDFF2 /* HUAlbumsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUAlbumsViewController.m; sourceTree = \"<group>\"; };\n\t\t044D06591CD35F41005BDFF2 /* HUImagePickerCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUImagePickerCell.h; sourceTree = \"<group>\"; };\n\t\t044D065A1CD35F41005BDFF2 /* HUImagePickerCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUImagePickerCell.m; sourceTree = \"<group>\"; };\n\t\t044D065B1CD35F41005BDFF2 /* HUImagePickerCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HUImagePickerCell.xib; sourceTree = \"<group>\"; };\n\t\t044D065C1CD35F41005BDFF2 /* HUImagePickerRootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUImagePickerRootViewController.h; sourceTree = \"<group>\"; };\n\t\t044D065D1CD35F41005BDFF2 /* HUImagePickerRootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUImagePickerRootViewController.m; sourceTree = \"<group>\"; };\n\t\t044D065E1CD35F41005BDFF2 /* HUImagePickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUImagePickerViewController.h; sourceTree = \"<group>\"; };\n\t\t044D065F1CD35F41005BDFF2 /* HUImagePickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUImagePickerViewController.m; sourceTree = \"<group>\"; };\n\t\t044D06601CD35F41005BDFF2 /* HUPhotoHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUPhotoHelper.h; sourceTree = \"<group>\"; };\n\t\t044D06611CD35F41005BDFF2 /* HUPhotoHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUPhotoHelper.m; sourceTree = \"<group>\"; };\n\t\t044D06621CD35F41005BDFF2 /* pick_checked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"pick_checked@2x.png\"; sourceTree = \"<group>\"; };\n\t\t044D06631CD35F41005BDFF2 /* pick_checked@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"pick_checked@3x.png\"; sourceTree = \"<group>\"; };\n\t\t048D4E511CD05FB80042B958 /* HUWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUWebImage.h; sourceTree = \"<group>\"; };\n\t\t048D4E521CD05FB80042B958 /* HUWebImageDownloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUWebImageDownloader.h; sourceTree = \"<group>\"; };\n\t\t048D4E531CD05FB80042B958 /* HUWebImageDownloader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUWebImageDownloader.m; sourceTree = \"<group>\"; };\n\t\t048D4E541CD05FB80042B958 /* HUWebImageDownloadOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUWebImageDownloadOperation.h; sourceTree = \"<group>\"; };\n\t\t048D4E551CD05FB80042B958 /* HUWebImageDownloadOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUWebImageDownloadOperation.m; sourceTree = \"<group>\"; };\n\t\t048D4E561CD05FB80042B958 /* UIImage+HUExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"UIImage+HUExtension.h\"; sourceTree = \"<group>\"; };\n\t\t048D4E571CD05FB80042B958 /* UIImage+HUExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"UIImage+HUExtension.m\"; sourceTree = \"<group>\"; };\n\t\t048D4E581CD05FB80042B958 /* UIImageView+HUWebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"UIImageView+HUWebImage.h\"; sourceTree = \"<group>\"; };\n\t\t048D4E591CD05FB80042B958 /* UIImageView+HUWebImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"UIImageView+HUWebImage.m\"; sourceTree = \"<group>\"; };\n\t\t513CFE801CD4B5F700341995 /* HUToast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HUToast.h; sourceTree = \"<group>\"; };\n\t\t513CFE811CD4B5F700341995 /* HUToast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HUToast.m; sourceTree = \"<group>\"; };\n\t\t513CFE821CD4B5F700341995 /* UIView+frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"UIView+frame.h\"; sourceTree = \"<group>\"; };\n\t\t513CFE831CD4B5F700341995 /* UIView+frame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"UIView+frame.m\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t0406225A1C7E93D0005653C1 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t040622651C7E93D0005653C1 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t040622691C7E93D0005653C1 /* libHUPhotoBrowser.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t040622541C7E93D0005653C1 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0406225F1C7E93D0005653C1 /* HUPhotoBrowser */,\n\t\t\t\t0406226C1C7E93D0005653C1 /* HUPhotoBrowserTests */,\n\t\t\t\t0406225E1C7E93D0005653C1 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0406225E1C7E93D0005653C1 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0406225D1C7E93D0005653C1 /* libHUPhotoBrowser.a */,\n\t\t\t\t040622681C7E93D0005653C1 /* HUPhotoBrowserTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0406225F1C7E93D0005653C1 /* HUPhotoBrowser */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t040624701C7EEF60005653C1 /* HUPhotoBrowser.h */,\n\t\t\t\t040624711C7EEF60005653C1 /* HUPhotoBrowser.m */,\n\t\t\t\t040624721C7EEF60005653C1 /* HUPhotoBrowserCell.h */,\n\t\t\t\t040624731C7EEF60005653C1 /* HUPhotoBrowserCell.m */,\n\t\t\t\t040622AF1C7E94A6005653C1 /* hu_const.h */,\n\t\t\t\t513CFE801CD4B5F700341995 /* HUToast.h */,\n\t\t\t\t513CFE811CD4B5F700341995 /* HUToast.m */,\n\t\t\t\t513CFE821CD4B5F700341995 /* UIView+frame.h */,\n\t\t\t\t513CFE831CD4B5F700341995 /* UIView+frame.m */,\n\t\t\t\t044D06511CD35F41005BDFF2 /* HUPhotoPicker */,\n\t\t\t\t048D4E501CD05FB80042B958 /* HUWebImageDownloader */,\n\t\t\t);\n\t\t\tpath = HUPhotoBrowser;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0406226C1C7E93D0005653C1 /* HUPhotoBrowserTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0406226D1C7E93D0005653C1 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = HUPhotoBrowserTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t0406226D1C7E93D0005653C1 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0406226E1C7E93D0005653C1 /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t044D06511CD35F41005BDFF2 /* HUPhotoPicker */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t044D065E1CD35F41005BDFF2 /* HUImagePickerViewController.h */,\n\t\t\t\t044D065F1CD35F41005BDFF2 /* HUImagePickerViewController.m */,\n\t\t\t\t044D065C1CD35F41005BDFF2 /* HUImagePickerRootViewController.h */,\n\t\t\t\t044D065D1CD35F41005BDFF2 /* HUImagePickerRootViewController.m */,\n\t\t\t\t044D06571CD35F41005BDFF2 /* HUAlbumsViewController.h */,\n\t\t\t\t044D06581CD35F41005BDFF2 /* HUAlbumsViewController.m */,\n\t\t\t\t044D06541CD35F41005BDFF2 /* HUAlbumCell.h */,\n\t\t\t\t044D06551CD35F41005BDFF2 /* HUAlbumCell.m */,\n\t\t\t\t044D06561CD35F41005BDFF2 /* HUAlbumCell.xib */,\n\t\t\t\t044D06591CD35F41005BDFF2 /* HUImagePickerCell.h */,\n\t\t\t\t044D065A1CD35F41005BDFF2 /* HUImagePickerCell.m */,\n\t\t\t\t044D065B1CD35F41005BDFF2 /* HUImagePickerCell.xib */,\n\t\t\t\t044D06521CD35F41005BDFF2 /* HUAlbum.h */,\n\t\t\t\t044D06531CD35F41005BDFF2 /* HUAlbum.m */,\n\t\t\t\t044D06601CD35F41005BDFF2 /* HUPhotoHelper.h */,\n\t\t\t\t044D06611CD35F41005BDFF2 /* HUPhotoHelper.m */,\n\t\t\t\t044D06621CD35F41005BDFF2 /* pick_checked@2x.png */,\n\t\t\t\t044D06631CD35F41005BDFF2 /* pick_checked@3x.png */,\n\t\t\t);\n\t\t\tpath = HUPhotoPicker;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t048D4E501CD05FB80042B958 /* HUWebImageDownloader */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t048D4E511CD05FB80042B958 /* HUWebImage.h */,\n\t\t\t\t048D4E521CD05FB80042B958 /* HUWebImageDownloader.h */,\n\t\t\t\t048D4E531CD05FB80042B958 /* HUWebImageDownloader.m */,\n\t\t\t\t048D4E541CD05FB80042B958 /* HUWebImageDownloadOperation.h */,\n\t\t\t\t048D4E551CD05FB80042B958 /* HUWebImageDownloadOperation.m */,\n\t\t\t\t048D4E561CD05FB80042B958 /* UIImage+HUExtension.h */,\n\t\t\t\t048D4E571CD05FB80042B958 /* UIImage+HUExtension.m */,\n\t\t\t\t048D4E581CD05FB80042B958 /* UIImageView+HUWebImage.h */,\n\t\t\t\t048D4E591CD05FB80042B958 /* UIImageView+HUWebImage.m */,\n\t\t\t);\n\t\t\tpath = HUWebImageDownloader;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\t0406225C1C7E93D0005653C1 /* HUPhotoBrowser */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 040622711C7E93D0005653C1 /* Build configuration list for PBXNativeTarget \"HUPhotoBrowser\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t040622591C7E93D0005653C1 /* Sources */,\n\t\t\t\t0406225A1C7E93D0005653C1 /* Frameworks */,\n\t\t\t\t0406225B1C7E93D0005653C1 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = HUPhotoBrowser;\n\t\t\tproductName = HUPhotoBrowser;\n\t\t\tproductReference = 0406225D1C7E93D0005653C1 /* libHUPhotoBrowser.a */;\n\t\t\tproductType = \"com.apple.product-type.library.static\";\n\t\t};\n\t\t040622671C7E93D0005653C1 /* HUPhotoBrowserTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 040622741C7E93D0005653C1 /* Build configuration list for PBXNativeTarget \"HUPhotoBrowserTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t040622641C7E93D0005653C1 /* Sources */,\n\t\t\t\t040622651C7E93D0005653C1 /* Frameworks */,\n\t\t\t\t040622661C7E93D0005653C1 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t0406226B1C7E93D0005653C1 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = HUPhotoBrowserTests;\n\t\t\tproductName = HUPhotoBrowserTests;\n\t\t\tproductReference = 040622681C7E93D0005653C1 /* HUPhotoBrowserTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t040622551C7E93D0005653C1 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 0720;\n\t\t\t\tORGANIZATIONNAME = hujewelz;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t0406225C1C7E93D0005653C1 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.4;\n\t\t\t\t\t};\n\t\t\t\t\t040622671C7E93D0005653C1 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.4;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 040622581C7E93D0005653C1 /* Build configuration list for PBXProject \"HUPhotoBrowser\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t);\n\t\t\tmainGroup = 040622541C7E93D0005653C1;\n\t\t\tproductRefGroup = 0406225E1C7E93D0005653C1 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t0406225C1C7E93D0005653C1 /* HUPhotoBrowser */,\n\t\t\t\t040622671C7E93D0005653C1 /* HUPhotoBrowserTests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t040622661C7E93D0005653C1 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t040622591C7E93D0005653C1 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t044D06661CD35F41005BDFF2 /* HUAlbumsViewController.m in Sources */,\n\t\t\t\t044D066A1CD35F41005BDFF2 /* HUPhotoHelper.m in Sources */,\n\t\t\t\t040624741C7EEF60005653C1 /* HUPhotoBrowser.m in Sources */,\n\t\t\t\t513CFE851CD4B5F700341995 /* UIView+frame.m in Sources */,\n\t\t\t\t048D4E5A1CD05FB80042B958 /* HUWebImageDownloader.m in Sources */,\n\t\t\t\t040624751C7EEF60005653C1 /* HUPhotoBrowserCell.m in Sources */,\n\t\t\t\t048D4E5B1CD05FB80042B958 /* HUWebImageDownloadOperation.m in Sources */,\n\t\t\t\t048D4E5D1CD05FB80042B958 /* UIImageView+HUWebImage.m in Sources */,\n\t\t\t\t044D06681CD35F41005BDFF2 /* HUImagePickerRootViewController.m in Sources */,\n\t\t\t\t044D06671CD35F41005BDFF2 /* HUImagePickerCell.m in Sources */,\n\t\t\t\t044D06641CD35F41005BDFF2 /* HUAlbum.m in Sources */,\n\t\t\t\t044D06691CD35F41005BDFF2 /* HUImagePickerViewController.m in Sources */,\n\t\t\t\t044D06651CD35F41005BDFF2 /* HUAlbumCell.m in Sources */,\n\t\t\t\t513CFE841CD4B5F700341995 /* HUToast.m in Sources */,\n\t\t\t\t048D4E5C1CD05FB80042B958 /* UIImage+HUExtension.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t040622641C7E93D0005653C1 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t0406226B1C7E93D0005653C1 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 0406225C1C7E93D0005653C1 /* HUPhotoBrowser */;\n\t\t\ttargetProxy = 0406226A1C7E93D0005653C1 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\t0406226F1C7E93D0005653C1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 7.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t040622701C7E93D0005653C1 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 7.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t040622721C7E93D0005653C1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tOTHER_LDFLAGS = \"-ObjC\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t040622731C7E93D0005653C1 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tOTHER_LDFLAGS = \"-ObjC\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t040622751C7E93D0005653C1 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = HUPhotoBrowserTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t040622761C7E93D0005653C1 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = HUPhotoBrowserTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.hujewelz.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t040622581C7E93D0005653C1 /* Build configuration list for PBXProject \"HUPhotoBrowser\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t0406226F1C7E93D0005653C1 /* Debug */,\n\t\t\t\t040622701C7E93D0005653C1 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t040622711C7E93D0005653C1 /* Build configuration list for PBXNativeTarget \"HUPhotoBrowser\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t040622721C7E93D0005653C1 /* Debug */,\n\t\t\t\t040622731C7E93D0005653C1 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t040622741C7E93D0005653C1 /* Build configuration list for PBXNativeTarget \"HUPhotoBrowserTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t040622751C7E93D0005653C1 /* Debug */,\n\t\t\t\t040622761C7E93D0005653C1 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 040622551C7E93D0005653C1 /* Project object */;\n}\n"
  },
  {
    "path": "HUPhotoBrowser.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:HUPhotoBrowser.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "HUPhotoBrowser.xcodeproj/project.xcworkspace/xcshareddata/HUPhotoBrowser.xccheckout",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDESourceControlProjectFavoriteDictionaryKey</key>\n\t<false/>\n\t<key>IDESourceControlProjectIdentifier</key>\n\t<string>D0727199-8C7A-438B-A052-108CA74B7080</string>\n\t<key>IDESourceControlProjectName</key>\n\t<string>project</string>\n\t<key>IDESourceControlProjectOriginsDictionary</key>\n\t<dict>\n\t\t<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>\n\t\t<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>\n\t</dict>\n\t<key>IDESourceControlProjectPath</key>\n\t<string>HUPhotoBrowser.xcodeproj/project.xcworkspace</string>\n\t<key>IDESourceControlProjectRelativeInstallPathDictionary</key>\n\t<dict>\n\t\t<key>3E54BB6501640F2F1E4E23A6F020501F2858AB48</key>\n\t\t<string>../..</string>\n\t</dict>\n\t<key>IDESourceControlProjectURL</key>\n\t<string>https://github.com/hujewelz/HUPhotoBrowser.git</string>\n\t<key>IDESourceControlProjectVersion</key>\n\t<integer>111</integer>\n\t<key>IDESourceControlProjectWCCIdentifier</key>\n\t<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>\n\t<key>IDESourceControlProjectWCConfigurations</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>IDESourceControlRepositoryExtensionIdentifierKey</key>\n\t\t\t<string>public.vcs.git</string>\n\t\t\t<key>IDESourceControlWCCIdentifierKey</key>\n\t\t\t<string>3E54BB6501640F2F1E4E23A6F020501F2858AB48</string>\n\t\t\t<key>IDESourceControlWCCName</key>\n\t\t\t<string>HUPhotoBrowser</string>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "HUPhotoBrowser.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/HUPhotoBrowser.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0730\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"0406225C1C7E93D0005653C1\"\n               BuildableName = \"libHUPhotoBrowser.a\"\n               BlueprintName = \"HUPhotoBrowser\"\n               ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"040622671C7E93D0005653C1\"\n               BuildableName = \"HUPhotoBrowserTests.xctest\"\n               BlueprintName = \"HUPhotoBrowserTests\"\n               ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406225C1C7E93D0005653C1\"\n            BuildableName = \"libHUPhotoBrowser.a\"\n            BlueprintName = \"HUPhotoBrowser\"\n            ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406225C1C7E93D0005653C1\"\n            BuildableName = \"libHUPhotoBrowser.a\"\n            BlueprintName = \"HUPhotoBrowser\"\n            ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406225C1C7E93D0005653C1\"\n            BuildableName = \"libHUPhotoBrowser.a\"\n            BlueprintName = \"HUPhotoBrowser\"\n            ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "HUPhotoBrowser.xcodeproj/xcuserdata/jewelz.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>HUPhotoBrowser.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t</dict>\n\t<key>SuppressBuildableAutocreation</key>\n\t<dict>\n\t\t<key>0406225C1C7E93D0005653C1</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>040622671C7E93D0005653C1</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "HUPhotoBrowser.xcodeproj/xcuserdata/mac.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Bucket\n   type = \"1\"\n   version = \"2.0\">\n</Bucket>\n"
  },
  {
    "path": "HUPhotoBrowser.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HUPhotoBrowser.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"0720\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"0406225C1C7E93D0005653C1\"\n               BuildableName = \"libHUPhotoBrowser.a\"\n               BlueprintName = \"HUPhotoBrowser\"\n               ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"NO\"\n            buildForArchiving = \"NO\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"040622671C7E93D0005653C1\"\n               BuildableName = \"HUPhotoBrowserTests.xctest\"\n               BlueprintName = \"HUPhotoBrowserTests\"\n               ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"040622671C7E93D0005653C1\"\n               BuildableName = \"HUPhotoBrowserTests.xctest\"\n               BlueprintName = \"HUPhotoBrowserTests\"\n               ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406225C1C7E93D0005653C1\"\n            BuildableName = \"libHUPhotoBrowser.a\"\n            BlueprintName = \"HUPhotoBrowser\"\n            ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406225C1C7E93D0005653C1\"\n            BuildableName = \"libHUPhotoBrowser.a\"\n            BlueprintName = \"HUPhotoBrowser\"\n            ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"0406225C1C7E93D0005653C1\"\n            BuildableName = \"libHUPhotoBrowser.a\"\n            BlueprintName = \"HUPhotoBrowser\"\n            ReferencedContainer = \"container:HUPhotoBrowser.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "HUPhotoBrowser.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>SchemeUserState</key>\n\t<dict>\n\t\t<key>HUPhotoBrowser.xcscheme</key>\n\t\t<dict>\n\t\t\t<key>orderHint</key>\n\t\t\t<integer>0</integer>\n\t\t</dict>\n\t</dict>\n\t<key>SuppressBuildableAutocreation</key>\n\t<dict>\n\t\t<key>0406225C1C7E93D0005653C1</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>040622671C7E93D0005653C1</key>\n\t\t<dict>\n\t\t\t<key>primary</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "HUPhotoBrowserTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 Jewelz Hu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README.md",
    "content": "# HUPhotoBrowser\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/hujewelz/HUPhotoBrowser/master/LICENSE)\n[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/HUPhotoBrowser.svg)](https://img.shields.io/cocoapods/v/HUPhotoBrowser.svg)\n\n⚠️最新的版本不再集成[HUPhotoPicker](https://github.com/hujewelz/HUPhotoPicker)了，需要使用的同学可以指定版本为 `1.2.5`，推荐单独使用[HUPhotoPicker](https://github.com/hujewelz/HUPhotoPicker)\n\n**HUPhotoBrowser** ios图片浏览器，支持浏览本地图片及网络图片，暂不支持浏览视频及gif,使用起来非常简单,只需要一行代码。\n**HUImagePickerViewController** 图片选择器，你可以像使用`UIImagePickerController`一样的使用它，支持图片多选。\n\n![image](https://github.com/hujewelz/HUPhotoBrowser/blob/master/screenshot/2016-04-3008_57_13.gif)\n\n## PhotoBrowser的使用\n\n在需要用到的地方 `#import <HUPhotoBrowser.h>`\n\nHUPhotoBrowser支持本地图片浏览\n\n\t[HUPhotoBrowser showFromImageView:cell.imageView withImages:self.images atIndex:indexPath.row];\n\nHUPhotoBrowser同时支持网络图片浏览\n\n\t[HUPhotoBrowser showFromImageView:cell.imageView withURLStrings:_URLStrings placeholderImage:[UIImage imageNamed:@\"placeholder\"] atIndex:indexPath.row dismiss:nil];\n\n在需要浏览的图片的点击事件中调用即可：\n\n```Objective-C\n- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {\n    \n    PhotoCell *cell = (PhotoCell *)[collectionView cellForItemAtIndexPath:indexPath];\n    if (_localImage) {\n        [HUPhotoBrowser showFromImageView:cell.imageView withImages:self.originalImages atIndex:indexPath.row];\n    }\n    else {\n        [HUPhotoBrowser showFromImageView:cell.imageView withURLStrings:_URLStrings placeholderImage:[UIImage imageNamed:@\"placeholder\"] atIndex:indexPath.row dismiss:nil];\n    }\n\n}\n```\n\n你还可以获取到当前浏览到的图片\n\n```Objective-C\n[HUPhotoBrowser showFromImageView:cell.imageView withImages:self.images placeholderImage:nil atIndex:indexPath.row dismiss:^(UIImage *image, NSInteger index) {\n        \n    }];\n```\n\n## 安装\n\n1. [CocoaPods](https://cocoapods.org/)安装：\n```\npod 'HUPhotoBrowser' \n```\n2. 下载ZIP包,将`HUPhotoBrowser`资源文件拖到工程中。\n3. 将`HUPhotoBrowser.xcodeproj`工程文件和`HUPhotoBrowser`源文件一同拖入工程目录下，在工程中右键选择 \"Add Files to ...\"，选择`HUPhotoBrowser.xcodeproj`。\n\n\t![](http://image18-c.poco.cn/mypoco/myphoto/20170320/12/18436043320170320121521061.jpg?542x710_120)\n\t\n\t然后在 \"Build Settings -> Header Search Paths\" 中添加源文件路径。\n\n\n## 其他\n\n为了不影响您项目中导入的其他第三方库，本库没有导入任何其他的第三方内容，可以放心使用。在使用前，您可以查看[示例程序](https://github.com/hujewelz/HUPhotoBrowser/tree/master/Example)\n* 如果在使用过程中遇到BUG，希望你能Issues我，谢谢（或者尝试下载最新的框架代码看看BUG修复没有）\n* 如果您有什么建议可以Issues我，谢谢\n* 后续我会持续更新，为它添加更多的功能，欢迎star :)\n\n\n"
  }
]