From 7196940e22daf8c1c16cd4e92338457c318e3825 Mon Sep 17 00:00:00 2001 From: Jeroen Arnoldus Date: Sat, 16 May 2015 14:20:24 +0200 Subject: [PATCH] Swift serial programming example --- .gitignore | 5 + swift-serial/Podfile | 2 + .../swift-serial.xcodeproj/project.pbxproj | 306 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/swift-serial.xccheckout | 41 +++ .../UserInterfaceState.xcuserstate | Bin 0 -> 33194 bytes .../xcschemes/swift-serial.xcscheme | 88 +++++ .../xcschemes/xcschememanagement.plist | 22 ++ .../contents.xcworkspacedata | 10 + .../xcshareddata/swift-serial.xccheckout | 41 +++ .../UserInterfaceState.xcuserstate | Bin 0 -> 58372 bytes .../SwiftSerial-Bridging-Header.h | 15 + swift-serial/swift-serial/main.swift | 84 +++++ 13 files changed, 621 insertions(+) create mode 100644 .gitignore create mode 100644 swift-serial/Podfile create mode 100644 swift-serial/swift-serial.xcodeproj/project.pbxproj create mode 100644 swift-serial/swift-serial.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 swift-serial/swift-serial.xcodeproj/project.xcworkspace/xcshareddata/swift-serial.xccheckout create mode 100644 swift-serial/swift-serial.xcodeproj/project.xcworkspace/xcuserdata/jeroen.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 swift-serial/swift-serial.xcodeproj/xcuserdata/jeroen.xcuserdatad/xcschemes/swift-serial.xcscheme create mode 100644 swift-serial/swift-serial.xcodeproj/xcuserdata/jeroen.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 swift-serial/swift-serial.xcworkspace/contents.xcworkspacedata create mode 100644 swift-serial/swift-serial.xcworkspace/xcshareddata/swift-serial.xccheckout create mode 100644 swift-serial/swift-serial.xcworkspace/xcuserdata/jeroen.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 swift-serial/swift-serial/SwiftSerial-Bridging-Header.h create mode 100644 swift-serial/swift-serial/main.swift diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0e5d06 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ + +*.lock + +Pods* + diff --git a/swift-serial/Podfile b/swift-serial/Podfile new file mode 100644 index 0000000..c1ab413 --- /dev/null +++ b/swift-serial/Podfile @@ -0,0 +1,2 @@ +pod "ORSSerialPort" + diff --git a/swift-serial/swift-serial.xcodeproj/project.pbxproj b/swift-serial/swift-serial.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ba2bc11 --- /dev/null +++ b/swift-serial/swift-serial.xcodeproj/project.pbxproj @@ -0,0 +1,306 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 9077ECF71B07527700620FA8 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9077ECF61B07527700620FA8 /* main.swift */; }; + 9EFD83C20C205F18B7AB4AFE /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3282D1F93D7C771EFB207C92 /* libPods.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9077ECF11B07527700620FA8 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 3282D1F93D7C771EFB207C92 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9055E52F1B075E76001F2DE8 /* SwiftSerial-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SwiftSerial-Bridging-Header.h"; sourceTree = ""; }; + 9077ECF31B07527700620FA8 /* swift-serial */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "swift-serial"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9077ECF61B07527700620FA8 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + DFA55435514141205F14C4E5 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; + DFC8DE0C88A1D329FA0E61EE /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9077ECF01B07527700620FA8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9EFD83C20C205F18B7AB4AFE /* libPods.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 49AE15A2659C3877B066639E /* Pods */ = { + isa = PBXGroup; + children = ( + DFC8DE0C88A1D329FA0E61EE /* Pods.debug.xcconfig */, + DFA55435514141205F14C4E5 /* Pods.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + 9077ECEA1B07527700620FA8 = { + isa = PBXGroup; + children = ( + 9077ECF51B07527700620FA8 /* swift-serial */, + 9077ECF41B07527700620FA8 /* Products */, + 49AE15A2659C3877B066639E /* Pods */, + 9BE0B00F0D170DF929DEC213 /* Frameworks */, + ); + sourceTree = ""; + }; + 9077ECF41B07527700620FA8 /* Products */ = { + isa = PBXGroup; + children = ( + 9077ECF31B07527700620FA8 /* swift-serial */, + ); + name = Products; + sourceTree = ""; + }; + 9077ECF51B07527700620FA8 /* swift-serial */ = { + isa = PBXGroup; + children = ( + 9077ECF61B07527700620FA8 /* main.swift */, + 9055E52F1B075E76001F2DE8 /* SwiftSerial-Bridging-Header.h */, + ); + path = "swift-serial"; + sourceTree = ""; + }; + 9BE0B00F0D170DF929DEC213 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3282D1F93D7C771EFB207C92 /* libPods.a */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9077ECF21B07527700620FA8 /* swift-serial */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9077ECFA1B07527700620FA8 /* Build configuration list for PBXNativeTarget "swift-serial" */; + buildPhases = ( + 4D38556F7555B501E82DEE3C /* Check Pods Manifest.lock */, + 9077ECEF1B07527700620FA8 /* Sources */, + 9077ECF01B07527700620FA8 /* Frameworks */, + 9077ECF11B07527700620FA8 /* CopyFiles */, + 3E03A69BBD563A48C6B346D0 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "swift-serial"; + productName = "swift-serial"; + productReference = 9077ECF31B07527700620FA8 /* swift-serial */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9077ECEB1B07527700620FA8 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0620; + ORGANIZATIONNAME = Repleo; + TargetAttributes = { + 9077ECF21B07527700620FA8 = { + CreatedOnToolsVersion = 6.2; + }; + }; + }; + buildConfigurationList = 9077ECEE1B07527700620FA8 /* Build configuration list for PBXProject "swift-serial" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 9077ECEA1B07527700620FA8; + productRefGroup = 9077ECF41B07527700620FA8 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9077ECF21B07527700620FA8 /* swift-serial */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3E03A69BBD563A48C6B346D0 /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 4D38556F7555B501E82DEE3C /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9077ECEF1B07527700620FA8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9077ECF71B07527700620FA8 /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 9077ECF81B07527700620FA8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_OBJC_BRIDGING_HEADER = "swift-serial/SwiftSerial-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9077ECF91B07527700620FA8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_OBJC_BRIDGING_HEADER = "swift-serial/SwiftSerial-Bridging-Header.h"; + }; + name = Release; + }; + 9077ECFB1B07527700620FA8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DFC8DE0C88A1D329FA0E61EE /* Pods.debug.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 9077ECFC1B07527700620FA8 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DFA55435514141205F14C4E5 /* Pods.release.xcconfig */; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9077ECEE1B07527700620FA8 /* Build configuration list for PBXProject "swift-serial" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9077ECF81B07527700620FA8 /* Debug */, + 9077ECF91B07527700620FA8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9077ECFA1B07527700620FA8 /* Build configuration list for PBXNativeTarget "swift-serial" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9077ECFB1B07527700620FA8 /* Debug */, + 9077ECFC1B07527700620FA8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9077ECEB1B07527700620FA8 /* Project object */; +} diff --git a/swift-serial/swift-serial.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift-serial/swift-serial.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1e1c8a2 --- /dev/null +++ b/swift-serial/swift-serial.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/swift-serial/swift-serial.xcodeproj/project.xcworkspace/xcshareddata/swift-serial.xccheckout b/swift-serial/swift-serial.xcodeproj/project.xcworkspace/xcshareddata/swift-serial.xccheckout new file mode 100644 index 0000000..d22fee5 --- /dev/null +++ b/swift-serial/swift-serial.xcodeproj/project.xcworkspace/xcshareddata/swift-serial.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 1E72F1E0-14CE-4FB1-863E-5F0A861BF610 + IDESourceControlProjectName + swift-serial + IDESourceControlProjectOriginsDictionary + + 135544444C6A1E93921E33931AC0FC7B37D0F13A + https://github.com/bjarnoldus/osx-swift-serial.git + + IDESourceControlProjectPath + swift-serial/swift-serial.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + 135544444C6A1E93921E33931AC0FC7B37D0F13A + ../../.. + + IDESourceControlProjectURL + https://github.com/bjarnoldus/osx-swift-serial.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + 135544444C6A1E93921E33931AC0FC7B37D0F13A + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + 135544444C6A1E93921E33931AC0FC7B37D0F13A + IDESourceControlWCCName + GITHUB-osx-swift-serial + + + + diff --git a/swift-serial/swift-serial.xcodeproj/project.xcworkspace/xcuserdata/jeroen.xcuserdatad/UserInterfaceState.xcuserstate b/swift-serial/swift-serial.xcodeproj/project.xcworkspace/xcuserdata/jeroen.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..8a8ab9806cb6932e6254d59fcc88c5e934d1d486 GIT binary patch literal 33194 zcmcJ22Y3_5^Y-oCNhjN2$qjc~wy`9Gd&e}(l57iX%Sdvg3E395Y+)G}0ttlMB#_=n z@3i!U^h!b+siY7}dT+l}LV6G1+@4OBTnHrp4<4|5ntgY6c6MfVc5k=6-{T$}%FjPQ zA&RCLiltIRXq~#sH8AM*_O(v+w)eO?h6dZFItMzs-SF5xb;#QvNuiCK?}(sh zQyitBqNr#phRUL*QPZhxDu>FY@~C{OfGVU)sae!)Y5`@XY?Pg9qME4|s+DS^7E+6- z#Z)`hL3LC8)JkfA8l;A(6R7nRPn}9_q%NQ?q&86(Q8!b!P`6UIQMXe&s5_`Tsk^AV zse7pVsfVdYsVAsssF$f%sJ+yy)IRDh>NDzp)aTR})R)vD>Q96ai)2WSI24K|qhyqV zQjr>^p>(7}Stt+XqjEF@%|!-eMDtK1YDSCE64Zg*XeAmzC!&+kspvGc0bPZzM%SQg z(RFAu+Jd&CZD>2X1>K77LU*G_(4%M*x*iCVC6Kjov};qL0xh=yP-! zeTRNQf6x>iN{7)(I)Dy^oc(mFbeo<`@=d2|t7Ojpu+x{5Z?M!Jz+KwD`W zZKqr4CFn6P>VeIk7ly`J7cpG9w?FQPA|ucoh|ucdFG@1*aiAEtNFkI|3Q zyXmLt7wDJiee`SeA^KbTF#R393!!n^vI1|kzFeywbGo8t1 za+q8uk11g)m@3A=7@0bzo@rpLOe@pIEMz(v7qgt{V!9bOvw~U2oXo6ecm^}4FsHI7 zvL~~rup8Jj*t6O5*bCW<*~{1~*=yL%>^AlW_Gb1r_73)L_CEGOb|<@weS+Q1KFhwq zzQpcj_p`6DZ?f;O@3SAVpR%8`U$KYS@7N#NU)bN-zhsn*k;!EtvPm+fEK(LDi<2eF zQenk+|_FDsIj%4W!B$>z$cWF}dyY`&~Pwm@c=wa6CAmdKXLI%LabZkb2s zl?}*-WvgW;$xfDG*=e%VWoOCGm0cjaNOr003fa}N>ttJH*UN5_-74E5yGwSj>;c)s zvPWf)%bt=wBYR%`U1_>BB$jt zxk4T$50^*Cqvf&k1bMPtEzgi^%R>*YpyjeMTGUfw9T$(!YE z^2Kt8yj|{+cguU_ee#v^A^8dN6XomVy!=%8M){fYbL8jCH_0!NUoO8&eyx0qe7pQc z`7QF><#)>Ok>4+WNdAcYG5M47r{&Md_sCzCzbZcj zz5FNnukt_Se{+aqIgShECUYt-ikrg4b4gq(m(FE!I&M0b%N20NTp3rv&E_gO16R$N zxjN3mS-B>zm0QFuVH`>7BrlnSFJ zQA#SZrNNfl>sm9o5PtgXR`b*jk8^NvD>a!4=V_kVN~x#_p5N~ThH887EKUcra(p?nxW=_X1|rBUfr2Jn$UX{dC5G9S*X z_z2)h!6(9}tffLN?!Hd%3DpD66)uM=4IWqqI$Z;1MH#Fe&c)&nARPp{o z=DunW$6&{R%hgx!?S%4k0@)5K=qT1#8OlnG#W`g&s%PXB7Z(_Fs)|eVbM#gD218L% zaZ#zE%%RE-1Q1ypsl2Jry>i%P?gUY|m%Cj94pl0U>pO`)IFDP8MZXfCUBC2Eyl>l;7 z?xV`6a%u)uu~6*xJ`iN9_|Y{8+Myp9aIV=31T$M3Y!>3#6jDddp=yMVoJ&O}n@7#3>Zp47WZ@H_`;z!%ej2|VK6&{phiZy` za1b1;vv0`M=^pY94AwcEv)#|B zdC0Y5Q0%Kts%tCdqL%Y&Uc>7o*}EwZ6}gq_p?di=K7A{-g6iWl_^Ev65`YQRF%|qS zw7uTh)#n}>?sPR~RPq%0Bli6;wQ6yL&FBU_^!7OiptFamnNl^Ysgp)kvkt1!@|hWx zUUdKnrcPPfV5=V=+pZv>N6&d=ay!p~WJBmBQW;8z%>rhx(PK(*U51Uk^yW$F`z z)G1gm-&nQ+!@xN_Fo2nI_7A!`fts{ND80Jh+1Kgn6k8}16ZCJeYK?tOKbV0S;XzQF z0bLM8Ae=zzGk#DRSfJ6|I8>2=^fd$C;eIF(ebPz!+3I}3h!mF0$X1t@`)$a*)P0-z z3bB75pdJJr@^!z>HMEU-fO?3U+0DP%rX&zKYMZx;w2yYZeENs|8(B7w)HC3o7+G^#*U` zEqta#@HX`UrQ1%uL%mDAN4?LR_-ej}uiZ|4NPR?oOnt(e`8vLyZy-am)91SCyd6$q zcnr1;4!66BrrC!;q>Gk=2dQ@r4m!JBVpF~nEbG_&JYM-0^(}Rn`i}aZ`T?5!BlQ#Y zGxZDgEA<=vZG*qR!%y9s0paT@QS{M;T7$ItB7>mBHsoI6f_hf;1F%%z$k(7dqkz2~ zJQa1s_lKX)!|XwD8-G!MJ5;e?VC=5dLz0`9WVMYtf+%X{!~|dwpy=pgM2v{0x;FDV zhbl$i-|um$>zy6lITkgr*y|cl>pY!VYBHuAD!uPnhj+ya7$xfEP8c|y>J!{U-D=lr z_mEn!7U}}EZg|k8&RL}%@~Q`2F15RFl}}7r3*2IriV+1xVdS$#JOB~qaX z6iHo*qInx{=bQLuunH|Vpea;3ii3X%D3Nc4alaJ)E#sYn1_^%G@ZZp)|hMYsggZ}S)w#K1S3SaxIgit_gTL#Lc zBDbKaeA^bJ;TH-qom&dZs__HV^6eu4 z^HIH@!v?;C&yq?kKsLeM?&0-Yke%-w`Jx522_;&2*A~KO*1{D|cV8|sEmGm7Xqix0 z@YTr4ckx-GzJOoehFoYl>f*ck9^T_OT&M@F2y&VR8qM2JDgRI?FX0B#MPj?O@5qO;K1=p1w| zIuD)C_wy_H0e+Al;)nTF{0aPOaBFB21ZlNYExHt4hAu}}fHJRvFf9T8Zs#B5AL5@7 zI!Gn>Afu~&xU0)GAO=!XfDbVcBGEKxVqd3opi_vC1Y+?k7!u85qD1`NHr&1fM(DzT zf~qJeVRS8b4ts`34I;eS_oz`QJ~#wE%(Pxu zm*2pjxCPzBpCmLUQ>@(=b52x&)M>Y&9Rk4Z{Ms$(4t^bUFk-ohLJwQcnL-(Tl z(Ea?${Cb|>h8_fIKFni~;8vl-vVy7;My$&Q;cZ_R`REUhAhrbW9!%>S!K0toxV$S| zLj!9>&3qhu5PE_?g;z>U?M5$Bx*O5c=o$1ZdJa90UO;>JQ~A^Q4g5y_bp8zf%p1{5 z=w{Mr0P{I&4+Ivz&kVz4MKqjSh91QLrxo(Q)P;OI%3ONeQLI|TYe zv|sRz5YIM{Ia<7A@y7WsQToob8v0krrj10hi=^*}mz)arKG!MuhTP5}AsEahA$Oe@ z+-9Gk8v>tF>)%5k2=?NA{+uo7L;hT$3*sePD4|MTOANZvr-BGSAeZbiVGe~#;P#a7{U8@_NL*4u)o>K7V^A|W&g{yN`3l1p9 zze}zM(@kjMRswBLU@`OE%Q=Mmx3v2+|nzM!XD>39+Z!^f!gzUXN`goU6{ zbP}CR{mNg(U(Hkhp{g`Gef;j&N@oaNIDUi$u^XL9YaA*aXh4wgCK}6IX{`Wv%=C~c zns5%Ru22^gRuq<3l$1MET7M@B(>c+wNZprT(j;Z21^!TjE}<)6vOt&8Wpp_`gTJ1?fxnTzX*)fWo<+~5=kPc4ckp-dck@}T zb*|+k$IxbVcXg9b3q^k-rk2PoP0B;~y_(NL(I$GHP)#*mL)X$~{ucgL{x<&h?J%pX zr6FemE;xbT0ZtfvRbsOf5(&Z-Pngw{nV{8qf*7wkR0+Y~`rL)B!z;`b)j?m9;@$yp zv7!NkqzerBAQFNuSWPN&b{ck;VNI69j?FEIL|&!;coAK@S6 zGuvPQiAtMM>0TC8<0bUvL1nI>ujC)&9~Zoj5MfK9iWsmhew>s&Kwn31rni8GZUy_a zoxUFCX9HgEkf=#Q6w?4gg(+2+tIs_=DAr6o-s&Ooo4Eb~_X^13jQNUx0Y=S}{7bLV zH_|sj1vk^T(6>S*Tj?FJUUCQ3)(VSNp3VVRUvs|`{vTS@G2%%?}9uUUjgZ$IMmibXK#-I6DV|4U!rC3`lJU)dsOZ8@~tGd{LMV3sz;1(30&SWHGBsze4W?0|$LQeugr*Q@7Hu z3KsTQ$wg1IpFZGFWgJ5dTj_%W`mvBo1LSr3BT9D*{RaIe{TBT;{SN&u{T}^3{Q>xvR4tRwXX4`PTz~pGB8AKBp zC5_`?ZQkL54wqrXP%|=y1GC7;`FFQ43jRHqDUXCp=nxr{=ld9EluQKBj>Of{beoA` zVg-;X{0Cc@IR2v`5GI*`eCSX$Er&S;M8$bckQ*P&>v0WuU4407?xDOIv%R*dD#tsx zIwvs6mp9=rxvPaJyC39|Co!jHGQp)XX-qnk!A#{p=0D*-TeEP{QFsJIVL^EU&PJ28#>hkWV=E zfaQ#F$Q|M{5>7!jRY(o`48PRWe5O!xWlRzOxzCj`rQph#GNzpWg8$m@%9xqVoItn4 z%w;P1FZr(ox0E*0Wd8(On7ECE-x-yiK~9b_F|~nc)Cy)EtPgx6IN-HBacL0EPuKur zHW>?;O{S4Q%qtHtHb|2~e9YLHCZ?HbX&WRF3`_+1ANcS2?=brH|Ciom=y!6qny-}7 z3JbG{fhC%4%wlE8;x!lCC)Ws zw3`t?Ce=Yg)F3KxDW_;0%@$Dt1uCHkNrV6pQBJ2(U3aK{WHvAxnbVmwm@}EPn6sI4 zm~)x)nDdznm1ojJDEqAN10vBW6a~s z6U>v$Q_ODWY33Q`S>`$BdFBOX5A!1P67w?i3bU7amD$JaXAUq2nb(-tnKzg>nYWm? znRl3XnfI9YnGcu`nU9!{nNOHcna`O2F`qMEFkdoXF<&#^Fo&3LnZwL?%=gR>%#X}Z z%+Jg(%&*LE%3(wv}yT7qW}k#q1JxDeGXDu}-#~?O;1u7rUJ8V!K&4+r##< z9(D!W$9ma*b|pK&4zfe+FuRI9fnALejS-8H3?n&497YO^LNE%&C=8=X7){0~93v%0 zDvTm9io_@iqiBp`Fq(oA0)YK+n_O2;Szqp28WVx+-H zi;)haER3dMG##UCjB+r_#V8M>e2fY(D#WM=qhgFoFe=5U45M<4W?)o-(M*hHVFUwl z4n}h^s>Dc-Q58l8jEoqWFsjC=2BTVx%oxqXXg)@D7}aCcfRP2GMvN94eDIv1n!FghQj3oyD6qfHoHgwe$qU4qf27+r?Z z$s=thig!supJ^aVy=V)PY8 zUt{zQMu#x^7Nf%$eTUKa82y0Jj~M-g(a*w)Xc&7EyOv$o1}Uk*Az{H7BL?=0ATskB zg1`?JtOwVw)fCQE#_*!&|#oJY3=CJHKqoWRc|*zLoC(i zI&(t}lsB5BI$=~nsmjr%{H-=O80wmgCP%GFZv<`~)mBTrLuja705mok>_L)&u?cXw zqv7<8jdf;&UeHg6sTCR_G~1zXG&?K}b!`$aFrJ}s;poCPgC1z>K(8%LR)fg_tuO&2 z7OTU@oL|&n2LM1l8h~h#PXq$TQhi`8fIJfk6CSk<_V&PFSi4q`j>BfI0Ztq2W_z8f z9)9|(0K)=h(k3helW(DvzfE9&fIfRddaKFTDr=L_sz$xNR$>n<78IR2s;I?YYqF9q z6q&59)7SX91KS2gGDa1Fj%qdw5*IpOR0DtigAs%hvB>D^_juO``|@BU*{$ZrAY8DJ zK$R3krLVJ_tPO%#Ypj;0Mu}^%p+_OLw175Bq+n%%G;spd`T#8jGYpiv2`C#))_Su| zXdtMCpd3;KV6>rFT2L_<%vI(FP-wFe)X!Y6uNk2S+Ya>VAbO*zvCh&a=zycnBC4IxdK(OBL8~QN zaIru;HHelFNT9^>6Z<9=`I!`n8>fiP-d5)yP`?qfV5PR18ui2m2l4Qyk8-|ipwHz| z!z5?e<665Gx(rN#qd{Nq$2>wPlhF8-AOx!Jif)K|d zVS5d+l2uI&M&Po}BDe*gh-6`eDszO&*j8t*0%KJVdSk8v?_+Np<@99Xq)h6VGEG*i zFy=<_5kaVv1E|3-`K+PPzl|d!O%_dPwIj6P{N{u0G@5M?f3(>g_4T@m7u0JhrYq+02AmBVq^)Un*z~*C;@5s1azt_nNX*VR5X^< zQ3Z-C30FND-PG!frXcdEveb#TPomBs)KMeoz)OS0(P;MLX$ZxX5elJI4lw0*Fpm;U z79rA%5D7ALv_L`*#uErYZ#6ogi>(mzjEFFs6p9%s1XiKeVR6{o8vVd|geH1~#$p9U zBIaAFyO5A11&|Qe2i4gvmbyUyBr74L0qQAw$vR^YRXL#wkhsu4rbbf(_-sQPjQna# z5Cby_eSkXqW2t(*4SL=Ip`^)R4=OW}sS!N0xmj?h zLV#p#@Dm#eaoGqlaJ`_(0)#$&1_RqfViXb+34;xMAgDROjSS5if)dkfZF7imnz;dt4!D-U za6{%GWpV?{7_26tO9j;;J`H4TAW<*?Kp3L8N`a!RofJ+8EKD3C1cjnUkc90bgz7*- zQ>)3)WY<@LLH0-25_vZvPo97rI;z^-D$({5+UbF`Bb-AY2o_JA*$LGm9V6fFX@*B6q( z^dU$)Pb7si0$UJJxXIqw1OpwWta`uJuRB_GK^2WeHvaL&AFVpESA26WsdcB45m~i z_O(=#(A9ngznv7w7*#-w723uvaVIH}I;w=#v~XPNdkFQcQPieZlCCg1AZybE$rT9O z0$Ss+HB~_xhq#@9c;)_ap?t}O|yk)49c-lkCs3$HX+Cho@<$of#HB|>VvsWi( zU$AYqHVEPBCF}!)IBjB9h}#j-sq&GqWi+pSV38n%g*>Z1AWI>G+%;fS9vg<=)01X`vlpaGrX&(ekO2p{;$wp|wt=+<(@Lf* z1_=Uk=KxW4Y!H5q$XGB~Ky4w<6CAC5aXd{lH~5B^RY;@;#_1A&kjX!G{={x0NhKJ3 zH4yngFk)#DGTr`e{FVS7gNg~=XlfwQA53o>Om(1cpj?(l0bgPdmKA`#Y5y!fL75$O zc8gT-CsMHJp9>0XSWRH+h)xB>hQAVo(qlt_PKOyxJ&celNVf^=7-Zo=_6Gsc|1*d< z;4F=HbG>`f5Qk zz>&X;m)8WA(?+P$( zEBaxN&VahwV_g&EWSVS2P$~j7j^2z9CC&N_K_F2R zG^q~WkQ;{A^wzEwI@kbfJr1+Y0sFKe@h>d3zynDtQwT)Cm?i~7_(q`KR_~Z^YJ+)< zQ7Ru#%8%{k;PM8C;3=8}GbLqKB!DCWko^w~7{Gi$<+ip4yIz{n$x}(uoPQ{4ZXh8q zjFEs8jXa%{t@wwsB)LHnLXzDcoez>{5}>hTEm#0P0fIjQd)Vj?B;`6%daU6ew=`H$ z7-8Um8ZBlaV^303Z4Luu*ZqTL`Y{1Q_y@xl1`GrtzMP8D7wtQ2pdBL-yF8Zwmi>dE zMsNg32vmaSck%*)@=v`yZqednV!$V0vUmsShw7$=ptwO^Mo`9%{&5A}sJDSoN11wg z1%VjrWr87WwXg~dF009(I+f2R1!w<*2u0`OOFK#{lVW@y&>fWoYpe;9m=MCW>C>gq z%+T68@yIg}sELQ}I8dU-Nkg}q08BiFB!B=PZfI9Qr1^MKDZK)0+sA;b=(WVHWVdkJ=#m1Rqb3URlTjo2I+7K$Vq?}jNxh&kf6L^mmtg%);eKU5|Hl#?Xf#x+!_Uq@tHusqI6Cm z#1`j(uokaw^m^PKu+dQL5W&F%N-ZoT2@{q&htK2t;kpRi*fDYxxJHu^_G*~@qU#|L zV}tJTA?#!lF0moZy-ilD#p-8h1worXMt(lDK^Sp*k4NqC#Ug?2G}M|5^Mwr_cF4>N zVPnuX1bII}ZumFI`YK3qK^F;~0kFogj$n|0*BuAAsE(wAj1~h~jSxd`A(n?(h+iVB z2=v%tGqFShpiT9Suzpx&F-l2u`I_VARM1tzXEkglAz_~0AS~s;-Wnn78sT&;fgU@E zCg#)+4dH>&(jpC_^#sWD@1$7;D_sI_!KoSfDFoB}?=YpNj)S{_;QlLxEiHD~Esml> zSk@prltyuU#($B55Gstr?b!s=`0u13gok4Vdme#2o^chRpXPdDmlHIf>>e5mejx$3 z9S6UDl_DD>AW5?jR8_F3)lGG<76t3BhWREK!;-FDeB4s@*C3h&tI6I3RyJ@Na2dg@ z`8Qlk=}FlA07jq|78Cr2;7WpO|2L>2rxJFx*#zr&0rK%zaSf^Bc+A)+VMtYgW3yWX zk@%rE6X@d^e-l7Am|BFylGK0O2=3S{$HYb_K>hTv&xq_=Ym(BM@*DoE2*@-FbWWTW zLxR~af}08S@mO-d2zHicOIEx(Px9gjW)wA=>S0~mOgCWuR=F*tVk-9f5w9;eEQ zJ|5y;-zFBwBS}ILRKg#GjP?F^llqqYyZWSNNV7C>*wA3uL_~JEjfphwBX!juXI;b* z3at>M4Khm>tT<#i8|>ARQa(tq|CIq~f^~S<(M1dw?Bj)~+^;`73F_F8d}3Ai>rYd| z{07(o2W;wVU?+ye=PrU+eH=0fP$9^!nP8U+$)X1AkCi|1U)UsZuhfGQo4X0(zZy7A z4Fs`HU*%srkUvY{j>icG$dSMad(-N{i}({>FZ^c?VaIKge`vq-pG8QvRKxBDNrZa| z;@Ff>fbIm$@QIeg6b>A-Fy(@gB(9kR1nT?$xy1y~FFIjP+-$bmn;-`=f+z9!+A;Fy zhl9GaDA?3uHZ3*h*!946GjJijV@81o;ucJ!(8U5w647BE5f-Z;Mt~K1`^c)Y{PX`+)zM37sLW=eyk<43Mv%NFqtOKQcH8 zGOXN-(;Bkt+*S)auLI@>97U>WI!0ZYxEg=t26GU2yG0O?6oPQf|4|)~q!RYy8HJ3L z1MFdoNiXFHIXS80s8hdy4w$$dkXA7XJ1>L4LkRe>nwxRKg~ef*@tKXVLSzsYB*6!b zB>lKaq=o{EP48Q#gXEICwN>aY)sO9}7!379A4nc+^ukUb? z1YwqNMuWRUt?zSs)|?27g^=SCKEfewVm@!p+O?4U6jW8%CqNcNVJo%1t_|k4zQMr7 z5GczrK#dC{q^kwqBwPpNcpz?;(BlaD?Ei!=VI>kQ<5(=R2?XRI9@8p~DygAhAN5A^ zrjhUgw&jm()!|YIWYuv))|=`r);6$I4d6io*8aIP0$6<9fHejwvA|88h$pdm(8>O> zk>fWZ{>BnBqPK$slM=0*mH?W@@^tKg4K_nH$+t>nMJV8N0IJ7W5a4b%nQLG z!Rv|=&vOZG>wm(9JwO8cCgCkeSc(<${U)QBf0L@IBGuUb&#HkJu^L-o&$~a%&6!9I zjsIsg)Xx`o)k*IdakT{gzx8dPoUE|+D+y;l!9Ln(|L499#D<8^&?v1ea18{#;r~o9 z&9HaeA8ITh;4^K)N$?}PYR1_;NM7)TK?rUV*1L!q6}OQ}La-C0S;vY*5J(Im?2!nD zY9UbhW1+*i7yrVHVngIS=?fB!ZUemopW%@q=Vh1 z!;Peqm8AE*w{cFcT{yzZcW4Nl2O^w-G@5Mu6Ayg{<#3&xE9ek7uAA$DlXEyXMt^MK zdNKMd=%^yDUpT4=qd)&o&z#8{bHXq;$gQSy+qofbm|Ml2fD!CfJA!En(`Y-lhC7i; z=hkAH#x%pLFwF`lxx_V!$Gl1Hw~rj?J$2MqzBA?xK}Urzsdaa{U@1~Gx$siws6x^i zMZu-W899BIp7MFCa4LL3dC|IN@pyPiz#F+U;G|XVbWF>)aA#tggZl`C7o_3P7V+qT zphIq?Qs;4SQr^wn`P>EEh1@3YBJN`D67Ev&GE9eHIuz4kn4W~`$(Rnuv=Y-GgNU2C zE8vu3IAV;uhP#%#j@wLWFdYf!jltn!n2y49G^S%PJq4a*wu$#Jz>x(D-Ge5NyGy)2 zV~Y6L2xm8SxXgnsZaDuFR>~K-2d!}L!->KXi}2oTAd#eta44VnIPgRU|3eY5+PT8* zSp%ml1Of=h+IWN=!*I}I;B)gJ90>;ZkPNvNt#Ee0u~!B8xdr)fqEP3mp-#dd93b1_ z^yI*)xBbI#+ZcHa(Is?;MOi#yjzW8I3#@C#@Dao*=rtT`Gz2{{{pf^M@ZOir z1xFtWmyEy}%}1ve>mWxOWmGE2L051ympYTC)Z?o7>)hMpHRm1fUG6oA>#>1jfFl?Y(17@v>txSz(u`I-BL`xVpK zn9jj;F5t{P9MqI>dTG0K7aF1&Rwkc0>)7r0Bbu9)!&R=j}*?v&6E!I35Hp!0)p@6RNjX|5&*{O^y542_x+ zKhE_p%PSu%m|L-M^>~DE{SVLUbrIe1UPs8e7Fqme)JI9B}$owDA1EkQmC0r?cPr38ntssJa<|3C9%Yc4B-}*$uO+MTUZoYxX^%+b8f{n9^NSV z1Jkp>9FLs-$TX9K8^0Szr4)sVq9!47b`hJ^O& ztD;HKqG(gBP^?m%q*$j|ufU4)6c;HjQCz0DT5+vnvtp~_PQ_D--HMkKuPHuOe6ILO z@w?(r#or-Jh%AH)2?>b|Ner15QV>!R(iqYb(izelvLeJAvNB|K$cZ6qLrxCiLpF!p z8}fR{Cn3Lt{1);@$X_8xLQyCaDhuU8Lqd~6Q$p3D>7i3YHKDrDX`$JnxuN-?^FtSg z_Jy7jdSU3zp^t{X8G0y878V|+42uX$2-Ak;h82g+4x1BJ8Dq*q4&`HWkiIb*I(oV{nG<}kN(y~b>Ogd-M=1KQV zdS=qzNuN&oZPFi;*~#+Bipdd^r%x`NTsOIWa_?l%3#6KOg>D_?zKx zhrbv8LHI}EKPr)uRmzni$}r_*Wr9+x%vRwUd6x2A<@w4@%8QkkDz_QvPR)#<8pROhKKP;F9OuiBy7sd`zpSG7-dK=qpH4b@w! zcU14GK2ZIj`bqVR>NnLNs=ri6B2WYqA&cN55+aHs^bxHQ9T96Hu8z1fVrRs25qlzD zir5>mFXBMNpOGPvlOn?-BO;?BV& zl0t67yNi=P_SSNu8pbk~^hn%8V&hQ!G;!OtDRAnsU~Z zi>BN>Wyh4=Q(l_#>y*D@b+MM%HL)9G&xk!M_MF%!Vqb`TDfX4vS7Seq{VDeEI4X{g zW8>s;%D9NQsJNK8*tqz(^tkM}vN%iJ;y71aSDZVpH*Q7Ts<_p0C&sOfJ2{SzyEblT z+s!|uj0Rn|2F>51eCxe$Pz*mCMAR?s1gzqG7|C=N)pNvW+co>s7$CzFeWr7 zI1>63HY8k^@NmK-3A+*=Pk1un?SxMfzDoEdF(FZts7sudn4OrLXh<|A)+Cw}=O@-D zHYc_vE=pXI*pui<>`UxVygqS9;?BfJ6CX=_BJt-WWl}^^R8mY*Y?3-DBPlaUo0Oll zFv*d0X40ml2a_I6`Z(!uvMiZP4oMD6o}8>qj!2G5j!BM9j!(`_&QC5(E>12>u1KDp zT$yZ0HYL|2o0FF%uS>oxd3*BC>hulio6;{%zcl^w^efY^PQNbww)8vF?@qrr{r>a^(;rTMB>kiG zzcVs3=4bR~T##`^=4qLyXP%XLZsrA<7iC_Wc}3>cnb&1*&AdMIrp#M2cVym`d2i+e znGa_^n)!INsqtR=Oni|bKO}(a3 zW79Ni+BAzb4o$nprRmo6YWg%QHA9*cG$(4-X?V@4nvI$>HRou~*KE>UqPbjimF8N_ z7R`3ejhb6Dw`=ay+@rZ)^N{8d&10G;HBW1v)9lf_ta(*)K=ZohEzP@{4>TWZKGS@m z`C9X>=6lUgnqM`4X#UnBEvx0Uq1wq>l{QK{MH{b8(xz(DwV7I-cDgoKTc9o0mT4=r zv$d64gSJ|0*4Ak)TC286+p1lpU8;3zJGEWf9_L_EYWW+OM>SwBKoe)c&IVUHg}g(lI)@E<`s;r_@F2Vsvr3L|uw5O*d7i z)lJjo=<;<%x>DT?-7MW)U6szHtJTfdHRu-T?79}+LfsPGGF`i_S2wI%t-DgUO?RK} z5#7_emvyh|zR-QI`zcGA6_=HmrO%p|RiD+HHI#Ki)@Tvv&I!wj&WX(_&6%51 zm9s3zo#V;5EN64hwwz~k_U7!*`8nrEE}c6)w>Y;f*Pgp1cUkVb+>N zFXg_L`)2M>xqs)OysW&!ypp^ndCT+Mc^mT1%eye|uDply9?knC@0+~C`C<9d`LX#W z`E&C1`HuYV{NDVt@-NE2H2>cGNAn-g|1kf{{BH`l0#!j&!OQ|4l!TRJmgJTcl+>3rm$a3vE7@3bX36y>J4)^<*;n#*$$O>p zQe|mmsiCy4)Kcmx9WGs6dR6K6(i=;kE!|tXzYLXymQ5}zD61%&UAClbd6~OxW7+v- zo64Rld$H`5vY*QSE=T2s9cpK(*I2W*waM-mDK{mJ>ERe0J&VxwETgyJq*zUOD^X+1Je8Jo|~+FU)>v_II;? zpZ(XIxpQjg%%5}aoJ;3iG3V7eZ_Rmku6l0P-0Zm>b3JptbMKw|=-kIEnaW9(%1V3X zlFDV3TPts^+)?><qoy&hv9R%s#tR!SZhWWl)5gyi6fT&#V9tU|7F@ev z%YwrTep~RTwbr`8YPVi)-D2Ht{lWUD^@y#?Hs97@yWY0Lc9%WIo?=h4WBXb5bM5ci zKeK<)RMa%9X>QYort_LEYEGU%PnA;y;(j zmME4iTjE~gS+aY{OH1}HOB(e*MY9ryWZ-0x9fwhkGj6?`mXDTuAjRbx)*hKc6W96bg$^{?_Sfr zwtIay?mn%1WA~Qs=el3({@cyDRqj~#RJYbW&7I@UcNe-V-SzH;?iKESxW9RodyRXo zd%gP<_XhVF?yKC_x;MMGy0^P;bl>8>-F>I~ZuhVC&`oH$@k3m7(F$fd7gTY-P7V(=vm@% zc)C43o_^0d&uO01J!g5&^<3<^%yXsZ8qal}n>@FA9`rozdC~KVXP@Vw=N-@co{v1A zdj97*?D=H{wL;jGKr}G literal 0 HcmV?d00001 diff --git a/swift-serial/swift-serial.xcodeproj/xcuserdata/jeroen.xcuserdatad/xcschemes/swift-serial.xcscheme b/swift-serial/swift-serial.xcodeproj/xcuserdata/jeroen.xcuserdatad/xcschemes/swift-serial.xcscheme new file mode 100644 index 0000000..ca9cf0b --- /dev/null +++ b/swift-serial/swift-serial.xcodeproj/xcuserdata/jeroen.xcuserdatad/xcschemes/swift-serial.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/swift-serial/swift-serial.xcodeproj/xcuserdata/jeroen.xcuserdatad/xcschemes/xcschememanagement.plist b/swift-serial/swift-serial.xcodeproj/xcuserdata/jeroen.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..6fbe89e --- /dev/null +++ b/swift-serial/swift-serial.xcodeproj/xcuserdata/jeroen.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + swift-serial.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9077ECF21B07527700620FA8 + + primary + + + + + diff --git a/swift-serial/swift-serial.xcworkspace/contents.xcworkspacedata b/swift-serial/swift-serial.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..b45e86a --- /dev/null +++ b/swift-serial/swift-serial.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/swift-serial/swift-serial.xcworkspace/xcshareddata/swift-serial.xccheckout b/swift-serial/swift-serial.xcworkspace/xcshareddata/swift-serial.xccheckout new file mode 100644 index 0000000..cabbabf --- /dev/null +++ b/swift-serial/swift-serial.xcworkspace/xcshareddata/swift-serial.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 128043BF-8FAA-425A-8E33-ECAEA4296E6D + IDESourceControlProjectName + swift-serial + IDESourceControlProjectOriginsDictionary + + 135544444C6A1E93921E33931AC0FC7B37D0F13A + https://github.com/bjarnoldus/osx-swift-serial.git + + IDESourceControlProjectPath + swift-serial/swift-serial.xcworkspace + IDESourceControlProjectRelativeInstallPathDictionary + + 135544444C6A1E93921E33931AC0FC7B37D0F13A + ../.. + + IDESourceControlProjectURL + https://github.com/bjarnoldus/osx-swift-serial.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + 135544444C6A1E93921E33931AC0FC7B37D0F13A + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + 135544444C6A1E93921E33931AC0FC7B37D0F13A + IDESourceControlWCCName + GITHUB-osx-swift-serial + + + + diff --git a/swift-serial/swift-serial.xcworkspace/xcuserdata/jeroen.xcuserdatad/UserInterfaceState.xcuserstate b/swift-serial/swift-serial.xcworkspace/xcuserdata/jeroen.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..f1d3817b83adaa9c12ab4352698a92bb02d566bf GIT binary patch literal 58372 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 !4s54}~1cyb7_;iYo0^ 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

