[
  {
    "path": ".gitignore",
    "content": ".DS_Store\n*.xcuserstate\nproject.xcworkspace/\nxcuserdata/"
  },
  {
    "path": ".swift-version",
    "content": "4.2\n"
  },
  {
    "path": ".travis.yml",
    "content": "osx_image: xcode10.2\nlanguage: objective-c\nenv:\n  global:\n    - PROJECT=\"AwaitToast.xcodeproj\"\n    - IOS_SDK=\"iphonesimulator\"\n  matrix:\n    - SDK=\"$IOS_SDK\" DESTINATION=\"platform=iOS Simulator,OS=12.2,name=iPhone X\"\n\ninstall:\n  - swift --version\n\nbefore_script:\n  - set -o pipefail\n\nscript:\n    - xcodebuild clean build\n      -project \"$PROJECT\"\n      -scheme AwaitToast\n      -sdk \"$SDK\"\n      -destination \"$DESTINATION\" | xcpretty -c\n    - xcodebuild clean build\n      -project \"$PROJECT\"\n      -scheme Example\n      -sdk \"$SDK\"\n      -destination \"$DESTINATION\" | xcpretty -c"
  },
  {
    "path": "AwaitToast.h",
    "content": "//\n//  AwaitToast.h\n//  AwaitToast\n//\n//  Created by DongHeeKang on 03/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n//! Project version number for AwaitToast.\nFOUNDATION_EXPORT double AwaitToastVersionNumber;\n\n//! Project version string for AwaitToast.\nFOUNDATION_EXPORT const unsigned char AwaitToastVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <AwaitToast/PublicHeader.h>\n\n\n"
  },
  {
    "path": "AwaitToast.podspec",
    "content": "Pod::Spec.new do |s|\n  s.name         = \"AwaitToast\"\n  s.version      = \"1.2.0\"\n  s.summary      = \"🍞 An async waiting toast with basic toast. Inspired by facebook posting toast.\"\n  s.homepage     = \"https://github.com/k-lpmg/AwaitToast\"\n  s.license      = { :type => 'MIT', :file => 'LICENSE' }\n  s.author       = { \"DongHee Kang\" => \"kanglpmg@gmail.com\" }\n  s.source       = { :git => \"https://github.com/k-lpmg/AwaitToast.git\", :tag => s.version.to_s }\n  s.documentation_url = \"https://github.com/k-lpmg/AwaitToast/blob/master/README.md\"\n\n  s.ios.source_files  = \"Sources/**/*.swift\"\n  s.ios.deployment_target = \"9.0\"\nend\n"
  },
  {
    "path": "AwaitToast.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 50;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t651828472230099A007E54E5 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 6518284622300999007E54E5 /* README.md */; };\n\t\t6518284A22301372007E54E5 /* DefaultExampleCellType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518284922301372007E54E5 /* DefaultExampleCellType.swift */; };\n\t\t6518284C2230137D007E54E5 /* AwaitExampleCellType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518284B2230137D007E54E5 /* AwaitExampleCellType.swift */; };\n\t\t65182877223024A9007E54E5 /* ToastCompatiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182851223024A9007E54E5 /* ToastCompatiable.swift */; };\n\t\t65182878223024A9007E54E5 /* ToastDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182852223024A9007E54E5 /* ToastDirection.swift */; };\n\t\t65182879223024A9007E54E5 /* AwaitToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182854223024A9007E54E5 /* AwaitToastView.swift */; };\n\t\t6518287A223024A9007E54E5 /* ToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182855223024A9007E54E5 /* ToastView.swift */; };\n\t\t6518287B223024A9007E54E5 /* AwaitDefault.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182857223024A9007E54E5 /* AwaitDefault.swift */; };\n\t\t6518287C223024A9007E54E5 /* Default.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182858223024A9007E54E5 /* Default.swift */; };\n\t\t6518287D223024A9007E54E5 /* DefaultToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182859223024A9007E54E5 /* DefaultToastView.swift */; };\n\t\t6518287E223024A9007E54E5 /* AwaitDefaultToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518285A223024A9007E54E5 /* AwaitDefaultToastView.swift */; };\n\t\t6518287F223024A9007E54E5 /* AwaitToastProducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518285B223024A9007E54E5 /* AwaitToastProducer.swift */; };\n\t\t65182880223024A9007E54E5 /* IconImageLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518285D223024A9007E54E5 /* IconImageLocation.swift */; };\n\t\t65182881223024A9007E54E5 /* Icon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518285E223024A9007E54E5 /* Icon.swift */; };\n\t\t65182882223024A9007E54E5 /* IconToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518285F223024A9007E54E5 /* IconToastView.swift */; };\n\t\t65182883223024A9007E54E5 /* AwaitIconToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182860223024A9007E54E5 /* AwaitIconToastView.swift */; };\n\t\t65182884223024A9007E54E5 /* AwaitIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182861223024A9007E54E5 /* AwaitIcon.swift */; };\n\t\t65182885223024A9007E54E5 /* DefaultToastProducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182862223024A9007E54E5 /* DefaultToastProducer.swift */; };\n\t\t65182886223024A9007E54E5 /* AwaitToast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182863223024A9007E54E5 /* AwaitToast.swift */; };\n\t\t65182887223024A9007E54E5 /* GlobalFunction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182865223024A9007E54E5 /* GlobalFunction.swift */; };\n\t\t65182888223024A9007E54E5 /* ToastOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182867223024A9007E54E5 /* ToastOperation.swift */; };\n\t\t65182889223024A9007E54E5 /* DefaultToastOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182868223024A9007E54E5 /* DefaultToastOperation.swift */; };\n\t\t6518288B223024A9007E54E5 /* ToastDynamicDispatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518286A223024A9007E54E5 /* ToastDynamicDispatch.swift */; };\n\t\t6518288C223024A9007E54E5 /* AwaitToastOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518286B223024A9007E54E5 /* AwaitToastOperation.swift */; };\n\t\t6518288D223024A9007E54E5 /* DefaultToastBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518286D223024A9007E54E5 /* DefaultToastBehavior.swift */; };\n\t\t6518288E223024A9007E54E5 /* ToastBehaviorManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518286E223024A9007E54E5 /* ToastBehaviorManager.swift */; };\n\t\t6518288F223024A9007E54E5 /* AwaitToastBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6518286F223024A9007E54E5 /* AwaitToastBehavior.swift */; };\n\t\t65182890223024A9007E54E5 /* ToastBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182870223024A9007E54E5 /* ToastBehavior.swift */; };\n\t\t65182891223024A9007E54E5 /* DefaultToastAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182872223024A9007E54E5 /* DefaultToastAppearance.swift */; };\n\t\t65182892223024A9007E54E5 /* IconToastAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182873223024A9007E54E5 /* IconToastAppearance.swift */; };\n\t\t65182893223024A9007E54E5 /* ToastAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182874223024A9007E54E5 /* ToastAppearance.swift */; };\n\t\t65182894223024A9007E54E5 /* ToastAppearanceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182875223024A9007E54E5 /* ToastAppearanceManager.swift */; };\n\t\t65182895223024A9007E54E5 /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65182876223024A9007E54E5 /* Toast.swift */; };\n\t\t659E38F9222BA21A00062BDE /* AwaitToast.h in Headers */ = {isa = PBXBuildFile; fileRef = 659E38F7222BA21A00062BDE /* AwaitToast.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t659E3950222BA27800062BDE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 659E394F222BA27800062BDE /* Assets.xcassets */; };\n\t\t659E3953222BA27800062BDE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 659E3951222BA27800062BDE /* LaunchScreen.storyboard */; };\n\t\t65DDDD53222D50140076118E /* AwaitToast.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 659E38F4222BA21A00062BDE /* AwaitToast.framework */; };\n\t\t65DDDD54222D50140076118E /* AwaitToast.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 659E38F4222BA21A00062BDE /* AwaitToast.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t65F146752251CB5C00F7CFF6 /* LongTextCellType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F146742251CB5C00F7CFF6 /* LongTextCellType.swift */; };\n\t\t65F1467A2251D47E00F7CFF6 /* GlobalConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F146792251D47E00F7CFF6 /* GlobalConstants.swift */; };\n\t\t65FB9951222C40D300A75E8A /* ToastExampleTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FB994C222C40D300A75E8A /* ToastExampleTableViewController.swift */; };\n\t\t65FB9952222C40D300A75E8A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FB994D222C40D300A75E8A /* AppDelegate.swift */; };\n\t\t65FB995F222C412300A75E8A /* SettingCellType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FB995C222C412300A75E8A /* SettingCellType.swift */; };\n\t\t65FB9960222C412300A75E8A /* ExampleCellType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FB995D222C412300A75E8A /* ExampleCellType.swift */; };\n\t\t65FB9963222C41A900A75E8A /* SectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FB9962222C41A900A75E8A /* SectionType.swift */; };\n\t\t65FB9965222C427B00A75E8A /* ExampleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FB9964222C427B00A75E8A /* ExampleTableViewCell.swift */; };\n\t\t65FB9969222C438100A75E8A /* SettingSwitchTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FB9968222C438100A75E8A /* SettingSwitchTableViewCell.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t65DDDD55222D50140076118E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 659E38EB222BA21A00062BDE /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 659E38F3222BA21A00062BDE;\n\t\t\tremoteInfo = AwaitToast;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t65DDDD57222D50140076118E /* Embed Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t65DDDD54222D50140076118E /* AwaitToast.framework in Embed Frameworks */,\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t6518284622300999007E54E5 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = \"<group>\"; };\n\t\t6518284922301372007E54E5 /* DefaultExampleCellType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultExampleCellType.swift; sourceTree = \"<group>\"; };\n\t\t6518284B2230137D007E54E5 /* AwaitExampleCellType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AwaitExampleCellType.swift; sourceTree = \"<group>\"; };\n\t\t65182851223024A9007E54E5 /* ToastCompatiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastCompatiable.swift; sourceTree = \"<group>\"; };\n\t\t65182852223024A9007E54E5 /* ToastDirection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastDirection.swift; sourceTree = \"<group>\"; };\n\t\t65182854223024A9007E54E5 /* AwaitToastView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitToastView.swift; sourceTree = \"<group>\"; };\n\t\t65182855223024A9007E54E5 /* ToastView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastView.swift; sourceTree = \"<group>\"; };\n\t\t65182857223024A9007E54E5 /* AwaitDefault.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitDefault.swift; sourceTree = \"<group>\"; };\n\t\t65182858223024A9007E54E5 /* Default.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Default.swift; sourceTree = \"<group>\"; };\n\t\t65182859223024A9007E54E5 /* DefaultToastView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultToastView.swift; sourceTree = \"<group>\"; };\n\t\t6518285A223024A9007E54E5 /* AwaitDefaultToastView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitDefaultToastView.swift; sourceTree = \"<group>\"; };\n\t\t6518285B223024A9007E54E5 /* AwaitToastProducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitToastProducer.swift; sourceTree = \"<group>\"; };\n\t\t6518285D223024A9007E54E5 /* IconImageLocation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IconImageLocation.swift; sourceTree = \"<group>\"; };\n\t\t6518285E223024A9007E54E5 /* Icon.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Icon.swift; sourceTree = \"<group>\"; };\n\t\t6518285F223024A9007E54E5 /* IconToastView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IconToastView.swift; sourceTree = \"<group>\"; };\n\t\t65182860223024A9007E54E5 /* AwaitIconToastView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitIconToastView.swift; sourceTree = \"<group>\"; };\n\t\t65182861223024A9007E54E5 /* AwaitIcon.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitIcon.swift; sourceTree = \"<group>\"; };\n\t\t65182862223024A9007E54E5 /* DefaultToastProducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultToastProducer.swift; sourceTree = \"<group>\"; };\n\t\t65182863223024A9007E54E5 /* AwaitToast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitToast.swift; sourceTree = \"<group>\"; };\n\t\t65182865223024A9007E54E5 /* GlobalFunction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlobalFunction.swift; sourceTree = \"<group>\"; };\n\t\t65182867223024A9007E54E5 /* ToastOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastOperation.swift; sourceTree = \"<group>\"; };\n\t\t65182868223024A9007E54E5 /* DefaultToastOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultToastOperation.swift; sourceTree = \"<group>\"; };\n\t\t6518286A223024A9007E54E5 /* ToastDynamicDispatch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastDynamicDispatch.swift; sourceTree = \"<group>\"; };\n\t\t6518286B223024A9007E54E5 /* AwaitToastOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitToastOperation.swift; sourceTree = \"<group>\"; };\n\t\t6518286D223024A9007E54E5 /* DefaultToastBehavior.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultToastBehavior.swift; sourceTree = \"<group>\"; };\n\t\t6518286E223024A9007E54E5 /* ToastBehaviorManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastBehaviorManager.swift; sourceTree = \"<group>\"; };\n\t\t6518286F223024A9007E54E5 /* AwaitToastBehavior.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AwaitToastBehavior.swift; sourceTree = \"<group>\"; };\n\t\t65182870223024A9007E54E5 /* ToastBehavior.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastBehavior.swift; sourceTree = \"<group>\"; };\n\t\t65182872223024A9007E54E5 /* DefaultToastAppearance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultToastAppearance.swift; sourceTree = \"<group>\"; };\n\t\t65182873223024A9007E54E5 /* IconToastAppearance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IconToastAppearance.swift; sourceTree = \"<group>\"; };\n\t\t65182874223024A9007E54E5 /* ToastAppearance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastAppearance.swift; sourceTree = \"<group>\"; };\n\t\t65182875223024A9007E54E5 /* ToastAppearanceManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastAppearanceManager.swift; sourceTree = \"<group>\"; };\n\t\t65182876223024A9007E54E5 /* Toast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Toast.swift; sourceTree = \"<group>\"; };\n\t\t659E38F4222BA21A00062BDE /* AwaitToast.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AwaitToast.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t659E38F7222BA21A00062BDE /* AwaitToast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AwaitToast.h; sourceTree = \"<group>\"; };\n\t\t659E38F8222BA21A00062BDE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t659E3946222BA27700062BDE /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t659E394F222BA27800062BDE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t659E3952222BA27800062BDE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\t659E3954222BA27800062BDE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t65F146742251CB5C00F7CFF6 /* LongTextCellType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LongTextCellType.swift; sourceTree = \"<group>\"; };\n\t\t65F146792251D47E00F7CFF6 /* GlobalConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalConstants.swift; sourceTree = \"<group>\"; };\n\t\t65FB994C222C40D300A75E8A /* ToastExampleTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToastExampleTableViewController.swift; sourceTree = \"<group>\"; };\n\t\t65FB994D222C40D300A75E8A /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\t65FB995C222C412300A75E8A /* SettingCellType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingCellType.swift; sourceTree = \"<group>\"; };\n\t\t65FB995D222C412300A75E8A /* ExampleCellType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleCellType.swift; sourceTree = \"<group>\"; };\n\t\t65FB9962222C41A900A75E8A /* SectionType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SectionType.swift; sourceTree = \"<group>\"; };\n\t\t65FB9964222C427B00A75E8A /* ExampleTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleTableViewCell.swift; sourceTree = \"<group>\"; };\n\t\t65FB9968222C438100A75E8A /* SettingSwitchTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingSwitchTableViewCell.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t659E38F1222BA21A00062BDE /* 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\t659E3943222BA27700062BDE /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t65DDDD53222D50140076118E /* AwaitToast.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\t651828482230135B007E54E5 /* Enums */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t6518284B2230137D007E54E5 /* AwaitExampleCellType.swift */,\n\t\t\t\t6518284922301372007E54E5 /* DefaultExampleCellType.swift */,\n\t\t\t\t65FB995D222C412300A75E8A /* ExampleCellType.swift */,\n\t\t\t\t65F146742251CB5C00F7CFF6 /* LongTextCellType.swift */,\n\t\t\t\t65FB9962222C41A900A75E8A /* SectionType.swift */,\n\t\t\t\t65FB995C222C412300A75E8A /* SettingCellType.swift */,\n\t\t\t);\n\t\t\tpath = Enums;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t6518284F223024A9007E54E5 /* Sources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t65182850223024A9007E54E5 /* AwaitToast */,\n\t\t\t);\n\t\t\tpath = Sources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65182850223024A9007E54E5 /* AwaitToast */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t65182863223024A9007E54E5 /* AwaitToast.swift */,\n\t\t\t\t65182876223024A9007E54E5 /* Toast.swift */,\n\t\t\t\t65182851223024A9007E54E5 /* ToastCompatiable.swift */,\n\t\t\t\t65182852223024A9007E54E5 /* ToastDirection.swift */,\n\t\t\t\t65182871223024A9007E54E5 /* Appearances */,\n\t\t\t\t6518286C223024A9007E54E5 /* Behaviors */,\n\t\t\t\t65182866223024A9007E54E5 /* Operations */,\n\t\t\t\t65182853223024A9007E54E5 /* Toasts */,\n\t\t\t\t65182864223024A9007E54E5 /* Utils */,\n\t\t\t);\n\t\t\tpath = AwaitToast;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65182853223024A9007E54E5 /* Toasts */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t6518285B223024A9007E54E5 /* AwaitToastProducer.swift */,\n\t\t\t\t65182854223024A9007E54E5 /* AwaitToastView.swift */,\n\t\t\t\t65182862223024A9007E54E5 /* DefaultToastProducer.swift */,\n\t\t\t\t65182855223024A9007E54E5 /* ToastView.swift */,\n\t\t\t\t65182856223024A9007E54E5 /* Default */,\n\t\t\t\t6518285C223024A9007E54E5 /* Icon */,\n\t\t\t);\n\t\t\tpath = Toasts;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65182856223024A9007E54E5 /* Default */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t65182857223024A9007E54E5 /* AwaitDefault.swift */,\n\t\t\t\t6518285A223024A9007E54E5 /* AwaitDefaultToastView.swift */,\n\t\t\t\t65182858223024A9007E54E5 /* Default.swift */,\n\t\t\t\t65182859223024A9007E54E5 /* DefaultToastView.swift */,\n\t\t\t);\n\t\t\tpath = Default;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t6518285C223024A9007E54E5 /* Icon */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t65182861223024A9007E54E5 /* AwaitIcon.swift */,\n\t\t\t\t65182860223024A9007E54E5 /* AwaitIconToastView.swift */,\n\t\t\t\t6518285E223024A9007E54E5 /* Icon.swift */,\n\t\t\t\t6518285D223024A9007E54E5 /* IconImageLocation.swift */,\n\t\t\t\t6518285F223024A9007E54E5 /* IconToastView.swift */,\n\t\t\t);\n\t\t\tpath = Icon;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65182864223024A9007E54E5 /* Utils */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t65182865223024A9007E54E5 /* GlobalFunction.swift */,\n\t\t\t\t65F146792251D47E00F7CFF6 /* GlobalConstants.swift */,\n\t\t\t);\n\t\t\tpath = Utils;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65182866223024A9007E54E5 /* Operations */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t6518286B223024A9007E54E5 /* AwaitToastOperation.swift */,\n\t\t\t\t65182868223024A9007E54E5 /* DefaultToastOperation.swift */,\n\t\t\t\t6518286A223024A9007E54E5 /* ToastDynamicDispatch.swift */,\n\t\t\t\t65182867223024A9007E54E5 /* ToastOperation.swift */,\n\t\t\t);\n\t\t\tpath = Operations;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t6518286C223024A9007E54E5 /* Behaviors */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t6518286F223024A9007E54E5 /* AwaitToastBehavior.swift */,\n\t\t\t\t6518286D223024A9007E54E5 /* DefaultToastBehavior.swift */,\n\t\t\t\t65182870223024A9007E54E5 /* ToastBehavior.swift */,\n\t\t\t\t6518286E223024A9007E54E5 /* ToastBehaviorManager.swift */,\n\t\t\t);\n\t\t\tpath = Behaviors;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65182871223024A9007E54E5 /* Appearances */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t65182872223024A9007E54E5 /* DefaultToastAppearance.swift */,\n\t\t\t\t65182873223024A9007E54E5 /* IconToastAppearance.swift */,\n\t\t\t\t65182874223024A9007E54E5 /* ToastAppearance.swift */,\n\t\t\t\t65182875223024A9007E54E5 /* ToastAppearanceManager.swift */,\n\t\t\t);\n\t\t\tpath = Appearances;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t659E38EA222BA21A00062BDE = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t659E38F7222BA21A00062BDE /* AwaitToast.h */,\n\t\t\t\t6518284622300999007E54E5 /* README.md */,\n\t\t\t\t659E38F8222BA21A00062BDE /* Info.plist */,\n\t\t\t\t6518284F223024A9007E54E5 /* Sources */,\n\t\t\t\t659E3947222BA27700062BDE /* Example */,\n\t\t\t\t659E38F5222BA21A00062BDE /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t659E38F5222BA21A00062BDE /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t659E38F4222BA21A00062BDE /* AwaitToast.framework */,\n\t\t\t\t659E3946222BA27700062BDE /* Example.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t659E3947222BA27700062BDE /* Example */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t65FB9949222C40D300A75E8A /* Sources */,\n\t\t\t\t659E3954222BA27800062BDE /* Info.plist */,\n\t\t\t\t659E394F222BA27800062BDE /* Assets.xcassets */,\n\t\t\t\t659E3951222BA27800062BDE /* LaunchScreen.storyboard */,\n\t\t\t);\n\t\t\tpath = Example;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65FB9949222C40D300A75E8A /* Sources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t651828482230135B007E54E5 /* Enums */,\n\t\t\t\t65FB995B222C412300A75E8A /* Cells */,\n\t\t\t\t65FB994D222C40D300A75E8A /* AppDelegate.swift */,\n\t\t\t\t65FB994C222C40D300A75E8A /* ToastExampleTableViewController.swift */,\n\t\t\t);\n\t\t\tpath = Sources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t65FB995B222C412300A75E8A /* Cells */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t65FB9964222C427B00A75E8A /* ExampleTableViewCell.swift */,\n\t\t\t\t65FB9968222C438100A75E8A /* SettingSwitchTableViewCell.swift */,\n\t\t\t);\n\t\t\tpath = Cells;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t659E38EF222BA21A00062BDE /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t659E38F9222BA21A00062BDE /* AwaitToast.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\t659E38F3222BA21A00062BDE /* AwaitToast */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 659E38FC222BA21A00062BDE /* Build configuration list for PBXNativeTarget \"AwaitToast\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t659E38EF222BA21A00062BDE /* Headers */,\n\t\t\t\t659E38F0222BA21A00062BDE /* Sources */,\n\t\t\t\t659E38F1222BA21A00062BDE /* Frameworks */,\n\t\t\t\t659E38F2222BA21A00062BDE /* 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 = AwaitToast;\n\t\t\tproductName = AwaitToast;\n\t\t\tproductReference = 659E38F4222BA21A00062BDE /* AwaitToast.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t659E3945222BA27700062BDE /* Example */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 659E3955222BA27800062BDE /* Build configuration list for PBXNativeTarget \"Example\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t659E3942222BA27700062BDE /* Sources */,\n\t\t\t\t659E3943222BA27700062BDE /* Frameworks */,\n\t\t\t\t659E3944222BA27700062BDE /* Resources */,\n\t\t\t\t65DDDD57222D50140076118E /* Embed Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t65DDDD56222D50140076118E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = Example;\n\t\t\tproductName = Example;\n\t\t\tproductReference = 659E3946222BA27700062BDE /* Example.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t659E38EB222BA21A00062BDE /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 1010;\n\t\t\t\tLastUpgradeCheck = 1010;\n\t\t\t\tORGANIZATIONNAME = \"k-lpmg\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t659E38F3222BA21A00062BDE = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.1;\n\t\t\t\t\t};\n\t\t\t\t\t659E3945222BA27700062BDE = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.1;\n\t\t\t\t\t\tLastSwiftMigration = 1010;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 659E38EE222BA21A00062BDE /* Build configuration list for PBXProject \"AwaitToast\" */;\n\t\t\tcompatibilityVersion = \"Xcode 9.3\";\n\t\t\tdevelopmentRegion = en;\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 = 659E38EA222BA21A00062BDE;\n\t\t\tproductRefGroup = 659E38F5222BA21A00062BDE /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t659E38F3222BA21A00062BDE /* AwaitToast */,\n\t\t\t\t659E3945222BA27700062BDE /* Example */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t659E38F2222BA21A00062BDE /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t651828472230099A007E54E5 /* README.md in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t659E3944222BA27700062BDE /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t659E3953222BA27800062BDE /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t659E3950222BA27800062BDE /* Assets.xcassets 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\t659E38F0222BA21A00062BDE /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t6518287A223024A9007E54E5 /* ToastView.swift in Sources */,\n\t\t\t\t65182887223024A9007E54E5 /* GlobalFunction.swift in Sources */,\n\t\t\t\t65182885223024A9007E54E5 /* DefaultToastProducer.swift in Sources */,\n\t\t\t\t6518287C223024A9007E54E5 /* Default.swift in Sources */,\n\t\t\t\t65182893223024A9007E54E5 /* ToastAppearance.swift in Sources */,\n\t\t\t\t65182883223024A9007E54E5 /* AwaitIconToastView.swift in Sources */,\n\t\t\t\t65182877223024A9007E54E5 /* ToastCompatiable.swift in Sources */,\n\t\t\t\t6518287B223024A9007E54E5 /* AwaitDefault.swift in Sources */,\n\t\t\t\t6518287F223024A9007E54E5 /* AwaitToastProducer.swift in Sources */,\n\t\t\t\t6518288D223024A9007E54E5 /* DefaultToastBehavior.swift in Sources */,\n\t\t\t\t6518288F223024A9007E54E5 /* AwaitToastBehavior.swift in Sources */,\n\t\t\t\t65182895223024A9007E54E5 /* Toast.swift in Sources */,\n\t\t\t\t65182880223024A9007E54E5 /* IconImageLocation.swift in Sources */,\n\t\t\t\t6518287D223024A9007E54E5 /* DefaultToastView.swift in Sources */,\n\t\t\t\t65182892223024A9007E54E5 /* IconToastAppearance.swift in Sources */,\n\t\t\t\t65182891223024A9007E54E5 /* DefaultToastAppearance.swift in Sources */,\n\t\t\t\t65182878223024A9007E54E5 /* ToastDirection.swift in Sources */,\n\t\t\t\t65182879223024A9007E54E5 /* AwaitToastView.swift in Sources */,\n\t\t\t\t65182894223024A9007E54E5 /* ToastAppearanceManager.swift in Sources */,\n\t\t\t\t6518288C223024A9007E54E5 /* AwaitToastOperation.swift in Sources */,\n\t\t\t\t65182882223024A9007E54E5 /* IconToastView.swift in Sources */,\n\t\t\t\t6518288B223024A9007E54E5 /* ToastDynamicDispatch.swift in Sources */,\n\t\t\t\t65182889223024A9007E54E5 /* DefaultToastOperation.swift in Sources */,\n\t\t\t\t65182886223024A9007E54E5 /* AwaitToast.swift in Sources */,\n\t\t\t\t65182890223024A9007E54E5 /* ToastBehavior.swift in Sources */,\n\t\t\t\t6518287E223024A9007E54E5 /* AwaitDefaultToastView.swift in Sources */,\n\t\t\t\t6518288E223024A9007E54E5 /* ToastBehaviorManager.swift in Sources */,\n\t\t\t\t65182888223024A9007E54E5 /* ToastOperation.swift in Sources */,\n\t\t\t\t65182881223024A9007E54E5 /* Icon.swift in Sources */,\n\t\t\t\t65F1467A2251D47E00F7CFF6 /* GlobalConstants.swift in Sources */,\n\t\t\t\t65182884223024A9007E54E5 /* AwaitIcon.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t659E3942222BA27700062BDE /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t65FB9952222C40D300A75E8A /* AppDelegate.swift in Sources */,\n\t\t\t\t65FB995F222C412300A75E8A /* SettingCellType.swift in Sources */,\n\t\t\t\t65F146752251CB5C00F7CFF6 /* LongTextCellType.swift in Sources */,\n\t\t\t\t6518284C2230137D007E54E5 /* AwaitExampleCellType.swift in Sources */,\n\t\t\t\t6518284A22301372007E54E5 /* DefaultExampleCellType.swift in Sources */,\n\t\t\t\t65FB9969222C438100A75E8A /* SettingSwitchTableViewCell.swift in Sources */,\n\t\t\t\t65FB9965222C427B00A75E8A /* ExampleTableViewCell.swift in Sources */,\n\t\t\t\t65FB9960222C412300A75E8A /* ExampleCellType.swift in Sources */,\n\t\t\t\t65FB9951222C40D300A75E8A /* ToastExampleTableViewController.swift in Sources */,\n\t\t\t\t65FB9963222C41A900A75E8A /* SectionType.swift 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\t65DDDD56222D50140076118E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 659E38F3222BA21A00062BDE /* AwaitToast */;\n\t\t\ttargetProxy = 65DDDD55222D50140076118E /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t659E3951222BA27800062BDE /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t659E3952222BA27800062BDE /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t659E38FA222BA21A00062BDE /* 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_ENABLE_OBJC_WEAK = 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\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\"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 = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t659E38FB222BA21A00062BDE /* 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_ENABLE_OBJC_WEAK = 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = 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_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\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_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 = 9.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-O\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t659E38FD222BA21A00062BDE /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.k-lpmg.AwaitToast\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t659E38FE222BA21A00062BDE /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.k-lpmg.AwaitToast\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t659E3956222BA27800062BDE /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = Example/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.k-lpmg.Example\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t659E3957222BA27800062BDE /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = Example/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"com.k-lpmg.Example\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t659E38EE222BA21A00062BDE /* Build configuration list for PBXProject \"AwaitToast\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t659E38FA222BA21A00062BDE /* Debug */,\n\t\t\t\t659E38FB222BA21A00062BDE /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t659E38FC222BA21A00062BDE /* Build configuration list for PBXNativeTarget \"AwaitToast\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t659E38FD222BA21A00062BDE /* Debug */,\n\t\t\t\t659E38FE222BA21A00062BDE /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t659E3955222BA27800062BDE /* Build configuration list for PBXNativeTarget \"Example\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t659E3956222BA27800062BDE /* Debug */,\n\t\t\t\t659E3957222BA27800062BDE /* 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 = 659E38EB222BA21A00062BDE /* Project object */;\n}\n"
  },
  {
    "path": "AwaitToast.xcodeproj/xcshareddata/xcschemes/AwaitToast.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1010\"\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 = \"659E38F3222BA21A00062BDE\"\n               BuildableName = \"AwaitToast.framework\"\n               BlueprintName = \"AwaitToast\"\n               ReferencedContainer = \"container:AwaitToast.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      </Testables>\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 = \"659E38F3222BA21A00062BDE\"\n            BuildableName = \"AwaitToast.framework\"\n            BlueprintName = \"AwaitToast\"\n            ReferencedContainer = \"container:AwaitToast.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 = \"659E38F3222BA21A00062BDE\"\n            BuildableName = \"AwaitToast.framework\"\n            BlueprintName = \"AwaitToast\"\n            ReferencedContainer = \"container:AwaitToast.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": "Example/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"3x\"\n    },\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      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"83.5x83.5\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ios-marketing\",\n      \"size\" : \"1024x1024\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Assets.xcassets/await.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"await.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Assets.xcassets/egg.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"egg.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Assets.xcassets/exit.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"exit.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Assets.xcassets/longText.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"longText.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Assets.xcassets/toast.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"toast.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Assets.xcassets/trash.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"filename\" : \"trash.png\",\n      \"scale\" : \"3x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Example/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"14460.31\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\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=\"14460.20\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"AwaitToast\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Txe-Lg-rzE\">\n                                <rect key=\"frame\" x=\"108\" y=\"314\" width=\"159\" height=\"39\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" weight=\"semibold\" pointSize=\"32\"/>\n                                <nil key=\"textColor\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"Txe-Lg-rzE\" firstAttribute=\"centerX\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerX\" id=\"Sv1-xG-6Nu\"/>\n                            <constraint firstItem=\"Txe-Lg-rzE\" firstAttribute=\"centerY\" secondItem=\"Ze5-6b-2t3\" secondAttribute=\"centerY\" id=\"bLD-da-iyB\"/>\n                        </constraints>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "Example/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>$(DEVELOPMENT_LANGUAGE)</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>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</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<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "Example/Sources/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  Example\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n    \n    var window: UIWindow?\n    \n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        let window = UIWindow(frame: UIScreen.main.bounds)\n        let rootViewController = UINavigationController(rootViewController: ToastExampleTableViewController())\n        window.rootViewController = rootViewController\n        window.backgroundColor = .white\n        window.makeKeyAndVisible()\n        self.window = window\n        return true\n    }\n    \n}\n\n"
  },
  {
    "path": "Example/Sources/Cells/ExampleTableViewCell.swift",
    "content": "//\n//  ExampleTableViewCell.swift\n//  Example\n//\n//  Created by DongHeeKang on 03/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nfinal class ExampleTableViewCell: UITableViewCell {\n    \n    // MARK: - Constants\n    \n    static let reuseIdentifier = \"ExampleTableViewCell\"\n    \n    // MARK: - UI Components\n    \n    private let iconImageView: UIImageView = {\n        let imageView = UIImageView()\n        imageView.translatesAutoresizingMaskIntoConstraints = false\n        return imageView\n    }()\n    private let actionLabel: UILabel = {\n        let label = UILabel()\n        label.translatesAutoresizingMaskIntoConstraints = false\n        label.font = UIFont.preferredFont(forTextStyle: .subheadline)\n        label.textAlignment = .left\n        label.textColor = .darkGray\n        return label\n    }()\n    private let targetLabel: UILabel = {\n        let label = UILabel()\n        label.translatesAutoresizingMaskIntoConstraints = false\n        label.font = UIFont.preferredFont(forTextStyle: .body)\n        label.textAlignment = .right\n        label.textColor = .gray\n        return label\n    }()\n    \n    // MARK: - Con(De)structor\n    \n    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {\n        super.init(style: style, reuseIdentifier: reuseIdentifier)\n        \n        contentView.addSubview(iconImageView)\n        contentView.addSubview(actionLabel)\n        contentView.addSubview(targetLabel)\n        layout()\n    }\n    \n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    // MARK: - Internal methods\n    \n    func configure(with type: ExampleCellType) {\n        iconImageView.image = UIImage(named: type.imageName)\n        actionLabel.text = type.action\n        targetLabel.text = type.target\n    }\n    \n    func configure(image: UIImage, action: String, target: String) {\n        iconImageView.image = image\n        actionLabel.text = action\n        targetLabel.text = target\n    }\n    \n}\n\n// MARK: - Layout\n\nextension ExampleTableViewCell {\n    \n    private func layout() {\n        iconImageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16).isActive = true\n        iconImageView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16).isActive = true\n        iconImageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -16).isActive = true\n        iconImageView.widthAnchor.constraint(equalToConstant: 32).isActive = true\n        \n        actionLabel.leadingAnchor.constraint(equalTo: iconImageView.trailingAnchor, constant: 16).isActive = true\n        actionLabel.centerYAnchor.constraint(equalTo: iconImageView.centerYAnchor).isActive = true\n        actionLabel.setContentHuggingPriority(.required, for: .horizontal)\n        \n        targetLabel.leadingAnchor.constraint(equalTo: actionLabel.trailingAnchor, constant: 8).isActive = true\n        targetLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16).isActive = true\n        targetLabel.centerYAnchor.constraint(equalTo: iconImageView.centerYAnchor).isActive = true\n    }\n    \n}\n"
  },
  {
    "path": "Example/Sources/Cells/SettingSwitchTableViewCell.swift",
    "content": "//\n//  SettingSwitchTableViewCell.swift\n//  Example\n//\n//  Created by DongHeeKang on 04/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nprotocol SettingSwitchTableViewCellDelegate: NSObjectProtocol {\n    func settingSwitchTableViewCell(_ cell: SettingSwitchTableViewCell, switchUpdated isOn: Bool)\n}\n\nfinal class SettingSwitchTableViewCell: UITableViewCell {\n    \n    // MARK: - Constants\n    \n    static let reuseIdentifier = \"SettingSwitchTableViewCell\"\n    \n    // MARK: - Properties\n    \n    var indexPath: IndexPath?\n    var isSwitchOn: Bool? = nil {\n        didSet {\n            guard let isSwitchOn = isSwitchOn else {return}\n            settingSwitch.isOn = isSwitchOn\n        }\n    }\n    weak var delegate: SettingSwitchTableViewCellDelegate?\n    \n    // MARK: - UI Components\n    \n    private let settingLabel: UILabel = {\n        let label = UILabel()\n        label.translatesAutoresizingMaskIntoConstraints = false\n        label.font = UIFont.preferredFont(forTextStyle: .subheadline)\n        label.textAlignment = .left\n        label.textColor = .darkGray\n        return label\n    }()\n    private let settingSwitch: UISwitch = {\n        let settingSwitch = UISwitch()\n        settingSwitch.translatesAutoresizingMaskIntoConstraints = false\n        return settingSwitch\n    }()\n    \n    // MARK: - Con(De)structor\n    \n    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {\n        super.init(style: style, reuseIdentifier: reuseIdentifier)\n        \n        setProperties()\n        setSelector()\n        contentView.addSubview(settingLabel)\n        contentView.addSubview(settingSwitch)\n        layout()\n    }\n    \n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    // MARK: - Internal methods\n    \n    func configure(with text: String) {\n        settingLabel.text = text\n    }\n    \n    // MARK: - Private methods\n    \n    private func setProperties() {\n        selectionStyle = .none\n    }\n    \n    private func setSelector() {\n        settingSwitch.addTarget(self, action: #selector(switchValueChanged), for: .valueChanged)\n    }\n    \n    // MARK: - Private selector\n    \n    @objc private func switchValueChanged() {\n        delegate?.settingSwitchTableViewCell(self, switchUpdated: settingSwitch.isOn)\n    }\n    \n    \n}\n\n// MARK: - Layout\n\nextension SettingSwitchTableViewCell {\n    \n    private func layout() {\n        settingLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16).isActive = true\n        settingLabel.centerYAnchor.constraint(equalTo: contentView.centerYAnchor).isActive = true\n        \n        settingSwitch.centerYAnchor.constraint(equalTo: contentView.centerYAnchor).isActive = true\n        settingSwitch.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16).isActive = true\n    }\n    \n}\n"
  },
  {
    "path": "Example/Sources/Enums/AwaitExampleCellType.swift",
    "content": "//\n//  AwaitExampleCellType.swift\n//  Example\n//\n//  Created by DongHeeKang on 06/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nenum AwaitExampleCellType: Int, CaseIterable, ExampleCellType {\n    case defaultAwait\n    case finishDefaultAwait\n    case iconAwait\n    case finishIconAwait\n    case dismissAwaitLatestToast\n    case dismissAllToast\n    \n    var action: String {\n        switch self {\n        case .defaultAwait:\n            return \"Show\"\n        case .finishDefaultAwait:\n            return \"Finish\"\n        case .iconAwait:\n            return \"Show\"\n        case .finishIconAwait:\n            return \"Finish\"\n        case .dismissAwaitLatestToast:\n            return \"Dismiss\"\n        case .dismissAllToast:\n            return \"Dismiss\"\n        }\n    }\n    \n    var target: String {\n        switch self {\n        case .defaultAwait:\n            return \"default await toast\"\n        case .finishDefaultAwait:\n            return \"default await toast\"\n        case .iconAwait:\n            return \"icon await toast\"\n        case .finishIconAwait:\n            return \"icon await toast\"\n        case .dismissAwaitLatestToast:\n            return \"await latest toast\"\n        case .dismissAllToast:\n            return \"all toast\"\n        }\n    }\n    \n    var imageName: String {\n        switch self {\n        case .defaultAwait:\n            return \"await\"\n        case .finishDefaultAwait:\n            return \"exit\"\n        case .iconAwait:\n            return \"await\"\n        case .finishIconAwait:\n            return \"exit\"\n        case .dismissAwaitLatestToast:\n            return \"trash\"\n        case .dismissAllToast:\n            return \"trash\"\n        }\n    }\n}\n"
  },
  {
    "path": "Example/Sources/Enums/DefaultExampleCellType.swift",
    "content": "//\n//  DefaultExampleCellType.swift\n//  Example\n//\n//  Created by DongHeeKang on 06/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nenum DefaultExampleCellType: Int, CaseIterable, ExampleCellType {\n    case `default`\n    case icon\n    case dismissDefaultLatestToast\n    case dismissAllToast\n    \n    var action: String {\n        switch self {\n        case .default:\n            return \"Show\"\n        case .icon:\n            return \"Show\"\n        case .dismissDefaultLatestToast:\n            return \"Dismiss\"\n        case .dismissAllToast:\n            return \"Dismiss\"\n        }\n    }\n    \n    var target: String {\n        switch self {\n        case .default:\n            return \"default toast\"\n        case .icon:\n            return \"icon toast\"\n        case .dismissDefaultLatestToast:\n            return \"default latest toast\"\n        case .dismissAllToast:\n            return \"all toast\"\n        }\n    }\n    \n    var imageName: String {\n        switch self {\n        case .default:\n            return \"toast\"\n        case .icon:\n            return \"toast\"\n        case .dismissDefaultLatestToast:\n            return \"trash\"\n        case .dismissAllToast:\n            return \"trash\"\n        }\n    }\n}\n"
  },
  {
    "path": "Example/Sources/Enums/ExampleCellType.swift",
    "content": "//\n//  ExampleCellType.swift\n//  Example\n//\n//  Created by DongHeeKang on 03/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nprotocol ExampleCellType {\n    var action: String { get }\n    var target: String { get }\n    var imageName: String { get }\n}\n"
  },
  {
    "path": "Example/Sources/Enums/LongTextCellType.swift",
    "content": "//\n//  LongTextCellType.swift\n//  Example\n//\n//  Created by DongHeeKang on 01/04/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nenum LongTextCellType: Int, CaseIterable {\n    case automaticDimension\n    case longTestToast\n    \n    var title: String {\n        switch self {\n        case .automaticDimension:\n            return \"AutomaticDimension\"\n        case .longTestToast:\n            return \"\"\n        }\n    }\n}\n"
  },
  {
    "path": "Example/Sources/Enums/SectionType.swift",
    "content": "//\n//  SectionType.swift\n//  Example\n//\n//  Created by DongHeeKang on 04/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nenum SectionType: Int, CaseIterable {\n    case settings\n    case defaultExamples\n    case awaitExamples\n    case longText\n    \n    var title: String {\n        switch self {\n        case .settings:\n            return \"Settings\"\n        case .defaultExamples:\n            return \"Default Examples\"\n        case .awaitExamples:\n            return \"Await Examples\"\n        case .longText:\n            return \"Long Text Example\"\n        }\n    }\n}\n"
  },
  {
    "path": "Example/Sources/Enums/SettingCellType.swift",
    "content": "//\n//  SettingCellType.swift\n//  Example\n//\n//  Created by DongHeeKang on 04/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nenum SettingCellType: Int, CaseIterable {\n    case tapToDismiss\n    case topDirection\n    \n    var title: String {\n        switch self {\n        case .tapToDismiss:\n            return \"Tap to dismiss\"\n        case .topDirection:\n            return \"Top direction\"\n        }\n    }\n}\n"
  },
  {
    "path": "Example/Sources/ToastExampleTableViewController.swift",
    "content": "//\n//  ToastExampleTableViewController.swift\n//  Example\n//\n//  Created by DongHeeKang on 03/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nimport AwaitToast\n\nfinal class ToastExampleTableViewController: UITableViewController {\n    \n    // MARK: - Properties\n    \n    let sections = SectionType.allCases\n    let settings = SettingCellType.allCases\n    let defaultExamples = DefaultExampleCellType.allCases\n    let awaitExamples = AwaitExampleCellType.allCases\n    let longTextExample = LongTextCellType.allCases\n    \n    var defaultAwaitToast: AwaitToast?\n    var iconAwaitToast: AwaitToast?\n    var direction: ToastDirection = .top\n    \n    // MARK: - Overridden: UITableViewController\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        setAppearance()\n        setProperties()\n    }\n    \n    // MARK: - UITableViewDataSource\n    \n    override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {\n        return sections[section].title\n    }\n    \n    override func numberOfSections(in tableView: UITableView) -> Int {\n        return sections.count\n    }\n    \n    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {\n        switch sections[section] {\n        case .settings:\n            return settings.count\n        case .defaultExamples:\n            return defaultExamples.count\n        case .awaitExamples:\n            return awaitExamples.count\n        case .longText:\n            return longTextExample.count\n        }\n    }\n    \n    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n        switch sections[indexPath.section] {\n        case .settings:\n            let cell = tableView.dequeueReusableCell(withIdentifier: SettingSwitchTableViewCell.reuseIdentifier, for: indexPath) as! SettingSwitchTableViewCell\n            cell.indexPath = indexPath\n            cell.delegate = self\n            cell.configure(with: settings[indexPath.row].title)\n            \n            if let setting = SettingCellType(rawValue: indexPath.row) {\n                switch setting {\n                case .tapToDismiss:\n                    cell.isSwitchOn = ToastBehaviorManager.default.isTappedDismissEnabled && ToastBehaviorManager.await.isTappedDismissEnabled\n                case .topDirection:\n                    cell.isSwitchOn = direction == .top\n                }\n            }\n            return cell\n        case .defaultExamples:\n            let cell = tableView.dequeueReusableCell(withIdentifier: ExampleTableViewCell.reuseIdentifier, for: indexPath) as! ExampleTableViewCell\n            cell.configure(with: defaultExamples[indexPath.row] as ExampleCellType)\n            return cell\n        case .awaitExamples:\n            let cell = tableView.dequeueReusableCell(withIdentifier: ExampleTableViewCell.reuseIdentifier, for: indexPath) as! ExampleTableViewCell\n            cell.configure(with: awaitExamples[indexPath.row] as ExampleCellType)\n            return cell\n        case .longText:\n            let longTextCell = LongTextCellType(rawValue: indexPath.row)!\n            switch longTextCell {\n            case .automaticDimension:\n                let cell = tableView.dequeueReusableCell(withIdentifier: SettingSwitchTableViewCell.reuseIdentifier, for: indexPath) as! SettingSwitchTableViewCell\n                cell.indexPath = indexPath\n                cell.delegate = self\n                cell.configure(with: longTextCell.title)\n                \n                cell.isSwitchOn = ToastAppearanceManager.default.height == AutomaticDimension\n                return cell\n            case .longTestToast:\n                let cell = tableView.dequeueReusableCell(withIdentifier: ExampleTableViewCell.reuseIdentifier, for: indexPath) as! ExampleTableViewCell\n                cell.configure(image: UIImage(named: \"longText\")!, action: \"Show\", target: \"Default long text\")\n                return cell\n            }\n        }\n    }\n    \n    // MARK: - UITableViewDelegate\n    \n    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {\n        return 64\n    }\n    \n    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {\n        tableView.deselectRow(at: indexPath, animated: true)\n        \n        switch sections[indexPath.section] {\n        case .defaultExamples:\n            guard let cellType = DefaultExampleCellType(rawValue: indexPath.row) else {return}\n            \n            switch cellType {\n            case .default:\n                let toast = Toast.default(text: \"Default toast\", direction: direction)\n                toast.show()\n            case .icon:\n                let image = UIImage(named: \"egg\")!.withRenderingMode(.alwaysTemplate)\n                let toast = Toast.icon(image: image, text: \"Icon toast\", direction: direction)\n                toast.show()\n            case .dismissDefaultLatestToast:\n                Toast.latestDismiss()\n            case .dismissAllToast:\n                Toast.dismissAll()\n            }\n        case .awaitExamples:\n            guard let cellType = AwaitExampleCellType(rawValue: indexPath.row) else {return}\n            \n            switch cellType {\n            case .defaultAwait:\n                defaultAwaitToast?.finish()\n                \n                defaultAwaitToast = AwaitToast.default(initialText: \"Await default toast start\", endText: \"Await default toast end\", direction: direction)\n                defaultAwaitToast?.show()\n            case .finishDefaultAwait:\n                defaultAwaitToast?.finish()\n            case .iconAwait:\n                iconAwaitToast?.finish()\n                \n                let image = UIImage(named: \"egg\")!.withRenderingMode(.alwaysTemplate)\n                iconAwaitToast = AwaitToast.icon(image: image, initialText: \"Await icon toast start\", endText: \"Await icon toast end\", direction: direction)\n                iconAwaitToast?.show()\n            case .finishIconAwait:\n                iconAwaitToast?.finish()\n            case .dismissAwaitLatestToast:\n                AwaitToast.latestDismiss()\n            case .dismissAllToast:\n                AwaitToast.dismissAll()\n            }\n        case .longText:\n            guard let cellType = LongTextCellType(rawValue: indexPath.row) else {return}\n            \n            switch cellType {\n            case .longTestToast:\n                let text = \"\"\"\n                This is long text line 1\n                This is long text line 2\n                This is long text line 3\n                This is long text line 4\n                This is long text line 5\n                This is long text line 6\n                This is long text line 7\n                This is long text line 8\n                This is long text line 9\n                This is long text line 10\n                This is long text line 11\n                This is long text line 12\n                This is long text line 13\n                \"\"\"\n                let toast = Toast.default(text: text, direction: direction)\n                toast.show()\n            default:\n                break\n            }\n        default:\n            break\n        }\n    }\n    \n    // MARK: - Private methods\n    \n    private func setAppearance() {\n        ToastAppearanceManager.icon.imageTintColor = .white\n    }\n    \n    private func setProperties() {\n        title = \"AwaitToast\"\n        tableView.estimatedRowHeight = 64\n        tableView.rowHeight = UITableView.automaticDimension\n        tableView.register(SettingSwitchTableViewCell.self, forCellReuseIdentifier: SettingSwitchTableViewCell.reuseIdentifier)\n        tableView.register(ExampleTableViewCell.self, forCellReuseIdentifier: ExampleTableViewCell.reuseIdentifier)\n    }\n    \n}\n\n// MARK: - SettingSwitchTableViewCellDelegate\n\nextension ToastExampleTableViewController: SettingSwitchTableViewCellDelegate {\n    \n    func settingSwitchTableViewCell(_ cell: SettingSwitchTableViewCell, switchUpdated isOn: Bool) {\n        guard let indexPath = cell.indexPath else {return}\n\n        switch sections[indexPath.section] {\n        case .settings:\n            guard let type = SettingCellType(rawValue: cell.indexPath?.row ?? -1) else {return}\n            \n            switch type {\n            case .tapToDismiss:\n                ToastBehaviorManager.default.isTappedDismissEnabled = isOn\n                ToastBehaviorManager.await.isTappedDismissEnabled = isOn\n            case .topDirection:\n                direction = isOn ? .top : .bottom\n            }\n        case .longText:\n            guard let type = LongTextCellType(rawValue: cell.indexPath?.row ?? -1) else {return}\n            \n            switch type {\n            case .automaticDimension:\n                ToastAppearanceManager.default.height = isOn ? AutomaticDimension : 96\n            default:\n                break\n            }\n        default:\n            break\n        }\n    }\n    \n}\n"
  },
  {
    "path": "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>$(DEVELOPMENT_LANGUAGE)</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>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.2.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019 DongHee Kang\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": "README.md",
    "content": "# AwaitToast\n[![Build Status](https://travis-ci.org/k-lpmg/AwaitToast.svg?branch=master)](https://travis-ci.org/k-lpmg/AwaitToast)\n![Swift](https://img.shields.io/badge/Swift-5.0-orange.svg)\n[![Cocoapods](https://img.shields.io/cocoapods/v/AwaitToast.svg?style=flat)](https://cocoapods.org/pods/AwaitToast)\n[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n\n🍞 An async waiting toast with basic toast. Inspired by facebook posting toast.\n\n## Introduction\n<p float=\"left\">\n<img src=\"https://user-images.githubusercontent.com/15151687/55480707-e1187580-565b-11e9-8922-765f5bede2f4.png\" width=\"400\" height=\"830\">\n<img src=\"https://user-images.githubusercontent.com/15151687/55480723-e675c000-565b-11e9-9780-2406e2648ae3.png\" width=\"400\" height=\"830\">\n</p>\n<p float=\"left\">\n<img src=\"https://user-images.githubusercontent.com/15151687/55480760-f4c3dc00-565b-11e9-8bcd-63ae9b5113da.gif\" width=\"400\" height=\"830\">\n<img src=\"https://user-images.githubusercontent.com/15151687/55480767-f68d9f80-565b-11e9-8d47-1ed4f1c59be9.gif\" width=\"400\" height=\"830\">\n</p>\n\n## Usage\n\n#### Default\n```swift\nlet toast: Toast = Toast.default(text: \"Toast is started\")\n\n// Show\ntoast.show()\n\n// Dismiss\ntoast.dismiss()\n\n// Bottom Direction\nToast.default(text: \"Toast is started\", direction: .bottom)\n```\n\n#### Await\n```swift\nlet awaitToast: AwaitToast = AwaitToast.default(initialText: \"Toast is started\", endText: \"Toast is ended\")\n\n// Show\nawaitToast.show()\n\n// Finish\nawaitToast.finish()\n\n// Dismiss\nawaitToast.dismiss()\n```\n\n#### Dismiss\n```swift\n// Last toast in queue dismiss\nToast.latestDismiss()\nAwaitToast.latestDismiss()\n\n// All toast in queue dismiss\nToast.dismissAll()\nAwaitToast.dismissAll()\n```\n\n#### Appearance\n```swift\n// Get singleton appearance object\nlet defaultAppearance = ToastAppearanceManager.default\nlet iconAppearance = ToastAppearanceManager.icon\n\n// Update singletone appearance properties\ndefaultAppearance.height = 128\ndefaultAppearance.backgroundColor = .white\ndefaultAppearance.numberOfLines = 1\ndefaultAppearance.textAlignment = .left\n...\n```\n\n#### Behavior\n```swift\n// Get singleton behavior object\nlet defaultBehavior = ToastBehaviorManager.default\nlet awaitBehavior = ToastBehaviorManager.await\n\n// Update singletone behavior properties\ndefaultBehavior.isTappedDismissEnabled = false\ndefaultBehavior.delay = 3.0\ndefaultBehavior.showDurarion = 0.3\ndefaultBehavior.duration = 3.0\ndefaultBehavior.dismissDuration = 0.3\n...\n```\n\n#### Self-sizing\n<img src=\"https://user-images.githubusercontent.com/15151687/55480769-f8576300-565b-11e9-9457-79e4b43ad087.gif\" width=\"400\" height=\"830\">\n\n```swift\nToastAppearanceManager.default.height = AutomaticDimension\nToastAppearanceManager.icon.height = AutomaticDimension\n```\n\n## Installation\n\n#### CocoaPods (iOS 9+)\n\n```ruby\nplatform :ios, '9.0'\nuse_frameworks!\n\ntarget '<Your Target Name>' do\n    pod 'AwaitToast'\nend\n```\n\n#### Carthage (iOS 9+)\n\n```ruby\ngithub \"k-lpmg/AwaitToast\"\n```\n\n\n## LICENSE\n\nThese works are available under the MIT license. See the [LICENSE][license] file\nfor more info.\n\n[license]: LICENSE\n"
  },
  {
    "path": "Sources/AwaitToast/Appearances/DefaultToastAppearance.swift",
    "content": "//\n//  DefaultToastAppearance.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\npublic final class DefaultToastAppearance: ToastAppearance {\n    \n    static var shared: DefaultToastAppearance = .init()\n    required init() {\n    }\n    \n    // EdgeInsets\n    public var titleEdgeInsets: UIEdgeInsets = UIEdgeInsets(top: 8, left: 16, bottom: 8, right: 16)\n    \n    // ToastView\n    public var height: CGFloat = 96\n    public var backgroundColor: UIColor = UIColor.black\n    \n    // TextLabel\n    public var numberOfLines: Int = 0\n    public var textAlignment: NSTextAlignment = .center\n    public var textFont: UIFont = UIFont.preferredFont(forTextStyle: .subheadline)\n    public var textColor: UIColor = .white\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Appearances/IconToastAppearance.swift",
    "content": "//\n//  IconToastAppearance.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\npublic final class IconToastAppearance: ToastAppearance {\n    \n    static var shared: IconToastAppearance = .init()\n    required init() {\n    }\n    \n    // EdgeInsets\n    public var titleEdgeInsets: UIEdgeInsets = UIEdgeInsets(top: 16, left: 8, bottom: 16, right: 16)\n    public var imageEdgeInsets: UIEdgeInsets = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 8)\n    \n    // ToastView\n    public var height: CGFloat = 96\n    public var backgroundColor: UIColor = UIColor.black\n\n    // ImageView\n    public var imageContentMode: UIView.ContentMode = .scaleToFill\n    public var imageTintColor: UIColor? = nil\n    \n    // TextLabel\n    public var numberOfLines: Int = 0\n    public var textAlignment: NSTextAlignment = .left\n    public var textFont: UIFont = UIFont.preferredFont(forTextStyle: .subheadline)\n    public var textColor: UIColor = .white\n    \n}\n\n"
  },
  {
    "path": "Sources/AwaitToast/Appearances/ToastAppearance.swift",
    "content": "//\n//  ToastAppearance.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nprotocol ToastAppearance: class {\n    \n    static var shared: Self { get set }\n    \n    init()\n    \n    // EdgeInsets\n    var titleEdgeInsets: UIEdgeInsets { get set }\n    \n    // ToastView\n    var height: CGFloat { get set }\n    var backgroundColor: UIColor { get set }\n    \n    // TextLabel\n    var numberOfLines: Int { get set }\n    var textAlignment: NSTextAlignment { get set }\n    var textFont: UIFont { get set }\n    var textColor: UIColor { get set }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Appearances/ToastAppearanceManager.swift",
    "content": "//\n//  ToastAppearanceManager.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic enum ToastAppearanceManager {\n    public static var `default` = DefaultToastAppearance.shared\n    public static var icon = IconToastAppearance.shared\n}\n"
  },
  {
    "path": "Sources/AwaitToast/AwaitToast.swift",
    "content": "//\n//  AwaitToast.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 03/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic class AwaitToast: ToastCompatiable {\n    \n    // MARK: - Properties\n    \n    static var operationQueue: OperationQueue = {\n        let queue = OperationQueue()\n        queue.name = \"com.k-lpmg.AwaitToast.operationQueue\"\n        return queue\n    }()\n    \n    // MARK: - Class methods\n    \n    public class func latestDismiss() {\n        operationQueue.operations.last?.cancel()\n    }\n    \n    public class func dismissAll() {\n        operationQueue.cancelAllOperations()\n    }\n    \n    // MARK: - Public methods\n    \n    public func finish() {\n        toastAbstractMethod()\n    }\n    \n    public func show() {\n        toastAbstractMethod()\n    }\n    \n    public func dismiss() {\n        toastAbstractMethod()\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Behaviors/AwaitToastBehavior.swift",
    "content": "//\n//  AwaitToastBehavior.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 03/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic final class AwaitToastBehavior: ToastBehavior {\n    \n    static var shared: AwaitToastBehavior = .init()\n    required init() {\n    }\n    \n    public var isTappedDismissEnabled: Bool = true\n    \n    public var delay: TimeInterval = 0.0\n    \n    public var showDurarion: TimeInterval = 0.2\n    \n    public var finishDurarion: TimeInterval = 0.2\n    \n    public var dismissDelayWhenFinish: TimeInterval = 0.4\n    \n    public var dismissDuration: TimeInterval = 0.2\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Behaviors/DefaultToastBehavior.swift",
    "content": "//\n//  DefaultToastBehavior.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic final class DefaultToastBehavior: ToastBehavior {\n    \n    static var shared: DefaultToastBehavior = .init()\n    required init() {\n    }\n    \n    public var isTappedDismissEnabled: Bool = true\n    \n    public var delay: TimeInterval = 0.0\n    \n    public var showDurarion: TimeInterval = 0.2\n    \n    public var duration: TimeInterval = 3.0\n    \n    public var dismissDuration: TimeInterval = 0.2\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Behaviors/ToastBehavior.swift",
    "content": "//\n//  ToastBehavior.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nprotocol ToastBehavior {\n    \n    static var shared: Self { get set }\n    \n    init()\n    \n    var isTappedDismissEnabled: Bool { get set }\n    \n    var delay: TimeInterval { get set }\n    \n    var showDurarion: TimeInterval { get set}\n    \n    var dismissDuration: TimeInterval { get set }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Behaviors/ToastBehaviorManager.swift",
    "content": "//\n//  ToastBehaviorManager.swift\n//  Example\n//\n//  Created by DongHeeKang on 04/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic enum ToastBehaviorManager {\n    public static var `default` = DefaultToastBehavior.shared\n    public static var await = AwaitToastBehavior.shared\n}\n"
  },
  {
    "path": "Sources/AwaitToast/Operations/AwaitToastOperation.swift",
    "content": "//\n//  AwaitToastOperation.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport Foundation\n\nclass AwaitToastOperation<A>: ToastOperation<A, AwaitToastBehavior> where A: ToastAppearance {\n    \n    // MARK: - Properties\n    \n    private var initialWorkItem: DispatchWorkItem?\n    private lazy var finishWorkkItem: DispatchWorkItem = DispatchWorkItem { [weak self] in\n        guard let self = self, let view = self.view as? AwaitToastView else {return}\n        \n        view.finish(duration: self.behavior.finishDurarion) {\n            DispatchQueue.main.asyncAfter(deadline: .now() + self.behavior.dismissDelayWhenFinish, execute: {\n                self.dismiss()\n            })\n        }\n    }\n    \n    // MARK: - Overridden: Operation\n    \n    override func main() {\n        initialWorkItem = DispatchWorkItem { [weak self] in\n            guard let self = self else {return}\n            \n            self.showToast()\n        }\n        DispatchQueue.main.asyncAfter(deadline: .now() + behavior.delay, execute: initialWorkItem!)\n    }\n    \n    override func cancel() {\n        super.cancel()\n        \n        initialWorkItem?.cancel()\n        dismiss()\n    }\n    \n    // MARK: - Internal methods\n    \n    func finish() {\n        DispatchQueue.main.async(execute: finishWorkkItem)\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Operations/DefaultToastOperation.swift",
    "content": "//\n//  ToastOperation.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 01/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport Foundation\n\nclass DefaultToastOperation<A>: ToastOperation<A, DefaultToastBehavior> where A: ToastAppearance {\n    \n    // MARK: - Properties\n    \n    private var workItem: DispatchWorkItem?\n    \n    // MARK: - Overridden: Operation\n    \n    override func main() {\n        workItem = DispatchWorkItem { [weak self] in\n            guard let self = self else {return}\n            \n            defer {\n                DispatchQueue.main.asyncAfter(deadline: .now() + self.behavior.duration, execute: {\n                    guard self.workItem?.isCancelled == false else {return}\n                    \n                    self.dismiss()\n                })\n            }\n            \n            self.showToast()\n        }\n        DispatchQueue.main.async(execute: workItem!)\n    }\n    \n    override func cancel() {\n        super.cancel()\n        \n        workItem?.cancel()\n        dismiss()\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Operations/ToastDynamicDispatch.swift",
    "content": "//\n//  ToastDynamicDispatch.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nfinal class ToastDynamicDispatch {\n    \n    weak var view: UIView?\n    unowned let operation: Operation\n    \n    init(view: UIView? = nil, operation: Operation) {\n        self.view = view\n        self.operation = operation\n        setSelector()\n    }\n    \n    // MARK: - Private methods\n    \n    private func setSelector() {\n        view?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(viewTapped)))\n    }\n    \n    // MARK: - Private selector\n    \n    @objc func viewTapped() {\n        operation.cancel()\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Operations/ToastOperation.swift",
    "content": "//\n//  ToastOperation.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport Foundation\n\nfileprivate let kIsFinished = \"isFinished\"\n\nclass ToastOperation<A, B>: Operation where A: ToastAppearance, B: ToastBehavior {\n    \n    // MARK: - Properties\n    \n    var view: ToastView<A>\n    let behavior: B = B.shared\n    \n    private var _dynamicDispatch: ToastDynamicDispatch!\n    \n    // MARK: - Con(De)structor\n    \n    init(view: ToastView<A>) {\n        self.view = view\n        super.init()\n        \n        _dynamicDispatch = .init(view: behavior.isTappedDismissEnabled ? view : nil, operation: self)\n    }\n    \n    // MARK: - Overridden: Operation\n    \n    private var _finished = false\n    override var isFinished: Bool {\n        get {\n            return _finished\n        }\n        set {\n            willChangeValue(forKey: kIsFinished)\n            _finished = newValue\n            didChangeValue(forKey: kIsFinished)\n        }\n    }\n    \n    override func main() {\n        toastAbstractMethod()\n    }\n    \n    // MARK: - Internal methods\n    \n    func dismiss(completion: ((Bool) -> Void)? = nil) {\n        self.isFinished = true\n        \n        let toOriginX = view.frame.origin.x\n        let toOriginY: CGFloat\n        switch view.direction {\n        case .top:\n            toOriginY = -view.bounds.height\n        case .bottom:\n            toOriginY = view.frame.origin.y + view.bounds.height\n        }\n        \n        UIView.animate(withDuration: behavior.dismissDuration,\n                       animations: {\n                        self.view.frame.origin = CGPoint(x: toOriginX, y: toOriginY)\n        },\n                       completion: { (_) in\n                        self.view.removeFromSuperview()\n        })\n    }\n    \n    func showToast() {\n        guard let window = UIApplication.shared.keyWindow else {return}\n        \n        window.addSubview(view)\n        view.translatesAutoresizingMaskIntoConstraints = false\n        view.leadingAnchor.constraint(equalTo: window.leadingAnchor).isActive = true\n        view.trailingAnchor.constraint(equalTo: window.trailingAnchor).isActive = true\n        if view.appearance.height == AutomaticDimension {\n            view.heightAnchor.constraint(greaterThanOrEqualToConstant: 0).isActive = true\n        } else {\n            let safeAreaPadding: CGFloat\n            switch view.direction {\n            case .top:\n                safeAreaPadding = UIApplication.shared.statusBarFrame.size.height\n            case .bottom:\n                if #available(iOS 11.0, *), let window = UIApplication.shared.keyWindow {\n                    safeAreaPadding = window.safeAreaInsets.bottom\n                } else {\n                    safeAreaPadding = 0\n                }\n            }\n            view.heightAnchor.constraint(equalToConstant: view.appearance.height + safeAreaPadding).isActive = true\n        }\n        \n        let initialViewYAnchor: NSLayoutConstraint\n        let toViewYAnchor: NSLayoutConstraint\n        switch self.view.direction {\n        case .top:\n            initialViewYAnchor = self.view.bottomAnchor.constraint(equalTo: window.topAnchor)\n            toViewYAnchor = self.view.topAnchor.constraint(equalTo: window.topAnchor)\n        case .bottom:\n            initialViewYAnchor = self.view.topAnchor.constraint(equalTo: window.bottomAnchor)\n            toViewYAnchor = self.view.bottomAnchor.constraint(equalTo: window.bottomAnchor)\n        }\n        initialViewYAnchor.isActive = true\n        window.layoutIfNeeded()\n        \n        UIView.animate(withDuration: behavior.showDurarion) {\n            initialViewYAnchor.isActive = false\n            toViewYAnchor.isActive = true\n            window.layoutIfNeeded()\n        }\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toast.swift",
    "content": "//\n//  Toast.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic class Toast: ToastCompatiable {\n    \n    // MARK: - Properties\n    \n    static var operationQueue: OperationQueue = {\n        let queue = OperationQueue()\n        queue.name = \"com.k-lpmg.Toast.operationQueue\"\n        return queue\n    }()\n    \n    // MARK: - Class methods\n    \n    public class func latestDismiss() {\n        operationQueue.operations.last?.cancel()\n    }\n    \n    public class func dismissAll() {\n        operationQueue.cancelAllOperations()\n    }\n    \n    // MARK: - Public methods\n    \n    public func show() {\n        toastAbstractMethod()\n    }\n    \n    public func dismiss() {\n        toastAbstractMethod()\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/ToastCompatiable.swift",
    "content": "//\n//  ToastCompatiable.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nprotocol ToastCompatiable {\n    static var operationQueue: OperationQueue { get set }\n    func show()\n    func dismiss()\n}\n"
  },
  {
    "path": "Sources/AwaitToast/ToastDirection.swift",
    "content": "//\n//  ToastDirection.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 01/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic enum ToastDirection {\n    case top\n    case bottom\n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/AwaitToastProducer.swift",
    "content": "//\n//  AwaitToastProducer.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 03/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nclass AwaitToastProducer<A>: AwaitToast where A: ToastAppearance {\n    \n    var view: AwaitToastView<A>!\n    \n    private let _operation: AwaitToastOperation<A>\n    \n    init(view: AwaitToastView<A>) {\n        self.view = view\n        self._operation = AwaitToastOperation<A>(view: view)\n    }\n    \n    override func show() {\n        type(of: self).operationQueue.addOperation(_operation)\n    }\n    \n    override func finish() {\n        _operation.finish()\n    }\n    \n    override func dismiss() {\n        _operation.cancel()\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/AwaitToastView.swift",
    "content": "//\n//  AwaitToastView.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nclass AwaitToastView<A>: ToastView<A> where A: ToastAppearance {\n    \n    var endTextLabelFrame: CGRect {\n        let titleEdgeInsets = appearance.titleEdgeInsets\n        \n        let originY: CGFloat\n        switch direction {\n        case .top:\n            originY = -contentView.bounds.height\n        case .bottom:\n            originY = contentView.bounds.height\n        }\n        let originX = titleEdgeInsets.left\n        let width = contentView.bounds.width - titleEdgeInsets.left - titleEdgeInsets.right\n        let height = contentView.bounds.height - titleEdgeInsets.top - titleEdgeInsets.bottom\n        return CGRect(x: originX, y: originY, width: width, height: height)\n    }\n    \n    var endTextLabelToOriginY: CGFloat {\n        return appearance.titleEdgeInsets.top\n    }\n    \n    func finish(duration: TimeInterval, completion: (() -> Void)? = nil) {\n        toastAbstractMethod()\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Default/AwaitDefault.swift",
    "content": "//\n//  AwaitDefault.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nextension AwaitToast {\n    \n    public static func `default`(initialText: String, endText: String, direction: ToastDirection = .top) -> AwaitToast {\n        return AwaitDefault(initialText: initialText, endText: endText, direction: direction)\n    }\n    \n    public static func `default`(initialAttributedString: NSAttributedString, endAttributedString: NSAttributedString, direction: ToastDirection = .top) -> AwaitToast {\n        return AwaitDefault(initialAttributedString: initialAttributedString, endAttributedString: endAttributedString, direction: direction)\n    }\n    \n}\n\nfinal private class AwaitDefault: AwaitToastProducer<DefaultToastAppearance> {\n    \n    init(initialText: String, endText: String, direction: ToastDirection) {\n        super.init(view: AwaitDefaultToastView(initialText: initialText, endText: endText, direction: direction))\n    }\n    \n    init(initialAttributedString: NSAttributedString, endAttributedString: NSAttributedString, direction: ToastDirection) {\n        super.init(view: AwaitDefaultToastView(initialAttributedString: initialAttributedString, endAttributedString: endAttributedString, direction: direction))\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Default/AwaitDefaultToastView.swift",
    "content": "//\n//  AwaitDefaultToastView.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nclass AwaitDefaultToastView: AwaitToastView<DefaultToastAppearance> {\n    \n    // MARK: - Properties\n    \n    let initialText: String?\n    let endText: String?\n    let initialAttributedString: NSAttributedString?\n    let endAttributedString: NSAttributedString?\n    \n    // MARK: - UI Components\n    \n    lazy var initialTextLabel: UILabel = {\n        let label = UILabel()\n        label.translatesAutoresizingMaskIntoConstraints = false\n        label.numberOfLines = appearance.numberOfLines\n        label.textAlignment = appearance.textAlignment\n        label.font = appearance.textFont\n        label.textColor = appearance.textColor\n        return label\n    }()\n    lazy var endTextLabel: UILabel = {\n        let label = UILabel()\n        label.numberOfLines = appearance.numberOfLines\n        label.textAlignment = appearance.textAlignment\n        label.font = appearance.textFont\n        label.textColor = appearance.textColor\n        return label\n    }()\n    \n    // MARK: - Con(De)structor\n    \n    init(initialText: String, endText: String, direction: ToastDirection) {\n        self.initialText = initialText\n        self.endText = endText\n        self.initialAttributedString = nil\n        self.endAttributedString = nil\n        super.init(direction: direction)\n        \n        commonInit()\n        initialTextLabel.text = initialText\n        endTextLabel.text = endText\n    }\n    \n    init(initialAttributedString: NSAttributedString, endAttributedString: NSAttributedString, direction: ToastDirection) {\n        self.initialText = nil\n        self.endText = nil\n        self.initialAttributedString = initialAttributedString\n        self.endAttributedString = endAttributedString\n        super.init(direction: direction)\n        \n        commonInit()\n        initialTextLabel.attributedText = initialAttributedString\n        endTextLabel.attributedText = endAttributedString\n    }\n    \n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    // MARK: - Overridden: AwaitToastView\n    \n    override func finish(duration: TimeInterval, completion: (() -> Void)? = nil) {\n        initialTextLabel.removeFromSuperview()\n        \n        contentView.addSubview(endTextLabel)\n        endTextLabel.frame = endTextLabelFrame\n        \n        UIView.animate(withDuration: duration, animations: {\n            var frame = self.endTextLabel.frame\n            frame.origin.y = self.endTextLabelToOriginY\n            self.endTextLabel.frame = frame\n        }) { (_) in\n            completion?()\n        }\n    }\n    \n    // MARK: - Internal methods\n    \n    func commonInit() {\n        contentView.addSubview(initialTextLabel)\n        layout()\n    }\n    \n}\n\n// MARK: - Layout\n\nextension AwaitDefaultToastView {\n    \n    private func layout() {\n        let titleEdgeInsets = appearance.titleEdgeInsets\n        initialTextLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: titleEdgeInsets.left).isActive = true\n        initialTextLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: titleEdgeInsets.top).isActive = true\n        initialTextLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -titleEdgeInsets.right).isActive = true\n        initialTextLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -titleEdgeInsets.bottom).isActive = true\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Default/Default.swift",
    "content": "//\n//  Default.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nextension Toast {\n    \n    public static func `default`(text: String, direction: ToastDirection = .top) -> Toast {\n        return Default(text: text, direction: direction)\n    }\n    \n    public static func `default`(attributedString: NSAttributedString, direction: ToastDirection = .top) -> Toast {\n        return Default(attributedString: attributedString, direction: direction)\n    }\n    \n}\n\nfinal private class Default: DefaultToastProducer<DefaultToastAppearance> {\n    \n    init(text: String, direction: ToastDirection) {\n        super.init(view: DefaultToastView(text: text, direction: direction))\n    }\n    \n    init(attributedString: NSAttributedString, direction: ToastDirection) {\n        super.init(view: DefaultToastView(attributedString: attributedString, direction: direction))\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Default/DefaultToastView.swift",
    "content": "//\n//  DefaultToastView.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 01/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nclass DefaultToastView: ToastView<DefaultToastAppearance> {\n    \n    // MARK: - Properties\n    \n    let text: String?\n    let attributedString: NSAttributedString?\n    \n    // MARK: - UI Components\n    \n    lazy var textLabel: UILabel = {\n        let label = UILabel()\n        label.translatesAutoresizingMaskIntoConstraints = false\n        label.numberOfLines = appearance.numberOfLines\n        label.textAlignment = appearance.textAlignment\n        label.font = appearance.textFont\n        label.textColor = appearance.textColor\n        return label\n    }()\n    \n    // MARK: - Con(De)structor\n    \n    init(text: String, direction: ToastDirection) {\n        self.text = text\n        self.attributedString = nil\n        super.init(direction: direction)\n        \n        commonInit()\n        textLabel.text = text\n    }\n    \n    init(attributedString: NSAttributedString, direction: ToastDirection) {\n        self.text = nil\n        self.attributedString = attributedString\n        super.init(direction: direction)\n        \n        commonInit()\n        textLabel.attributedText = attributedString\n    }\n    \n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    // MARK: - Internal methods\n    \n    func commonInit() {\n        contentView.addSubview(textLabel)\n        layout()\n    }\n    \n}\n\n// MARK: - Layout\n\nextension DefaultToastView {\n    \n    private func layout() {\n        let titleEdgeInsets = appearance.titleEdgeInsets\n        textLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: titleEdgeInsets.left).isActive = true\n        textLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: titleEdgeInsets.top).isActive = true\n        textLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -titleEdgeInsets.right).isActive = true\n        textLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -titleEdgeInsets.bottom).isActive = true\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/DefaultToastProducer.swift",
    "content": "//\n//  DefaultToastProducer.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nclass DefaultToastProducer<A>: Toast where A: ToastAppearance {\n    \n    var view: ToastView<A>!\n    \n    private let _operation: DefaultToastOperation<A>\n    \n    init(view: ToastView<A>) {\n        self.view = view\n        self._operation = DefaultToastOperation<A>(view: view)\n    }\n    \n    override func show() {\n        type(of: self).operationQueue.addOperation(_operation)\n    }\n    \n    override func dismiss() {\n        _operation.cancel()\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Icon/AwaitIcon.swift",
    "content": "//\n//  AwaitIcon.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nextension AwaitToast {\n    \n    public static func icon(image: UIImage, imageLocation: IconImageLocation = .left, initialText: String, endText: String, direction: ToastDirection = .top) -> AwaitToast {\n        return AwaitIcon(image: image, imageLocation: imageLocation, initialText: initialText, endText: endText, direction: direction)\n    }\n    \n    public static func icon(image: UIImage, imageLocation: IconImageLocation = .left, initialAttributedString: NSAttributedString, endAttributedString: NSAttributedString, direction: ToastDirection = .top) -> AwaitToast {\n        return AwaitIcon(image: image, imageLocation: imageLocation, initialAttributedString: initialAttributedString, endAttributedString: endAttributedString, direction: direction)\n    }\n    \n}\n\nfinal private class AwaitIcon: AwaitToastProducer<IconToastAppearance> {\n    \n    init(image: UIImage, imageLocation: IconImageLocation, initialText: String, endText: String, direction: ToastDirection) {\n        super.init(view: AwaitIconToastView(image: image, imageLocation: imageLocation, initialText: initialText, endText: endText, direction: direction))\n    }\n    \n    init(image: UIImage, imageLocation: IconImageLocation, initialAttributedString: NSAttributedString, endAttributedString: NSAttributedString, direction: ToastDirection) {\n        super.init(view: AwaitIconToastView(image: image, imageLocation: imageLocation, initialAttributedString: initialAttributedString, endAttributedString: endAttributedString, direction: direction))\n    }\n    \n}\n\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Icon/AwaitIconToastView.swift",
    "content": "//\n//  AwaitIconToastView.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nclass AwaitIconToastView: AwaitToastView<IconToastAppearance> {\n    \n    // MARK: - Constants\n    \n    private enum Const {\n        static let imageSize = CGSize(width: 24, height: 24)\n    }\n    \n    // MARK: - Properties\n    \n    let image: UIImage?\n    let imageLocation: IconImageLocation\n    let initialText: String?\n    let endText: String?\n    let initialAttributedString: NSAttributedString?\n    let endAttributedString: NSAttributedString?\n    \n    // MARK: - UI Components\n    \n    lazy var imageView: UIImageView = {\n        let imageView = UIImageView()\n        imageView.translatesAutoresizingMaskIntoConstraints = false\n        imageView.image = image\n        imageView.contentMode = appearance.imageContentMode\n        imageView.tintColor = appearance.imageTintColor\n        return imageView\n    }()\n    lazy var initialTextLabel: UILabel = {\n        let label = UILabel()\n        label.translatesAutoresizingMaskIntoConstraints = false\n        label.numberOfLines = appearance.numberOfLines\n        label.textAlignment = appearance.textAlignment\n        label.font = appearance.textFont\n        label.textColor = appearance.textColor\n        return label\n    }()\n    lazy var endTextLabel: UILabel = {\n        let label = UILabel()\n        label.numberOfLines = appearance.numberOfLines\n        label.textAlignment = appearance.textAlignment\n        label.font = appearance.textFont\n        label.textColor = appearance.textColor\n        return label\n    }()\n    \n    // MARK: - Con(De)structor\n    \n    init(image: UIImage, imageLocation: IconImageLocation, initialText: String, endText: String, direction: ToastDirection) {\n        self.image = image\n        self.imageLocation = imageLocation\n        self.initialText = initialText\n        self.endText = endText\n        self.initialAttributedString = nil\n        self.endAttributedString = nil\n        super.init(direction: direction)\n        \n        commonInit()\n        initialTextLabel.text = initialText\n        endTextLabel.text = endText\n    }\n    \n    init(image: UIImage, imageLocation: IconImageLocation, initialAttributedString: NSAttributedString, endAttributedString: NSAttributedString, direction: ToastDirection) {\n        self.image = image\n        self.imageLocation = imageLocation\n        self.initialText = nil\n        self.endText = nil\n        self.initialAttributedString = initialAttributedString\n        self.endAttributedString = endAttributedString\n        super.init(direction: direction)\n        \n        commonInit()\n        initialTextLabel.attributedText = initialAttributedString\n        endTextLabel.attributedText = endAttributedString\n    }\n    \n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    // MARK: - Overridden: AwaitToastView\n    \n    override func finish(duration: TimeInterval, completion: (() -> Void)? = nil) {\n        let imageViewFrame = imageView.frame\n        let initialTextLabelFrame = initialTextLabel.frame\n        initialTextLabel.removeFromSuperview()\n        imageView.removeFromSuperview()\n        \n        imageView.translatesAutoresizingMaskIntoConstraints = true\n        contentView.addSubview(imageView)\n        contentView.addSubview(endTextLabel)\n        \n        var frame = endTextLabelFrame\n        frame.origin.x = initialTextLabelFrame.origin.x\n        endTextLabel.frame = frame\n        imageView.frame = CGRect(x: imageViewFrame.origin.x, y: frame.origin.y, width: Const.imageSize.width, height: Const.imageSize.height)\n        \n        UIView.animate(withDuration: duration, animations: {\n            var endTextLabelFrame = self.endTextLabel.frame\n            endTextLabelFrame.origin.y = self.endTextLabelToOriginY\n            self.endTextLabel.frame = endTextLabelFrame\n\n            let imageEdgeInsets = self.appearance.imageEdgeInsets\n            var imageViewFrame = self.imageView.frame\n            imageViewFrame.origin.y = endTextLabelFrame.midY - Const.imageSize.height/2 + imageEdgeInsets.top - imageEdgeInsets.bottom\n            self.imageView.frame = imageViewFrame\n        }) { (_) in\n            completion?()\n        }\n    }\n    \n    // MARK: - Internal methods\n    \n    func commonInit() {\n        contentView.addSubview(imageView)\n        contentView.addSubview(initialTextLabel)\n        layout()\n    }\n    \n}\n\n// MARK: - Layout\n\nextension AwaitIconToastView {\n    \n    private func layout() {\n        let titleEdgeInsets = appearance.titleEdgeInsets\n        let imageEdgeInsets = appearance.imageEdgeInsets\n        \n        let imageViewTopConstant = imageEdgeInsets.top - imageEdgeInsets.bottom\n        imageView.centerYAnchor.constraint(equalTo: contentView.centerYAnchor, constant: imageViewTopConstant).isActive = true\n        imageView.widthAnchor.constraint(equalToConstant: Const.imageSize.width).isActive = true\n        imageView.heightAnchor.constraint(equalToConstant: Const.imageSize.height).isActive = true\n        \n        initialTextLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: titleEdgeInsets.top).isActive = true\n        initialTextLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -titleEdgeInsets.bottom).isActive = true\n        \n        switch imageLocation {\n        case .left:\n            imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: imageEdgeInsets.left).isActive = true\n            \n            let textLabelLeftConstant = titleEdgeInsets.left + imageEdgeInsets.right\n            initialTextLabel.leadingAnchor.constraint(equalTo: imageView.trailingAnchor, constant: textLabelLeftConstant).isActive = true\n            initialTextLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -titleEdgeInsets.right).isActive = true\n        case .right:\n            imageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -imageEdgeInsets.right).isActive = true\n            \n            let textLabelRightConstant = titleEdgeInsets.right + imageEdgeInsets.left\n            initialTextLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: titleEdgeInsets.left).isActive = true\n            initialTextLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -textLabelRightConstant).isActive = true\n        }\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Icon/Icon.swift",
    "content": "//\n//  Icon.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nextension Toast {\n    \n    public static func icon(image: UIImage, imageLocation: IconImageLocation = .left, text: String, direction: ToastDirection = .top) -> Toast {\n        return Icon(image: image, imageLocation: imageLocation, text: text, direction: direction)\n    }\n    \n    public static func icon(image: UIImage, imageLocation: IconImageLocation = .left, attributedString: NSAttributedString, direction: ToastDirection = .top) -> Toast {\n        return Icon(image: image, imageLocation: imageLocation, attributedString: attributedString, direction: direction)\n    }\n    \n}\n\nfinal private class Icon: DefaultToastProducer<IconToastAppearance> {\n    \n    init(image: UIImage, imageLocation: IconImageLocation, text: String, direction: ToastDirection) {\n        super.init(view: IconToastView(image: image, imageLocation: imageLocation, text: text, direction: direction))\n    }\n    \n    init(image: UIImage, imageLocation: IconImageLocation, attributedString: NSAttributedString, direction: ToastDirection) {\n        super.init(view: IconToastView(image: image, imageLocation: imageLocation, attributedString: attributedString, direction: direction))\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Icon/IconImageLocation.swift",
    "content": "//\n//  IconImageLocation.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 02/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic enum IconImageLocation {\n    case left\n    case right\n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/Icon/IconToastView.swift",
    "content": "//\n//  IconToastView.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 01/03/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nclass IconToastView: ToastView<IconToastAppearance> {\n    \n    // MARK: - Constants\n    \n    private enum Const {\n        static let imageSize = CGSize(width: 24, height: 24)\n    }\n    \n    // MARK: - Properties\n    \n    let image: UIImage?\n    let imageLocation: IconImageLocation\n    let text: String?\n    let attributedString: NSAttributedString?\n    \n    // MARK: - UI Components\n    \n    lazy var imageView: UIImageView = {\n        let imageView = UIImageView()\n        imageView.translatesAutoresizingMaskIntoConstraints = false\n        imageView.image = image\n        imageView.contentMode = appearance.imageContentMode\n        imageView.tintColor = appearance.imageTintColor\n        return imageView\n    }()\n    lazy var textLabel: UILabel = {\n        let label = UILabel()\n        label.translatesAutoresizingMaskIntoConstraints = false\n        label.numberOfLines = appearance.numberOfLines\n        label.textAlignment = appearance.textAlignment\n        label.font = appearance.textFont\n        label.textColor = appearance.textColor\n        return label\n    }()\n    \n    // MARK: - Con(De)structor\n    \n    init(image: UIImage, imageLocation: IconImageLocation, text: String, direction: ToastDirection) {\n        self.image = image\n        self.imageLocation = imageLocation\n        self.text = text\n        self.attributedString = nil\n        super.init(direction: direction)\n        \n        commonInit()\n        textLabel.text = text\n    }\n    \n    init(image: UIImage, imageLocation: IconImageLocation, attributedString: NSAttributedString, direction: ToastDirection) {\n        self.image = image\n        self.imageLocation = imageLocation\n        self.text = nil\n        self.attributedString = attributedString\n        super.init(direction: direction)\n        \n        commonInit()\n        textLabel.attributedText = attributedString\n    }\n    \n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n    // MARK: - Internal methods\n    \n    func commonInit() {\n        contentView.addSubview(imageView)\n        contentView.addSubview(textLabel)\n        layout()\n    }\n    \n}\n\n// MARK: - Layout\n\nextension IconToastView {\n    \n    private func layout() {\n        let titleEdgeInsets = appearance.titleEdgeInsets\n        let imageEdgeInsets = appearance.imageEdgeInsets\n        \n        let imageViewTopConstant = imageEdgeInsets.top - imageEdgeInsets.bottom\n        imageView.centerYAnchor.constraint(equalTo: textLabel.centerYAnchor, constant: imageViewTopConstant).isActive = true\n        imageView.widthAnchor.constraint(equalToConstant: Const.imageSize.width).isActive = true\n        imageView.heightAnchor.constraint(equalToConstant: Const.imageSize.height).isActive = true\n        \n        textLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: titleEdgeInsets.top).isActive = true\n        textLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -titleEdgeInsets.bottom).isActive = true\n        \n        switch imageLocation {\n        case .left:\n            imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: imageEdgeInsets.left).isActive = true\n            \n            let textLabelLeftConstant = titleEdgeInsets.left + imageEdgeInsets.right\n            textLabel.leadingAnchor.constraint(equalTo: imageView.trailingAnchor, constant: textLabelLeftConstant).isActive = true\n            textLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -titleEdgeInsets.right).isActive = true\n        case .right:\n            imageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -imageEdgeInsets.right).isActive = true\n            \n            let textLabelRightConstant = titleEdgeInsets.right + imageEdgeInsets.left\n            textLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: titleEdgeInsets.left).isActive = true\n            textLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -textLabelRightConstant).isActive = true\n        }\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Toasts/ToastView.swift",
    "content": "//\n//  ToastView.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nimport UIKit\n\nclass ToastView<A>: UIView where A: ToastAppearance {\n    \n    // MARK: - NSLayoutConstraints\n    \n    private var contentViewTop: NSLayoutConstraint?\n    \n    // MARK: - Properties\n    \n    let appearance: A = A.shared\n    let direction: ToastDirection\n    \n    // MARK: - UI Components\n    \n    let contentView: UIView = {\n        let view = UIView()\n        return view\n    }()\n    \n    // MARK: - Con(De)structor\n    \n    init(direction: ToastDirection) {\n        self.direction = direction\n        super.init(frame: .zero)\n        \n        backgroundColor = appearance.backgroundColor\n        addSubview(contentView)\n        layout()\n    }\n    \n    required init?(coder aDecoder: NSCoder) {\n        fatalError(\"init(coder:) has not been implemented\")\n    }\n    \n}\n\n// MARK: - Layout\n\nextension ToastView {\n    \n    private func layout() {\n        contentView.translatesAutoresizingMaskIntoConstraints = false\n        contentView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true\n        contentView.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true\n        \n        let topConstant: CGFloat\n        let bottomConstant: CGFloat\n        switch direction {\n        case .top:\n            topConstant = UIApplication.shared.statusBarFrame.size.height\n            bottomConstant = 0\n        case .bottom:\n            topConstant = 0\n            if #available(iOS 11.0, *), let window = UIApplication.shared.keyWindow {\n                bottomConstant = window.safeAreaInsets.bottom\n            } else {\n                bottomConstant = 0\n            }\n        }\n        contentView.topAnchor.constraint(equalTo: topAnchor, constant: topConstant).isActive = true\n        contentView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -bottomConstant).isActive = true\n    }\n    \n}\n"
  },
  {
    "path": "Sources/AwaitToast/Utils/GlobalConstants.swift",
    "content": "//\n//  GlobalConstants.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 01/04/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\npublic let AutomaticDimension: CGFloat = -1\n"
  },
  {
    "path": "Sources/AwaitToast/Utils/GlobalFunction.swift",
    "content": "//\n//  GlobalFunction.swift\n//  AwaitToast\n//\n//  Created by DongHeeKang on 28/02/2019.\n//  Copyright © 2019 k-lpmg. All rights reserved.\n//\n\nfunc toastAbstractMethod(file: StaticString = #file, line: UInt = #line) -> Swift.Never {\n    toastFatalError(\"Abstract method\", file: file, line: line)\n}\n\nfunc toastFatalError(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) -> Swift.Never  {\n    fatalError(lastMessage(), file: file, line: line)\n}\n"
  }
]