{K 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 literal 0 HcmV?d00001 diff --git a/swift-serial/swift-serial/SwiftSerial-Bridging-Header.h b/swift-serial/swift-serial/SwiftSerial-Bridging-Header.h new file mode 100644 index 0000000..346906b --- /dev/null +++ b/swift-serial/swift-serial/SwiftSerial-Bridging-Header.h @@ -0,0 +1,15 @@ +// +// SwiftSerial-Bridging-Header.h +// swift-serial +// +// Created by Jeroen Arnoldus on 16-05-15. +// Copyright (c) 2015 Repleo. All rights reserved. +// + +#ifndef swift_serial_SwiftSerial_Bridging_Header_h +#define swift_serial_SwiftSerial_Bridging_Header_h + +#import "ORSSerialPort.h" +#import "ORSSerialPortManager.h" + +#endif diff --git a/swift-serial/swift-serial/main.swift b/swift-serial/swift-serial/main.swift new file mode 100644 index 0000000..c5978fc --- /dev/null +++ b/swift-serial/swift-serial/main.swift @@ -0,0 +1,84 @@ +// +// main.swift +// swift-serial - Simple demo application for Serial Port Programming in Swift +// +// Created by Jeroen Arnoldus on 16-05-15. +// Copyright (c) 2015 Repleo. All rights reserved. +// + +// Simplified version of: +// main.swift +// CommandLineDemo +// +// Created by Andrew Madsen on 4/13/15. +// Copyright (c) 2015 Open Reel Software. All rights reserved. +// + +// Note for compilation: +// Make sure you executed 'pod update' in the project root and opened the workspace file +// This file is dependent on the ORSSerialPort Library + +import Foundation + + +class StateMachine : NSObject, ORSSerialPortDelegate { + let standardInputFileHandle = NSFileHandle.fileHandleWithStandardInput() + var serialPort: ORSSerialPort? + + func runProcessingInput() { + setbuf(stdout, nil) + + standardInputFileHandle.readabilityHandler = { (fileHandle: NSFileHandle!) in + let data = fileHandle.availableData + dispatch_async(dispatch_get_main_queue(), { () -> Void in + self.handleUserInput(data) + }) + } + + self.serialPort = ORSSerialPort(path: "/dev/cu.Repleo-PL2303-00401414") // please adjust to your handle + self.serialPort?.baudRate = 9600 + self.serialPort?.delegate = self + serialPort?.open() + + NSRunLoop.currentRunLoop().run() // loop + } + + + func handleUserInput(dataFromUser: NSData) { + if let string = NSString(data: dataFromUser, encoding: NSUTF8StringEncoding) as? String { + + if string.lowercaseString.hasPrefix("exit") || + string.lowercaseString.hasPrefix("quit") { + println("Quitting...") + exit(EXIT_SUCCESS) + } + self.serialPort?.sendData(dataFromUser) + } + } + + // ORSSerialPortDelegate + + func serialPort(serialPort: ORSSerialPort, didReceiveData data: NSData) { + if let string = NSString(data: data, encoding: NSUTF8StringEncoding) { + print("\(string)") + } + } + + func serialPortWasRemovedFromSystem(serialPort: ORSSerialPort) { + self.serialPort = nil + } + + func serialPort(serialPort: ORSSerialPort, didEncounterError error: NSError) { + println("Serial port (\(serialPort)) encountered error: \(error)") + } + + func serialPortWasOpened(serialPort: ORSSerialPort) { + println("Serial port \(serialPort) was opened") + } +} + + +println("Starting serial test program") +println("To quit type: 'exit' or 'quit'") +StateMachine().runProcessingInput() +