osx: Initial import of the Objective-C App graphical user interface
authorMartin Willi <martin@revosec.ch>
Tue, 16 Dec 2014 16:13:44 +0000 (17:13 +0100)
committerMartin Willi <martin@revosec.ch>
Wed, 17 Dec 2014 15:53:45 +0000 (16:53 +0100)
27 files changed:
src/frontends/osx/charon-xpc/charon-xpc-Info.plist
src/frontends/osx/strongSwan.xcodeproj/project.pbxproj
src/frontends/osx/strongSwan/AppDelegate.h [new file with mode: 0644]
src/frontends/osx/strongSwan/AppDelegate.m [new file with mode: 0644]
src/frontends/osx/strongSwan/ConnController.h [new file with mode: 0644]
src/frontends/osx/strongSwan/ConnController.m [new file with mode: 0644]
src/frontends/osx/strongSwan/Control.h [new file with mode: 0644]
src/frontends/osx/strongSwan/Control.m [new file with mode: 0644]
src/frontends/osx/strongSwan/Helper.h [new file with mode: 0644]
src/frontends/osx/strongSwan/Helper.m [new file with mode: 0644]
src/frontends/osx/strongSwan/LogController.h [new file with mode: 0644]
src/frontends/osx/strongSwan/LogController.m [new file with mode: 0644]
src/frontends/osx/strongSwan/PasswordController.h [new file with mode: 0644]
src/frontends/osx/strongSwan/PasswordController.m [new file with mode: 0644]
src/frontends/osx/strongSwan/en.lproj/ConnWindow.xib [new file with mode: 0644]
src/frontends/osx/strongSwan/en.lproj/Credits.rtf [new file with mode: 0644]
src/frontends/osx/strongSwan/en.lproj/InfoPlist.strings [new file with mode: 0644]
src/frontends/osx/strongSwan/en.lproj/LogWindow.xib [new file with mode: 0644]
src/frontends/osx/strongSwan/en.lproj/MainMenu.xib [new file with mode: 0644]
src/frontends/osx/strongSwan/en.lproj/PasswordWindow.xib [new file with mode: 0644]
src/frontends/osx/strongSwan/icon-active.png [new file with mode: 0644]
src/frontends/osx/strongSwan/icon-alt.png [new file with mode: 0644]
src/frontends/osx/strongSwan/icon-large.icns [new file with mode: 0644]
src/frontends/osx/strongSwan/icon.png [new file with mode: 0644]
src/frontends/osx/strongSwan/main.m [new file with mode: 0644]
src/frontends/osx/strongSwan/strongSwan-Info.plist [new file with mode: 0644]
src/frontends/osx/strongSwan/strongSwan-Prefix.pch [new file with mode: 0644]

index e8ddd24..85e2e4d 100644 (file)
@@ -12,7 +12,7 @@
        <string>1.0</string>
        <key>SMAuthorizedClients</key>
        <array>
-               <string>identifier org.strongswan.osx and certificate leaf[subject.CN] = "Joe Developer"</string>
+               <string>identifier org.strongswan.osx and certificate leaf[subject.CN] = "Developer ID Application: revosec AG (SRXT3TB2PY)"</string>
        </array>
 </dict>
 </plist>
index 3b77d25..e7840e7 100644 (file)
@@ -7,22 +7,94 @@
        objects = {
 
 /* Begin PBXBuildFile section */
+               5B04A712174558F100A13BDC /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B04A711174558F100A13BDC /* icon.png */; };
+               5B04A7211747800F00A13BDC /* icon-alt.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B04A7201747800F00A13BDC /* icon-alt.png */; };
+               5B313F9A17A93D590055C86A /* icon-large.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5B313F9917A93D590055C86A /* icon-large.icns */; };
                5B74989217311B200041971E /* xpc_channels.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B74989117311B200041971E /* xpc_channels.c */; };
                5B7498B8173275D10041971E /* xpc_logger.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B7498B7173275D10041971E /* xpc_logger.c */; };
+               5B7FA5A11754D5DB00264BAC /* LogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7FA59F1754D5DB00264BAC /* LogController.m */; };
+               5B7FA5B01754EBC800264BAC /* ConnController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7FA5AE1754EBC800264BAC /* ConnController.m */; };
+               5B7FA5B51754F5AF00264BAC /* PasswordController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7FA5B31754F5AF00264BAC /* PasswordController.m */; };
+               5B8D879B1A40658B008E5702 /* Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B8D879A1A40658B008E5702 /* Helper.m */; };
+               5B8D879C1A409E4D008E5702 /* LogWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8D879E1A409E4D008E5702 /* LogWindow.xib */; };
+               5B8D879F1A409E5A008E5702 /* ConnWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8D87A11A409E5A008E5702 /* ConnWindow.xib */; };
+               5B8D87A21A409E6D008E5702 /* PasswordWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8D87A41A409E6D008E5702 /* PasswordWindow.xib */; };
+               5BAE9E9A17A94A2600858FE2 /* icon-active.png in Resources */ = {isa = PBXBuildFile; fileRef = 5BAE9E9917A94A2500858FE2 /* icon-active.png */; };
+               5BD1CCB11726DB0100587077 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCB01726DB0100587077 /* Cocoa.framework */; };
+               5BD1CCBB1726DB0100587077 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5BD1CCB91726DB0100587077 /* InfoPlist.strings */; };
+               5BD1CCBD1726DB0100587077 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD1CCBC1726DB0100587077 /* main.m */; };
+               5BD1CCC11726DB0100587077 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 5BD1CCBF1726DB0100587077 /* Credits.rtf */; };
+               5BD1CCC41726DB0100587077 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD1CCC31726DB0100587077 /* AppDelegate.m */; };
+               5BD1CCC71726DB0200587077 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD1CCC51726DB0200587077 /* MainMenu.xib */; };
                5BD1CCD71726DB4000587077 /* charon-xpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BD1CCD61726DB4000587077 /* charon-xpc.c */; };
+               5BD1CCDF1726DC0A00587077 /* org.strongswan.charon-xpc in Copy Files */ = {isa = PBXBuildFile; fileRef = 5BD1CCD11726DB4000587077 /* org.strongswan.charon-xpc */; };
+               5BD1CCEB1727CCA400587077 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 5BD1CCEA1727CCA400587077 /* README.md */; };
+               5BD1CCED1727D7AF00587077 /* ServiceManagement.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCEC1727D7AF00587077 /* ServiceManagement.framework */; };
+               5BD1CCF31727DE3E00587077 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCF21727DE3E00587077 /* Security.framework */; };
+               5BD1CCFB1729365F00587077 /* Control.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD1CCFA1729365F00587077 /* Control.m */; };
                5BF60F31173405A000E5D608 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCD31726DB4000587077 /* CoreFoundation.framework */; };
                5BF60F33173405AC00E5D608 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCF21727DE3E00587077 /* Security.framework */; };
                5BF60F3E1734070A00E5D608 /* xpc_dispatch.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B74984C172AA3550041971E /* xpc_dispatch.c */; };
                5BF60F631743C57500E5D608 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BF60F621743C57500E5D608 /* SystemConfiguration.framework */; };
 /* End PBXBuildFile section */
 
+/* Begin PBXContainerItemProxy section */
+               5BD1CCE81726E45200587077 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 5BD1CCA31726DB0100587077 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 5BD1CCD01726DB4000587077;
+                       remoteInfo = "charon-xpc";
+               };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+               5BD1CCDE1726DBF100587077 /* Copy Files */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 12;
+                       dstPath = Contents/Library/LaunchServices;
+                       dstSubfolderSpec = 1;
+                       files = (
+                               5BD1CCDF1726DC0A00587077 /* org.strongswan.charon-xpc in Copy Files */,
+                       );
+                       name = "Copy Files";
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXCopyFilesBuildPhase section */
+
 /* Begin PBXFileReference section */
+               5B04A711174558F100A13BDC /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = "<group>"; };
+               5B04A7201747800F00A13BDC /* icon-alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-alt.png"; sourceTree = "<group>"; };
+               5B313F9917A93D590055C86A /* icon-large.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "icon-large.icns"; sourceTree = "<group>"; };
                5B74984C172AA3550041971E /* xpc_dispatch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xpc_dispatch.c; sourceTree = "<group>"; };
                5B74984E172AA3670041971E /* xpc_dispatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xpc_dispatch.h; sourceTree = "<group>"; };
                5B74989017311AFC0041971E /* xpc_channels.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xpc_channels.h; sourceTree = "<group>"; };
                5B74989117311B200041971E /* xpc_channels.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xpc_channels.c; sourceTree = "<group>"; };
                5B7498B7173275D10041971E /* xpc_logger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xpc_logger.c; sourceTree = "<group>"; };
                5B7498B9173275DD0041971E /* xpc_logger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xpc_logger.h; sourceTree = "<group>"; };
+               5B7FA59E1754D5DB00264BAC /* LogController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogController.h; sourceTree = "<group>"; };
+               5B7FA59F1754D5DB00264BAC /* LogController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LogController.m; sourceTree = "<group>"; };
+               5B7FA5AD1754EBC800264BAC /* ConnController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConnController.h; sourceTree = "<group>"; };
+               5B7FA5AE1754EBC800264BAC /* ConnController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConnController.m; sourceTree = "<group>"; };
+               5B7FA5B21754F5AF00264BAC /* PasswordController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasswordController.h; sourceTree = "<group>"; };
+               5B7FA5B31754F5AF00264BAC /* PasswordController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PasswordController.m; sourceTree = "<group>"; };
+               5B8D87991A406572008E5702 /* Helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Helper.h; sourceTree = "<group>"; };
+               5B8D879A1A40658B008E5702 /* Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Helper.m; sourceTree = "<group>"; };
+               5B8D879D1A409E4D008E5702 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/LogWindow.xib; sourceTree = "<group>"; };
+               5B8D87A01A409E5A008E5702 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ConnWindow.xib; sourceTree = "<group>"; };
+               5B8D87A31A409E6D008E5702 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/PasswordWindow.xib; sourceTree = "<group>"; };
+               5BAE9E9917A94A2500858FE2 /* icon-active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-active.png"; sourceTree = "<group>"; };
+               5BD1CCAC1726DB0100587077 /* strongSwan.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = strongSwan.app; sourceTree = BUILT_PRODUCTS_DIR; };
+               5BD1CCB01726DB0100587077 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
+               5BD1CCB81726DB0100587077 /* strongSwan-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "strongSwan-Info.plist"; sourceTree = "<group>"; };
+               5BD1CCBA1726DB0100587077 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+               5BD1CCBC1726DB0100587077 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+               5BD1CCBE1726DB0100587077 /* strongSwan-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "strongSwan-Prefix.pch"; sourceTree = "<group>"; };
+               5BD1CCC01726DB0100587077 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
+               5BD1CCC21726DB0100587077 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+               5BD1CCC31726DB0100587077 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+               5BD1CCC61726DB0200587077 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; };
+               5BD1CCD11726DB4000587077 /* org.strongswan.charon-xpc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "org.strongswan.charon-xpc"; sourceTree = BUILT_PRODUCTS_DIR; };
                5BD1CCD31726DB4000587077 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
                5BD1CCD61726DB4000587077 /* charon-xpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "charon-xpc.c"; sourceTree = "<group>"; };
                5BD1CCE01726DCD000587077 /* charon-xpc-Launchd.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "charon-xpc-Launchd.plist"; sourceTree = "<group>"; };
                5BD1CCEA1727CCA400587077 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = "<group>"; };
                5BD1CCEC1727D7AF00587077 /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = System/Library/Frameworks/ServiceManagement.framework; sourceTree = SDKROOT; };
                5BD1CCF21727DE3E00587077 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+               5BD1CCF91729365F00587077 /* Control.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Control.h; sourceTree = "<group>"; };
+               5BD1CCFA1729365F00587077 /* Control.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Control.m; sourceTree = "<group>"; };
                5BF60F621743C57500E5D608 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+               5BD1CCA91726DB0100587077 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               5BD1CCF31727DE3E00587077 /* Security.framework in Frameworks */,
+                               5BD1CCED1727D7AF00587077 /* ServiceManagement.framework in Frameworks */,
+                               5BD1CCB11726DB0100587077 /* Cocoa.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                5BD1CCCE1726DB4000587077 /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        isa = PBXGroup;
                        children = (
                                5BD1CCEA1727CCA400587077 /* README.md */,
+                               5BD1CCB61726DB0100587077 /* strongSwan */,
                                5BD1CCD51726DB4000587077 /* charon-xpc */,
                                5BD1CCAF1726DB0100587077 /* Frameworks */,
                                5BD1CCAD1726DB0100587077 /* Products */,
                5BD1CCAD1726DB0100587077 /* Products */ = {
                        isa = PBXGroup;
                        children = (
+                               5BD1CCAC1726DB0100587077 /* strongSwan.app */,
                                5BD1CCD11726DB4000587077 /* org.strongswan.charon-xpc */,
                        );
                        name = Products;
                                5BF60F621743C57500E5D608 /* SystemConfiguration.framework */,
                                5BD1CCF21727DE3E00587077 /* Security.framework */,
                                5BD1CCEC1727D7AF00587077 /* ServiceManagement.framework */,
+                               5BD1CCB01726DB0100587077 /* Cocoa.framework */,
                                5BD1CCD31726DB4000587077 /* CoreFoundation.framework */,
                        );
                        name = Frameworks;
                        sourceTree = "<group>";
                };
+               5BD1CCB61726DB0100587077 /* strongSwan */ = {
+                       isa = PBXGroup;
+                       children = (
+                               5B04A711174558F100A13BDC /* icon.png */,
+                               5B04A7201747800F00A13BDC /* icon-alt.png */,
+                               5BAE9E9917A94A2500858FE2 /* icon-active.png */,
+                               5B313F9917A93D590055C86A /* icon-large.icns */,
+                               5BD1CCBF1726DB0100587077 /* Credits.rtf */,
+                               5BD1CCBE1726DB0100587077 /* strongSwan-Prefix.pch */,
+                               5BD1CCBC1726DB0100587077 /* main.m */,
+                               5BD1CCB91726DB0100587077 /* InfoPlist.strings */,
+                               5BD1CCB81726DB0100587077 /* strongSwan-Info.plist */,
+                               5BD1CCC21726DB0100587077 /* AppDelegate.h */,
+                               5BD1CCC31726DB0100587077 /* AppDelegate.m */,
+                               5B7FA59E1754D5DB00264BAC /* LogController.h */,
+                               5B7FA59F1754D5DB00264BAC /* LogController.m */,
+                               5B8D879E1A409E4D008E5702 /* LogWindow.xib */,
+                               5BD1CCC51726DB0200587077 /* MainMenu.xib */,
+                               5BD1CCF91729365F00587077 /* Control.h */,
+                               5BD1CCFA1729365F00587077 /* Control.m */,
+                               5B7FA5AD1754EBC800264BAC /* ConnController.h */,
+                               5B7FA5AE1754EBC800264BAC /* ConnController.m */,
+                               5B8D87A11A409E5A008E5702 /* ConnWindow.xib */,
+                               5B7FA5B21754F5AF00264BAC /* PasswordController.h */,
+                               5B7FA5B31754F5AF00264BAC /* PasswordController.m */,
+                               5B8D87A41A409E6D008E5702 /* PasswordWindow.xib */,
+                               5B8D87991A406572008E5702 /* Helper.h */,
+                               5B8D879A1A40658B008E5702 /* Helper.m */,
+                       );
+                       path = strongSwan;
+                       sourceTree = "<group>";
+               };
                5BD1CCD51726DB4000587077 /* charon-xpc */ = {
                        isa = PBXGroup;
                        children = (
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
+               5BD1CCAB1726DB0100587077 /* strongSwan */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 5BD1CCCA1726DB0200587077 /* Build configuration list for PBXNativeTarget "strongSwan" */;
+                       buildPhases = (
+                               5BD1CCA81726DB0100587077 /* Sources */,
+                               5BD1CCA91726DB0100587077 /* Frameworks */,
+                               5BD1CCAA1726DB0100587077 /* Resources */,
+                               5BD1CCDE1726DBF100587077 /* Copy Files */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               5BD1CCE91726E45200587077 /* PBXTargetDependency */,
+                       );
+                       name = strongSwan;
+                       productName = strongSwan;
+                       productReference = 5BD1CCAC1726DB0100587077 /* strongSwan.app */;
+                       productType = "com.apple.product-type.application";
+               };
                5BD1CCD01726DB4000587077 /* charon-xpc */ = {
                        isa = PBXNativeTarget;
                        buildConfigurationList = 5BD1CCDA1726DB4000587077 /* Build configuration list for PBXNativeTarget "charon-xpc" */;
                5BD1CCA31726DB0100587077 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               LastUpgradeCheck = 0450;
+                               LastUpgradeCheck = 0610;
                                ORGANIZATIONNAME = "revosec AG";
                        };
                        buildConfigurationList = 5BD1CCA61726DB0100587077 /* Build configuration list for PBXProject "strongSwan" */;
                        projectDirPath = "";
                        projectRoot = "";
                        targets = (
+                               5BD1CCAB1726DB0100587077 /* strongSwan */,
                                5BD1CCD01726DB4000587077 /* charon-xpc */,
                        );
                };
 /* End PBXProject section */
 
+/* Begin PBXResourcesBuildPhase section */
+               5BD1CCAA1726DB0100587077 /* Resources */ = {
+                       isa = PBXResourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               5BD1CCBB1726DB0100587077 /* InfoPlist.strings in Resources */,
+                               5BD1CCC11726DB0100587077 /* Credits.rtf in Resources */,
+                               5BD1CCC71726DB0200587077 /* MainMenu.xib in Resources */,
+                               5BD1CCEB1727CCA400587077 /* README.md in Resources */,
+                               5B04A712174558F100A13BDC /* icon.png in Resources */,
+                               5B04A7211747800F00A13BDC /* icon-alt.png in Resources */,
+                               5B8D879C1A409E4D008E5702 /* LogWindow.xib in Resources */,
+                               5B8D879F1A409E5A008E5702 /* ConnWindow.xib in Resources */,
+                               5B8D87A21A409E6D008E5702 /* PasswordWindow.xib in Resources */,
+                               5B313F9A17A93D590055C86A /* icon-large.icns in Resources */,
+                               5BAE9E9A17A94A2600858FE2 /* icon-active.png in Resources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXResourcesBuildPhase section */
+
 /* Begin PBXSourcesBuildPhase section */
+               5BD1CCA81726DB0100587077 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               5BD1CCBD1726DB0100587077 /* main.m in Sources */,
+                               5BD1CCC41726DB0100587077 /* AppDelegate.m in Sources */,
+                               5BD1CCFB1729365F00587077 /* Control.m in Sources */,
+                               5B7FA5A11754D5DB00264BAC /* LogController.m in Sources */,
+                               5B8D879B1A40658B008E5702 /* Helper.m in Sources */,
+                               5B7FA5B01754EBC800264BAC /* ConnController.m in Sources */,
+                               5B7FA5B51754F5AF00264BAC /* PasswordController.m in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                5BD1CCCD1726DB4000587077 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                };
 /* End PBXSourcesBuildPhase section */
 
+/* Begin PBXTargetDependency section */
+               5BD1CCE91726E45200587077 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 5BD1CCD01726DB4000587077 /* charon-xpc */;
+                       targetProxy = 5BD1CCE81726E45200587077 /* PBXContainerItemProxy */;
+               };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+               5B8D879E1A409E4D008E5702 /* LogWindow.xib */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               5B8D879D1A409E4D008E5702 /* en */,
+                       );
+                       name = LogWindow.xib;
+                       sourceTree = "<group>";
+               };
+               5B8D87A11A409E5A008E5702 /* ConnWindow.xib */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               5B8D87A01A409E5A008E5702 /* en */,
+                       );
+                       name = ConnWindow.xib;
+                       sourceTree = "<group>";
+               };
+               5B8D87A41A409E6D008E5702 /* PasswordWindow.xib */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               5B8D87A31A409E6D008E5702 /* en */,
+                       );
+                       name = PasswordWindow.xib;
+                       sourceTree = "<group>";
+               };
+               5BD1CCB91726DB0100587077 /* InfoPlist.strings */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               5BD1CCBA1726DB0100587077 /* en */,
+                       );
+                       name = InfoPlist.strings;
+                       sourceTree = "<group>";
+               };
+               5BD1CCBF1726DB0100587077 /* Credits.rtf */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               5BD1CCC01726DB0100587077 /* en */,
+                       );
+                       name = Credits.rtf;
+                       sourceTree = "<group>";
+               };
+               5BD1CCC51726DB0200587077 /* MainMenu.xib */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               5BD1CCC61726DB0200587077 /* en */,
+                       );
+                       name = MainMenu.xib;
+                       sourceTree = "<group>";
+               };
+/* End PBXVariantGroup section */
+
 /* Begin XCBuildConfiguration section */
                5BD1CCC81726DB0200587077 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_64_BIT)";
                                CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
                                CLANG_CXX_LIBRARY = "libc++";
                                CLANG_WARN_EMPTY_BODY = YES;
                                GCC_WARN_ABOUT_RETURN_TYPE = YES;
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
-                               MACOSX_DEPLOYMENT_TARGET = 10.8;
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
                                ONLY_ACTIVE_ARCH = YES;
                                SDKROOT = macosx;
                        };
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ALWAYS_SEARCH_USER_PATHS = NO;
-                               ARCHS = "$(ARCHS_STANDARD_64_BIT)";
                                CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
                                CLANG_CXX_LIBRARY = "libc++";
                                CLANG_WARN_EMPTY_BODY = YES;
                                GCC_WARN_ABOUT_RETURN_TYPE = YES;
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
-                               MACOSX_DEPLOYMENT_TARGET = 10.8;
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
                                SDKROOT = macosx;
                        };
                        name = Release;
                };
+               5BD1CCCB1726DB0200587077 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CODE_SIGN_IDENTITY = "Developer ID Application";
+                               COMBINE_HIDPI_IMAGES = YES;
+                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                               GCC_PREFIX_HEADER = "strongSwan/strongSwan-Prefix.pch";
+                               INFOPLIST_FILE = "strongSwan/strongSwan-Info.plist";
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               PROVISIONING_PROFILE = "";
+                               SDKROOT = macosx;
+                               WRAPPER_EXTENSION = app;
+                       };
+                       name = Debug;
+               };
+               5BD1CCCC1726DB0200587077 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CODE_SIGN_IDENTITY = "Developer ID Application";
+                               COMBINE_HIDPI_IMAGES = YES;
+                               COPY_PHASE_STRIP = NO;
+                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
+                               GCC_PREFIX_HEADER = "strongSwan/strongSwan-Prefix.pch";
+                               INFOPLIST_FILE = "strongSwan/strongSwan-Info.plist";
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               PROVISIONING_PROFILE = "";
+                               SDKROOT = macosx;
+                               WRAPPER_EXTENSION = app;
+                       };
+                       name = Release;
+               };
                5BD1CCDB1726DB4000587077 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               CODE_SIGN_IDENTITY = "Joe Developer";
+                               CODE_SIGN_IDENTITY = "Developer ID Application";
                                GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
                                GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
                                GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
                                        ../../libcharon/.libs,
                                        ../../libhydra/.libs,
                                );
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
                                OTHER_CFLAGS = (
                                        "-include",
                                        ../../../config.h,
                                );
                                PRODUCT_NAME = "org.strongswan.charon-xpc";
                                PROVISIONING_PROFILE = "";
+                               SDKROOT = macosx;
                                STRIP_STYLE = "non-global";
                        };
                        name = Debug;
                5BD1CCDC1726DB4000587077 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               CODE_SIGN_IDENTITY = "Joe Developer";
-                               COPY_PHASE_STRIP = YES;
+                               CODE_SIGN_IDENTITY = "Developer ID Application";
+                               COPY_PHASE_STRIP = NO;
                                GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
                                GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
                                GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO;
                                        ../../libcharon/.libs,
                                        ../../libhydra/.libs,
                                );
+                               MACOSX_DEPLOYMENT_TARGET = 10.7;
                                OTHER_CFLAGS = (
                                        "-include",
                                        ../../../config.h,
                                );
                                PRODUCT_NAME = "org.strongswan.charon-xpc";
                                PROVISIONING_PROFILE = "";
+                               SDKROOT = macosx;
                                STRIP_STYLE = "non-global";
                        };
                        name = Release;
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
+               5BD1CCCA1726DB0200587077 /* Build configuration list for PBXNativeTarget "strongSwan" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               5BD1CCCB1726DB0200587077 /* Debug */,
+                               5BD1CCCC1726DB0200587077 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
                5BD1CCDA1726DB4000587077 /* Build configuration list for PBXNativeTarget "charon-xpc" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
diff --git a/src/frontends/osx/strongSwan/AppDelegate.h b/src/frontends/osx/strongSwan/AppDelegate.h
new file mode 100644 (file)
index 0000000..062da7d
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+#import "Control.h"
+
+/**
+ * Main application delegate, controls the status menu
+ */
+@interface AppDelegate : NSObject <NSApplicationDelegate,ControlDelegate> {
+
+       /**
+        * Status menu controlled
+        */
+       IBOutlet NSMenu *statusMenu;
+}
+
+/**
+ * Action to add a new connection
+ */
+- (IBAction)addConnection:(id)sender;
+
+@end
diff --git a/src/frontends/osx/strongSwan/AppDelegate.m b/src/frontends/osx/strongSwan/AppDelegate.m
new file mode 100644 (file)
index 0000000..8fe997e
--- /dev/null
@@ -0,0 +1,358 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import "AppDelegate.h"
+#import "Control.h"
+#import "LogController.h"
+#import "ConnController.h"
+#import "PasswordController.h"
+
+@implementation AppDelegate {
+       NSStatusItem *statusItem;
+       NSImage *active;
+       NSImage *inactive;
+       NSInteger nonConnectionItemCount;
+       NSMutableArray *connections;
+       Control *control;
+       ConnController *editor;
+       PasswordController *password;
+}
+
+- (void)change:(connectionState)state withConnection:(NSDictionary*)conn
+{
+       NSInteger idx;
+       NSMenuItem *item;
+
+       idx = [statusMenu indexOfItemWithRepresentedObject:conn];
+       if (idx != -1)
+       {
+               item = [statusMenu itemAtIndex:idx];
+
+               switch (state) {
+                       case STATE_DOWN:
+                               [item setState:NSOffState];
+                               [item setAction:@selector(doConnection:)];
+                               [[[item submenu] itemAtIndex:0] setAction:@selector(doConnection:)];
+                               [[[item submenu] itemAtIndex:0] setTitle:@"Connect"];
+                               [[[item submenu] itemAtIndex:1] setAction:@selector(editConnection:)];
+                               [[[item submenu] itemAtIndex:2] setAction:@selector(removeConnection:)];
+                               [self updateIcon];
+                               break;
+                       case STATE_WORKING:
+                               [item setState:NSMixedState];
+                               [item setAction:@selector(undoConnection:)];
+                               [[[item submenu] itemAtIndex:0] setAction:@selector(undoConnection:)];
+                               [[[item submenu] itemAtIndex:0] setTitle:@"Disconnect"];
+                               [[[item submenu] itemAtIndex:1] setAction:nil];
+                               [[[item submenu] itemAtIndex:2] setAction:nil];
+                               [self updateIcon];
+                               break;
+                       case STATE_UP:
+                               [item setState:NSOnState];
+                               [self updateIcon];
+                               break;
+               }
+       }
+}
+
+- (NSString*)createPasswordWithConnection:(NSDictionary*)conn
+{
+       return [password query];
+}
+
+- (void)raise:(NSString*)alert withConnection:(NSDictionary*)conn
+{
+       NSAlert *popup;
+       NSString *text;
+
+       text = [[NSString alloc]
+                       initWithFormat:@"Establishing connection %@ failed:",
+                       [conn objectForKey:@"name"]];
+       popup = [[NSAlert alloc] init];
+       [popup setMessageText:text];
+       [popup setInformativeText:alert];
+       [popup runModal];
+       [text release];
+       [popup release];
+}
+
+- (void)log:(NSString*)line withConnection:(NSDictionary*)conn
+{
+       [[self findLog:conn] appendLine:line];
+}
+
+- (IBAction)undoConnection:(id)sender
+{
+       NSDictionary *conn;
+
+       conn = [sender representedObject];
+       [control disconnect:conn];
+}
+
+- (IBAction)doConnection:(id)sender
+{
+    NSDictionary *conn;
+
+       conn = [sender representedObject];
+       [[self findLog:conn] clear];
+       [control connect:conn];
+}
+
+- (IBAction)addConnection:(id)sender
+{
+       NSMutableDictionary *conn;
+
+       conn = [editor createConnection];
+       if (conn)
+       {
+               [connections insertObject:conn atIndex:[connections count]];
+               [self saveConnections];
+       }
+}
+
+- (IBAction)editConnection:(id)sender
+{
+    NSMutableDictionary *conn;
+
+       conn = [sender representedObject];
+       if ([editor editConnection:conn])
+       {
+               [self saveConnections];
+       }
+}
+
+- (IBAction)removeConnection:(id)sender
+{
+    NSDictionary *conn;
+
+       conn = [sender representedObject];
+       [connections removeObject:conn];
+       [self saveConnections];
+}
+
+- (void)loadConnections
+{
+       NSUserDefaults *defaults;
+       NSArray *array;
+
+       defaults = [NSUserDefaults standardUserDefaults];
+       array = [defaults arrayForKey:@"connections"];
+       if (array)
+       {
+               [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
+                       if ([obj isKindOfClass:[NSDictionary class]])
+                       {
+                               NSMutableDictionary *dict;
+
+                               dict = [obj mutableCopy];
+                               [connections insertObject:dict atIndex:[connections count]];
+                               [dict release];
+                       }
+               }];
+       }
+       [defaults addObserver:self
+                          forKeyPath:@"connections"
+                                 options:NSKeyValueObservingOptionNew
+                                 context:NULL];
+}
+
+- (void)saveConnections
+{
+       NSUserDefaults *defaults;
+
+       defaults = [NSUserDefaults standardUserDefaults];
+       [defaults setObject:connections forKey:@"connections"];
+       [defaults synchronize];
+}
+
+- (void)viewLog:(id)sender
+{
+       [[sender representedObject] show];
+}
+
+- (LogController*)findLog:(NSDictionary *)connection
+{
+       NSInteger idx;
+       NSMenuItem *item;
+
+       idx = [statusMenu indexOfItemWithRepresentedObject:connection];
+       if (idx != -1)
+       {
+               item = [statusMenu itemAtIndex:idx];
+               item = [[item submenu] itemAtIndex:3];
+               return [item representedObject];
+       }
+       return nil;
+}
+
+- (void)addMenuItem:(NSDictionary *)connection
+{
+       NSString *name, *title;
+       NSMenuItem *item;
+       NSMenu *submenu;
+       LogController *ctl;
+
+       name = [connection objectForKey:@"name"];
+       if (name) {
+               /* create submenu first */
+               submenu = [[NSMenu alloc] initWithTitle:@"submenu"];
+
+               item = [[NSMenuItem alloc] initWithTitle:@"Connect"
+                                                                                 action:@selector(doConnection:)
+                                                                  keyEquivalent:@""];
+               [item setTarget:self];
+               [item setRepresentedObject:connection];
+               [submenu insertItem:item atIndex:0];
+               [item release];
+
+               item = [[NSMenuItem alloc] initWithTitle:@"Edit..."
+                                                                                 action:@selector(editConnection:)
+                                                                  keyEquivalent:@""];
+               [item setTarget:self];
+               [item setRepresentedObject:connection];
+               [submenu insertItem:item atIndex:1];
+               [item release];
+
+               item = [[NSMenuItem alloc] initWithTitle:@"Remove"
+                                                                                 action:@selector(removeConnection:)
+                                                                  keyEquivalent:@""];
+               [item setTarget:self];
+               [item setRepresentedObject:connection];
+               [submenu insertItem:item atIndex:2];
+               [item release];
+
+               item = [[NSMenuItem alloc] initWithTitle:@"View Log..."
+                                                                                 action:@selector(viewLog:)
+                                                                  keyEquivalent:@""];
+               [item setTarget:self];
+               ctl = [[LogController alloc] initWithWindowNibName:@"LogWindow"];
+               title = [NSString stringWithFormat: @"strongSwan Log: %@", name];
+               [[ctl window] setTitle:title];
+               [item setRepresentedObject:ctl];
+               [ctl release];
+               [submenu insertItem:item atIndex:3];
+               [item release];
+
+               item = [[NSMenuItem alloc] initWithTitle:name
+                                                                       action:@selector(doConnection:)
+                                                                       keyEquivalent:@""];
+               [item setTarget:self];
+               [item setRepresentedObject:connection];
+               [item setSubmenu:submenu];
+               [submenu release];
+               [statusMenu insertItem:item atIndex:
+                [statusMenu numberOfItems] - nonConnectionItemCount];
+               [item release];
+       }
+}
+
+- (void)repopulateMenu
+{
+       while ([statusMenu numberOfItems] > nonConnectionItemCount)
+       {
+               [statusMenu removeItemAtIndex:0];
+       }
+       [connections enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop) {
+               if ([obj isKindOfClass:[NSDictionary class]]) {
+                       [self addMenuItem:obj];
+               }
+       }];
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath
+                                         ofObject:(id)object change:(NSDictionary *)change
+                                          context:(void *)context
+{
+       [self repopulateMenu];
+}
+
+- (void)updateIcon
+{
+       NSMenuItem *item;
+       bool anyactive = FALSE;
+       int i;
+
+       for (i = 0; i < [statusMenu numberOfItems] - nonConnectionItemCount; i++)
+       {
+               item = [statusMenu itemAtIndex:i];
+               if ([item state] == NSOnState)
+               {
+                       anyactive = TRUE;
+                       break;
+               }
+       }
+       [statusItem setImage: anyactive ? active : inactive];
+}
+
+- (void)initializeMenu
+{
+       NSImage *icon;
+       NSString *path;
+
+       statusItem = [[[NSStatusBar systemStatusBar]
+                                  statusItemWithLength:NSVariableStatusItemLength] retain];
+       [statusItem setMenu:statusMenu];
+       [statusItem setHighlightMode:YES];
+
+       path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
+       icon = [[NSImage alloc] initWithContentsOfFile:path];
+       [statusItem setImage:icon];
+       inactive = icon;
+
+       path = [[NSBundle mainBundle] pathForResource:@"icon-active" ofType:@"png"];
+       icon = [[NSImage alloc] initWithContentsOfFile:path];
+       active = icon;
+
+       path = [[NSBundle mainBundle] pathForResource:@"icon-alt" ofType:@"png"];
+       icon = [[NSImage alloc] initWithContentsOfFile:path];
+       [statusItem setAlternateImage:icon];
+       [icon release];
+
+       nonConnectionItemCount = [statusMenu numberOfItems];
+
+       [self repopulateMenu];
+}
+
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
+{
+       [self loadConnections];
+       [self initializeMenu];
+}
+
+- (id)init
+{
+       self = [super init];
+       control = [[Control alloc] initWithDelegate:self];
+       connections = [[NSMutableArray alloc] init];
+       editor = [[ConnController alloc] initWithWindowNibName:@"ConnWindow"];
+       password = [[PasswordController alloc] initWithWindowNibName:@"PasswordWindow"];
+       return self;
+}
+
+- (void)dealloc
+{
+       NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+       [defaults removeObserver:self forKeyPath:@"connections"];
+       [statusItem release];
+       [active release];
+       [inactive release];
+       [connections release];
+       [control release];
+       [editor release];
+       [password release];
+       [super dealloc];
+}
+
+@end
diff --git a/src/frontends/osx/strongSwan/ConnController.h b/src/frontends/osx/strongSwan/ConnController.h
new file mode 100644 (file)
index 0000000..21134fe
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+/**
+ * Controller for the Connection Editor window
+ */
+@interface ConnController : NSWindowController {
+
+       /**
+        * Text field for the connection name
+        */
+       IBOutlet NSTextField *name;
+
+       /**
+        * Authentication method select control
+        */
+       IBOutlet NSPopUpButton *auth;
+
+       /**
+        * Server address of connection
+        */
+       IBOutlet NSTextField *server;
+
+       /**
+        * Username used for client authentication
+        */
+       IBOutlet NSTextField *user;
+
+       /**
+        * Confirmation button to save/create connection
+        */
+       IBOutlet NSButton *ok;
+}
+
+/**
+ * Save the currently edited connection
+ */
+- (IBAction)saveConnEditor:(id)sender;
+
+/**
+ * Cancel editing the current connection
+ */
+- (IBAction)cancelConnEditor:(id)sender;
+
+/**
+ * Open a dialog to create a new connection.
+ *
+ * @return             dictionary with connection settings, retained
+ */
+- (NSMutableDictionary*)createConnection;
+
+/**
+ * Open a dialog to edit a connection
+ *
+ * @param conn dictionary with connection settings, gets updated
+ * @return             TRUE if connection has been updated, FALSE if aborted
+ */
+- (bool)editConnection:(NSMutableDictionary*)conn;
+
+@end
diff --git a/src/frontends/osx/strongSwan/ConnController.m b/src/frontends/osx/strongSwan/ConnController.m
new file mode 100644 (file)
index 0000000..cd7b9f1
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import "ConnController.h"
+
+@interface ConnController ()
+
+@end
+
+@implementation ConnController
+
+- (void)moveWindowToActiveSpace
+{
+       NSInteger behavior, old;
+
+       /* seems that NSWindowCollectionBehaviorMoveToActiveSpace does not work
+        * when a window is opened a second time. Fix that by changing the
+        * behavior forth and back. */
+       old = behavior = [[self window] collectionBehavior];
+       behavior &= ~NSWindowCollectionBehaviorMoveToActiveSpace;
+       behavior |= NSWindowCollectionBehaviorCanJoinAllSpaces;
+
+       [[self window] setCollectionBehavior: behavior];
+       [[self window] setCollectionBehavior: old];
+
+       [NSApp activateIgnoringOtherApps:YES];
+}
+
+- (IBAction)saveConnEditor:(id)sender
+{
+       [NSApp stopModal];
+}
+
+- (IBAction)cancelConnEditor:(id)sender
+{
+    [NSApp abortModal];
+}
+
+- (NSMutableDictionary*)createConnection
+{
+       NSMutableDictionary *conn = nil;
+
+       [[self window] setTitle:@"Add new connection"];
+       [name setStringValue:@""];
+       [server setStringValue:@""];
+       [user setStringValue:@""];
+       [ok setEnabled:FALSE];
+       [self moveWindowToActiveSpace];
+       if ([NSApp runModalForWindow: [self window]] == NSRunStoppedResponse)
+       {
+               conn = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+                               [name stringValue], @"name",
+                               [server stringValue], @"server",
+                               [user stringValue], @"username",
+                               nil];
+       }
+       [[self window] orderOut: self];
+       return conn;
+}
+
+- (bool)editConnection:(NSMutableDictionary*)conn
+{
+       bool edited = NO;
+
+       [[self window] setTitle:@"Edit connection"];
+       [name setStringValue:[conn objectForKey:@"name"]];
+       [server setStringValue:[conn objectForKey:@"server"]];
+       [user setStringValue:[conn objectForKey:@"username"]];
+       [ok setEnabled:TRUE];
+       [self moveWindowToActiveSpace];
+       if ([NSApp runModalForWindow: [self window]] == NSRunStoppedResponse)
+       {
+               [conn setObject:[name stringValue] forKey:@"name"];
+               [conn setObject:[server stringValue] forKey:@"server"];
+               [conn setObject:[user stringValue] forKey:@"username"];
+               edited = YES;
+       }
+       [[self window] orderOut: self];
+       return edited;
+}
+
+- (void)controlTextDidChange:(NSNotification *)notification
+{
+       [ok setEnabled:
+        [[name stringValue] length] &&
+        [[server stringValue] length] &&
+        [[user stringValue] length]];
+}
+
+@end
diff --git a/src/frontends/osx/strongSwan/Control.h b/src/frontends/osx/strongSwan/Control.h
new file mode 100644 (file)
index 0000000..4bcfb55
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import <Foundation/Foundation.h>
+
+/**
+ * State of a connection during connect.
+ */
+typedef enum {
+       /** The connection is currently down */
+       STATE_DOWN,
+       /** The connection is getting established, the daemon is working */
+       STATE_WORKING,
+       /** The connection has been established successfully */
+       STATE_UP,
+} connectionState;
+
+/**
+ * This protocol defines callback functions to invoke during connect.
+ */
+@protocol ControlDelegate
+
+/**
+ * The connection has changed its state
+ *
+ * @param state                new connection state
+ * @param conn         connection that changed its state
+ */
+- (void)change:(connectionState)state withConnection:(NSDictionary*)conn;
+
+/**
+ * A password is required for authentication
+ *
+ * @param conn         connection a password is required for
+ * @return                     a retained password string
+ */
+- (NSString*)createPasswordWithConnection:(NSDictionary*)conn;
+
+/**
+ * Show an alert message to the user
+ *
+ * @param alert                alert message string
+ * @param conn         connection an error has occurred
+ */
+- (void)raise:(NSString*)alert withConnection:(NSDictionary*)conn;
+
+/**
+ * Log a line for a specific connection
+ *
+ * @param line         log line string
+ * @param conn         connection the line is logged for
+ */
+- (void)log:(NSString*)line withConnection:(NSDictionary*)conn;
+@end
+
+/**
+ * Implements connection connect/disconnect operations using a GUI delegate.
+ */
+@interface Control : NSObject
+
+/**
+ * Try to establish a connection
+ *
+ * @param conn         connection configuration to initiate
+ */
+- (void)connect:(NSDictionary*)conn;
+
+/**
+ * Disconnect a previously established connection
+ *
+ * @param conn         connection configuration to terminate
+ */
+- (void)disconnect:(NSDictionary*)conn;
+
+/**
+ * Initiate the Control class using a delegate for GUI operations
+ *
+ * @param delegate     delegate to invoke callbacks on during connect operation
+ * @return                     class instance
+ */
+- (id)initWithDelegate:(id<ControlDelegate>)delegate;
+
+@end
diff --git a/src/frontends/osx/strongSwan/Control.m b/src/frontends/osx/strongSwan/Control.m
new file mode 100644 (file)
index 0000000..6bb0d0f
--- /dev/null
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import "Control.h"
+#import "Helper.h"
+
+@implementation Control {
+       /* Provides the XPC main connection to the privileged helper */
+       Helper *helper;
+       /* active connection specific XPC channels, indexed by connection name */
+       NSDictionary *active;
+       /* delegate to invoke callbacks on */
+       id<ControlDelegate> del;
+}
+
+- (NSString*)translateAlert:(const char*)alert
+{
+       if (strcmp(alert, "local-auth") == 0)
+       {
+               return @"Client authentication failed";
+       }
+       if (strcmp(alert, "remote-auth") == 0)
+       {
+               return @"Server authentication failed";
+       }
+       if (strcmp(alert, "dns") == 0)
+       {
+               return @"Resolving server hostname failed";
+       }
+       if (strcmp(alert, "unreachable") == 0)
+       {
+               return @"Server is unreachable";
+       }
+       if (strcmp(alert, "timeout") == 0)
+       {
+               return @"Server did not respond";
+       }
+       if (strcmp(alert, "proposal-mismatch") == 0)
+       {
+               return @"No common cryptographic algorithms found";
+       }
+       if (strcmp(alert, "ts-mismatch") == 0)
+       {
+               return @"No common traffic selectors found";
+       }
+       return NULL;
+}
+
+- (void)changeState:(connectionState)state withChannel:(xpc_connection_t)channel
+                       andConn:(NSDictionary*)conn
+{
+       NSString *name;
+
+       name = [conn objectForKey:@"name"];
+       switch (state)
+       {
+               case STATE_WORKING:
+                       xpc_dictionary_set_value(active, [name UTF8String], channel);
+                       break;
+               case STATE_DOWN:
+                       xpc_dictionary_set_value(active, [name UTF8String], NULL);
+                       break;
+               case STATE_UP:
+                       break;
+       }
+       dispatch_sync(dispatch_get_main_queue(), ^{
+               [del change:state withConnection:conn];
+       });
+}
+
+- (void)handleEvent:(xpc_object_t)request withChannel:(xpc_connection_t)channel
+                       andConn:(NSDictionary*)conn
+{
+       xpc_connection_t client;
+       xpc_object_t reply;
+       const char *type, *rpc, *event;
+       client = xpc_dictionary_get_remote_connection(request);
+       type = xpc_dictionary_get_string(request, "type");
+       if (type)
+       {
+               if (strcmp(type, "rpc") == 0)
+               {
+                       reply = xpc_dictionary_create_reply(request);
+                       rpc = xpc_dictionary_get_string(request, "rpc");
+                       if (rpc)
+                       {
+                               if (strcmp(rpc, "get_password") == 0)
+                               {
+                                       __block NSString *password;
+
+                                       dispatch_sync(dispatch_get_main_queue(), ^{
+                                               password = [del createPasswordWithConnection:conn];
+                                       });
+                                       xpc_dictionary_set_string(reply, "password",
+                                                                                         [password UTF8String]);
+                                       [password release];
+                               }
+                       }
+                       xpc_connection_send_message(client, reply);
+                       xpc_release(reply);
+               }
+               if (strcmp(type, "event") == 0)
+               {
+                       event = xpc_dictionary_get_string(request, "event");
+                       if (event)
+                       {
+                               if (strcmp(event, "log") == 0)
+                               {
+                                       NSString *line;
+
+                                       line = [[NSString alloc] initWithUTF8String:
+                                                       xpc_dictionary_get_string(request, "message")];
+                                       dispatch_async(dispatch_get_main_queue(), ^{
+                                               [del log:line withConnection:conn];
+                                       });
+                                       [line release];
+                               }
+                               if (strcmp(event, "alert") == 0)
+                               {
+                                       NSString *msg;
+                                       const char *str;
+
+                                       str = xpc_dictionary_get_string(request, "alert");
+                                       if (str)
+                                       {
+                                               msg = [self translateAlert:str];
+                                               if (msg)
+                                               {
+                                                       dispatch_async(dispatch_get_main_queue(), ^{
+                                                               [del raise:msg withConnection:conn];
+                                                       });
+                                               }
+                                       }
+                               }
+                               if (strcmp(event, "connecting") == 0)
+                               {
+                                       [self changeState:STATE_WORKING withChannel:channel andConn:conn];
+                               }
+                               if (strcmp(event, "up") == 0)
+                               {
+                                       /* IKE_SA up */
+                               }
+                               if (strcmp(event, "down") == 0)
+                               {
+                                       [self changeState:STATE_DOWN withChannel:channel andConn:conn];
+                               }
+                               if (strcmp(event, "child_up") == 0)
+                               {
+                                       [self changeState:STATE_UP withChannel:channel andConn:conn];
+                               }
+                               if (strcmp(event, "child_down") == 0)
+                               {
+                                       [self changeState:STATE_DOWN withChannel:channel andConn:conn];
+                               }
+                       }
+               }
+       }
+}
+
+- (void)connect:(NSDictionary*)conn
+{
+       xpc_object_t request;
+       xpc_connection_t service, daemon;
+       NSString *name, *server, *username;
+
+       name = [conn objectForKey:@"name"];
+       server = [conn objectForKey:@"server"];
+       username = [conn objectForKey:@"username"];
+
+       daemon = [helper getConnection];
+       if (!daemon)
+       {
+               [del raise:[helper getError] withConnection:conn];
+       }
+
+       request = xpc_dictionary_create(NULL, NULL, 0);
+       xpc_dictionary_set_string(request, "type", "rpc");
+       xpc_dictionary_set_string(request, "rpc", "start_connection");
+       xpc_dictionary_set_string(request, "name", [name UTF8String]);
+       xpc_dictionary_set_string(request, "host", [server UTF8String]);
+       xpc_dictionary_set_string(request, "id", [username UTF8String]);
+
+       service = xpc_connection_create(NULL, NULL);
+       xpc_connection_set_event_handler(service, ^(xpc_object_t channel) {
+
+               xpc_connection_set_event_handler(channel, ^(xpc_object_t event) {
+
+                       if (event == XPC_ERROR_CONNECTION_INTERRUPTED ||
+                               event == XPC_ERROR_CONNECTION_INVALID)
+                       {
+                               xpc_dictionary_set_value(active, [name UTF8String], NULL);
+                               dispatch_sync(dispatch_get_main_queue(), ^{
+                                       [del change:STATE_DOWN withConnection:conn];
+                               });
+                       }
+                       else
+                       {
+                               [self handleEvent:event withChannel:channel andConn:conn];
+                       }
+               });
+               xpc_connection_resume(channel);
+       });
+
+       xpc_connection_resume(service);
+       xpc_dictionary_set_connection(request, "channel", xpc_retain(service));
+       xpc_connection_send_message_with_reply(daemon, request,
+                                                                                  dispatch_get_main_queue(),
+                                                                                  ^(xpc_object_t reply) {});
+       xpc_release(request);
+}
+
+- (void)disconnect:(NSDictionary*)conn
+{
+       xpc_connection_t tunnel;
+       xpc_object_t request;
+
+       tunnel = xpc_dictionary_get_value(active,
+                                                                         [[conn objectForKey:@"name"] UTF8String]);
+       if (tunnel)
+       {
+               request = xpc_dictionary_create(NULL, NULL, 0);
+               xpc_dictionary_set_string(request, "type", "rpc");
+               xpc_dictionary_set_string(request, "rpc", "stop_connection");
+               xpc_connection_send_message_with_reply(tunnel, request,
+                                                                                          dispatch_get_main_queue(),
+                                                                                          ^(xpc_object_t reply) {});
+               xpc_release(request);
+       }
+}
+
+- (void)dealloc
+{
+       xpc_release(active);
+       [super dealloc];
+}
+
+- (id)initWithDelegate:(id<ControlDelegate>)delegate;
+{
+       self = [super init];
+       helper = [[Helper alloc] init];
+       active = xpc_dictionary_create(NULL, NULL, 0);
+       del = delegate;
+       return self;
+}
+
+@end
diff --git a/src/frontends/osx/strongSwan/Helper.h b/src/frontends/osx/strongSwan/Helper.h
new file mode 100644 (file)
index 0000000..0fa7da8
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import <Foundation/Foundation.h>
+
+/**
+ * Privileged Helper abstraction.
+ *
+ * Manages the installation of the privileged helper charon-xpc binary
+ * using authorization, SMJobBless() installation using XPC and also
+ * checks the installed helper version.
+ */
+@interface Helper : NSObject
+
+/**
+ * Get the XPC connection singleton, installing helper if requried
+ *
+ * @return             XPC service connection, as a singleton
+ */
+- (xpc_connection_t)getConnection;
+
+/**
+ * Return an errror string if if getConnection fails
+ *
+ * @return             error string, unretained
+ */
+- (NSString*)getError;
+
+@end
\ No newline at end of file
diff --git a/src/frontends/osx/strongSwan/Helper.m b/src/frontends/osx/strongSwan/Helper.m
new file mode 100644 (file)
index 0000000..df4b4c2
--- /dev/null
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import "Helper.h"
+
+#include <ServiceManagement/ServiceManagement.h>
+#include <Security/Authorization.h>
+
+/* to check strongSwan version */
+#include "../../../../config.h"
+
+@implementation Helper {
+       /* XPC connection to the helper */
+       xpc_connection_t helper;
+       /* authorization instance, if authorized */
+       AuthorizationRef auth;
+       /* string of last error occurred */
+       NSString* errmsg;
+}
+
+- (void)setError:(NSString*)error
+{
+       if (errmsg)
+       {
+               [errmsg release];
+       }
+       errmsg = error;
+}
+
+- (bool)authorize
+{
+       AuthorizationItem item = { kSMRightBlessPrivilegedHelper, 0, NULL, 0 };
+       AuthorizationRights rights = { 1, &item };
+       OSStatus status;
+
+       if (auth)
+       {
+               return TRUE;
+       }
+       status = AuthorizationCreate(&rights, kAuthorizationEmptyEnvironment,
+                                                                kAuthorizationFlagDefaults |
+                                                                kAuthorizationFlagInteractionAllowed |
+                                                                kAuthorizationFlagExtendRights, &auth);
+       if (status == errAuthorizationSuccess)
+       {
+               return TRUE;
+       }
+       if (errmsg)
+       {
+               [errmsg release];
+       }
+       [self setError:[NSString stringWithFormat:@"Authorization failed: %@",
+                                       SecCopyErrorMessageString(status, NULL)]];
+       return FALSE;
+}
+
+- (bool)manage:(CFStringRef)label bless:(bool)bless
+{
+       bool done;
+       CFErrorRef error;
+
+       if (![self authorize])
+       {
+               return FALSE;
+       }
+       if (bless)
+       {
+               done = SMJobBless(kSMDomainSystemLaunchd, label, auth, &error);
+       }
+       else
+       {
+               done = SMJobRemove(kSMDomainSystemLaunchd, label, auth, TRUE, &error);
+       }
+       if (!done)
+       {
+               [self setError:
+                [NSString stringWithFormat:@"Installing privileged helper failed: %@",
+                 CFErrorCopyDescription(error)]];
+               CFRelease(error);
+       }
+       return done;
+}
+
+- (bool)make:(CFStringRef)label
+{
+       char str[128];
+
+       if (!CFStringGetCString(label, str, sizeof(str), kCFStringEncodingUTF8))
+       {
+               [self setError:@"converting XPC service name failed"];
+               return FALSE;
+       }
+       helper = xpc_connection_create_mach_service(str, NULL,
+                                                       XPC_CONNECTION_MACH_SERVICE_PRIVILEGED);
+       if (!helper)
+       {
+               [self setError:@"creating XPC mach service failed"];
+               return FALSE;
+       }
+
+       xpc_connection_set_event_handler(helper, ^(xpc_object_t event) {
+               if (xpc_get_type(event) == XPC_TYPE_ERROR)
+               {
+                       if (event == XPC_ERROR_CONNECTION_INTERRUPTED ||
+                               event == XPC_ERROR_CONNECTION_INVALID)
+                       {
+                               if (helper)
+                               {
+                                       xpc_connection_cancel(helper);
+                                       helper = NULL;
+                               }
+                       }
+               }
+       });
+       xpc_connection_resume(helper);
+
+       return TRUE;
+}
+
+- (bool)checkVersion
+{
+       xpc_object_t request, response;
+       bool match = FALSE;
+
+       request = xpc_dictionary_create(NULL, NULL, 0);
+       xpc_dictionary_set_string(request, "type", "rpc");
+       xpc_dictionary_set_string(request, "rpc", "get_version");
+
+       response = xpc_connection_send_message_with_reply_sync(helper, request);
+       xpc_release(request);
+       if (xpc_get_type(response) == XPC_TYPE_DICTIONARY)
+       {
+               match = strcmp(xpc_dictionary_get_string(response, "version"),
+                                          PACKAGE_VERSION) == 0;
+       }
+       xpc_release(response);
+       return match;
+}
+
+- (bool)makeAndCheck:(CFStringRef)label
+{
+       if (![self make:label])
+       {
+               return FALSE;
+       }
+       if ([self checkVersion])
+       {
+               return TRUE;
+       }
+       xpc_connection_cancel(helper);
+       helper = NULL;
+       /* version outdated, uninstall old helper */
+       [self manage:label bless:FALSE];
+       return FALSE;
+}
+
+- (bool)blessAndMake:(CFStringRef)label
+{
+#ifdef DEBUG
+       /* always update helper when debugging */
+       [self manage:label bless:FALSE];
+       [self manage:label bless:TRUE];
+#endif
+
+       if (![self makeAndCheck:label])
+       {
+               if ([self manage:label bless:TRUE])
+               {
+                       [self makeAndCheck:label];
+               }
+       }
+       return helper;
+}
+
+- (xpc_connection_t)getConnection
+{
+       if (!helper)
+       {
+               [self blessAndMake:CFSTR("org.strongswan.charon-xpc")];
+       }
+       return helper;
+}
+
+- (NSString*)getError
+{
+       return errmsg;
+}
+
+- (id)init
+{
+       self = [super init];
+       return self;
+}
+
+- (void)dealloc
+{
+       if (helper)
+       {
+               xpc_connection_cancel(helper);
+       }
+       if (auth)
+       {
+               AuthorizationFree(auth, kAuthorizationFlagDefaults);
+       }
+       if (errmsg)
+       {
+               [errmsg release];
+       }
+       [super dealloc];
+}
+@end
diff --git a/src/frontends/osx/strongSwan/LogController.h b/src/frontends/osx/strongSwan/LogController.h
new file mode 100644 (file)
index 0000000..239dd5b
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+/**
+ * Controller for a connection specific log Window
+ */
+@interface LogController : NSWindowController {
+       /**
+        * Text field for the log entries
+        */
+       IBOutlet NSTextView *textView;
+}
+
+/**
+ * Show the log window on the active Desktop
+ */
+- (void)show;
+
+/**
+ * Append a new log line to the log
+ *
+ * @param line         log line to append
+ */
+- (void)appendLine:(NSString*)line;
+
+/**
+ * Clear the log window
+ */
+- (void)clear;
+
+@end
diff --git a/src/frontends/osx/strongSwan/LogController.m b/src/frontends/osx/strongSwan/LogController.m
new file mode 100644 (file)
index 0000000..56be8c8
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import "LogController.h"
+
+@interface LogController ()
+
+@end
+
+@implementation LogController
+
+- (void)appendLine:(NSString*)line
+{
+       NSAttributedString* attr;
+
+       attr = [[NSAttributedString alloc] initWithString:line];
+       [[textView textStorage] appendAttributedString:attr];
+       [attr release];
+
+       attr = [[NSAttributedString alloc] initWithString:@"\n"];
+       [[textView textStorage] appendAttributedString:attr];
+       [attr release];
+
+       [textView scrollRangeToVisible:NSMakeRange([[textView string] length], 0)];
+}
+
+- (void)clear
+{
+       [textView setString:@""];
+}
+
+- (void)show
+{
+       [self showWindow:self];
+       [[self window] makeKeyAndOrderFront:self];
+       [[self window] orderFrontRegardless];
+}
+
+@end
diff --git a/src/frontends/osx/strongSwan/PasswordController.h b/src/frontends/osx/strongSwan/PasswordController.h
new file mode 100644 (file)
index 0000000..eeaed0d
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import <Cocoa/Cocoa.h>
+
+/**
+ * Controller for the EAP password dialog.
+ */
+@interface PasswordController : NSWindowController {
+
+       /**
+        * Text field the user enters the password
+        */
+       IBOutlet NSTextField *password;
+}
+
+/**
+ * Action invoked when the user confirms the password entry
+ */
+- (IBAction)confirm: (id)sender;
+
+/**
+ * Query the user for a password by invoking the modal dialog.
+ *
+ * @return             password string, retained
+ */
+- (NSString*)query;
+
+@end
diff --git a/src/frontends/osx/strongSwan/PasswordController.m b/src/frontends/osx/strongSwan/PasswordController.m
new file mode 100644 (file)
index 0000000..2e0ce55
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 Martin Willi
+ * Copyright (C) 2013 revosec AG
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#import "PasswordController.h"
+
+@interface PasswordController ()
+
+@end
+
+@implementation PasswordController
+
+- (void)moveWindowToActiveSpace
+{
+       NSInteger behavior, old;
+
+       /* seems that NSWindowCollectionBehaviorMoveToActiveSpace does not work
+        * when a window is opened a second time. Fix that by changing the
+        * behavior forth and back. */
+       old = behavior = [[self window] collectionBehavior];
+       behavior &= ~NSWindowCollectionBehaviorMoveToActiveSpace;
+       behavior |= NSWindowCollectionBehaviorCanJoinAllSpaces;
+
+       [[self window] setCollectionBehavior: behavior];
+       [[self window] setCollectionBehavior: old];
+
+       [NSApp activateIgnoringOtherApps:YES];
+}
+
+- (IBAction)confirm:(id)sender
+{
+    [NSApp stopModal];
+}
+
+- (NSString *)query
+{
+       [password setStringValue:@""];
+       [self moveWindowToActiveSpace];
+       [NSApp runModalForWindow: [self window]];
+       [[self window] orderOut: self];
+
+       return [[password stringValue] retain];
+}
+
+@end
diff --git a/src/frontends/osx/strongSwan/en.lproj/ConnWindow.xib b/src/frontends/osx/strongSwan/en.lproj/ConnWindow.xib
new file mode 100644 (file)
index 0000000..37c74b4
--- /dev/null
@@ -0,0 +1,1469 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+       <data>
+               <int key="IBDocument.SystemTarget">1080</int>
+               <string key="IBDocument.SystemVersion">12D78</string>
+               <string key="IBDocument.InterfaceBuilderVersion">2840</string>
+               <string key="IBDocument.AppKitVersion">1187.37</string>
+               <string key="IBDocument.HIToolboxVersion">626.00</string>
+               <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+                       <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                       <string key="NS.object.0">2840</string>
+               </object>
+               <array key="IBDocument.IntegratedClassDependencies">
+                       <string>IBNSLayoutConstraint</string>
+                       <string>NSButton</string>
+                       <string>NSButtonCell</string>
+                       <string>NSCustomObject</string>
+                       <string>NSMenu</string>
+                       <string>NSMenuItem</string>
+                       <string>NSPopUpButton</string>
+                       <string>NSPopUpButtonCell</string>
+                       <string>NSTextField</string>
+                       <string>NSTextFieldCell</string>
+                       <string>NSView</string>
+                       <string>NSWindowTemplate</string>
+               </array>
+               <array key="IBDocument.PluginDependencies">
+                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+               </array>
+               <object class="NSMutableDictionary" key="IBDocument.Metadata">
+                       <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+                       <integer value="1" key="NS.object.0"/>
+               </object>
+               <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+                       <object class="NSCustomObject" id="1001">
+                               <string key="NSClassName">ConnController</string>
+                       </object>
+                       <object class="NSCustomObject" id="1003">
+                               <string key="NSClassName">FirstResponder</string>
+                       </object>
+                       <object class="NSCustomObject" id="1004">
+                               <string key="NSClassName">NSApplication</string>
+                       </object>
+                       <object class="NSWindowTemplate" id="735050660">
+                               <int key="NSWindowStyleMask">1</int>
+                               <int key="NSWindowBacking">2</int>
+                               <string key="NSWindowRect">{{121, 123}, {319, 191}}</string>
+                               <int key="NSWTFlags">611845120</int>
+                               <string key="NSWindowTitle">Window</string>
+                               <string key="NSWindowClass">NSWindow</string>
+                               <nil key="NSViewClass"/>
+                               <nil key="NSUserInterfaceItemIdentifier"/>
+                               <object class="NSView" key="NSWindowView" id="88276965">
+                                       <reference key="NSNextResponder"/>
+                                       <int key="NSvFlags">256</int>
+                                       <array class="NSMutableArray" key="NSSubviews">
+                                               <object class="NSButton" id="260033587">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{223, 13}, {82, 32}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="238866077">
+                                                               <int key="NSCellFlags">67108864</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents">OK</string>
+                                                               <object class="NSFont" key="NSSupport" id="713244604">
+                                                                       <string key="NSName">LucidaGrande</string>
+                                                                       <double key="NSSize">13</double>
+                                                                       <int key="NSfFlags">1044</int>
+                                                               </object>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="260033587"/>
+                                                               <int key="NSButtonFlags">-2038284288</int>
+                                                               <int key="NSButtonFlags2">129</int>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSButton" id="458815142">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{141, 13}, {82, 32}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="260033587"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="85365463">
+                                                               <int key="NSCellFlags">67108864</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents">Cancel</string>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="458815142"/>
+                                                               <int key="NSButtonFlags">-2038284288</int>
+                                                               <int key="NSButtonFlags2">129</int>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="150710550">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{20, 154}, {162, 17}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="112629631"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:1535</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="41274883">
+                                                               <int key="NSCellFlags">68157504</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents">Connection name:</string>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:1535</string>
+                                                               <reference key="NSControlView" ref="150710550"/>
+                                                               <object class="NSColor" key="NSBackgroundColor" id="817666927">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">controlColor</string>
+                                                                       <object class="NSColor" key="NSColor">
+                                                                               <int key="NSColorSpace">3</int>
+                                                                               <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+                                                                       </object>
+                                                               </object>
+                                                               <object class="NSColor" key="NSTextColor" id="585892195">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">controlTextColor</string>
+                                                                       <object class="NSColor" key="NSColor" id="318412193">
+                                                                               <int key="NSColorSpace">3</int>
+                                                                               <bytes key="NSWhite">MAA</bytes>
+                                                                       </object>
+                                                               </object>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="112629631">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{147, 151}, {152, 22}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="599769836"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="693045854">
+                                                               <int key="NSCellFlags">-1804599231</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents"/>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="112629631"/>
+                                                               <bool key="NSDrawsBackground">YES</bool>
+                                                               <object class="NSColor" key="NSBackgroundColor" id="784757228">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">textBackgroundColor</string>
+                                                                       <object class="NSColor" key="NSColor">
+                                                                               <int key="NSColorSpace">3</int>
+                                                                               <bytes key="NSWhite">MQA</bytes>
+                                                                       </object>
+                                                               </object>
+                                                               <object class="NSColor" key="NSTextColor" id="752414597">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">textColor</string>
+                                                                       <reference key="NSColor" ref="318412193"/>
+                                                               </object>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="599769836">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{20, 124}, {162, 17}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="336402053"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:1535</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="103441974">
+                                                               <int key="NSCellFlags">68157504</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents">Authentication:</string>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:1535</string>
+                                                               <reference key="NSControlView" ref="599769836"/>
+                                                               <reference key="NSBackgroundColor" ref="817666927"/>
+                                                               <reference key="NSTextColor" ref="585892195"/>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSPopUpButton" id="336402053">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{145, 118}, {157, 26}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="37302032"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSPopUpButtonCell" key="NSCell" id="967115457">
+                                                               <int key="NSCellFlags">-2076180416</int>
+                                                               <int key="NSCellFlags2">2048</int>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="336402053"/>
+                                                               <int key="NSButtonFlags">109199360</int>
+                                                               <int key="NSButtonFlags2">129</int>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string key="NSKeyEquivalent"/>
+                                                               <int key="NSPeriodicDelay">400</int>
+                                                               <int key="NSPeriodicInterval">75</int>
+                                                               <object class="NSMenuItem" key="NSMenuItem" id="349822264">
+                                                                       <reference key="NSMenu" ref="913040062"/>
+                                                                       <string key="NSTitle">IKEv2 EAP</string>
+                                                                       <string key="NSKeyEquiv"/>
+                                                                       <int key="NSMnemonicLoc">2147483647</int>
+                                                                       <int key="NSState">1</int>
+                                                                       <object class="NSCustomResource" key="NSOnImage">
+                                                                               <string key="NSClassName">NSImage</string>
+                                                                               <string key="NSResourceName">NSMenuCheckmark</string>
+                                                                       </object>
+                                                                       <object class="NSCustomResource" key="NSMixedImage">
+                                                                               <string key="NSClassName">NSImage</string>
+                                                                               <string key="NSResourceName">NSMenuMixedState</string>
+                                                                       </object>
+                                                                       <string key="NSAction">_popUpItemAction:</string>
+                                                                       <reference key="NSTarget" ref="967115457"/>
+                                                               </object>
+                                                               <bool key="NSMenuItemRespectAlignment">YES</bool>
+                                                               <object class="NSMenu" key="NSMenu" id="913040062">
+                                                                       <string key="NSTitle">OtherViews</string>
+                                                                       <array class="NSMutableArray" key="NSMenuItems">
+                                                                               <reference ref="349822264"/>
+                                                                       </array>
+                                                                       <reference key="NSMenuFont" ref="713244604"/>
+                                                               </object>
+                                                               <int key="NSPreferredEdge">1</int>
+                                                               <bool key="NSUsesItemFromMenu">YES</bool>
+                                                               <bool key="NSAltersState">YES</bool>
+                                                               <int key="NSArrowPosition">2</int>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="37302032">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{20, 94}, {162, 17}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="708032587"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:1535</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="810993949">
+                                                               <int key="NSCellFlags">68157504</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents">Server address:</string>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:1535</string>
+                                                               <reference key="NSControlView" ref="37302032"/>
+                                                               <reference key="NSBackgroundColor" ref="817666927"/>
+                                                               <reference key="NSTextColor" ref="585892195"/>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="708032587">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{147, 91}, {152, 22}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="252377551"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="835181265">
+                                                               <int key="NSCellFlags">-1804599231</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents"/>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="708032587"/>
+                                                               <bool key="NSDrawsBackground">YES</bool>
+                                                               <reference key="NSBackgroundColor" ref="784757228"/>
+                                                               <reference key="NSTextColor" ref="752414597"/>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="252377551">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{20, 64}, {162, 17}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="781381545"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:1535</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="680381038">
+                                                               <int key="NSCellFlags">68157504</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents">Username:</string>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:1535</string>
+                                                               <reference key="NSControlView" ref="252377551"/>
+                                                               <reference key="NSBackgroundColor" ref="817666927"/>
+                                                               <reference key="NSTextColor" ref="585892195"/>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                               <object class="NSTextField" id="781381545">
+                                                       <reference key="NSNextResponder" ref="88276965"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{147, 61}, {152, 22}}</string>
+                                                       <reference key="NSSuperview" ref="88276965"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="458815142"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="1016899923">
+                                                               <int key="NSCellFlags">-1804599231</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents"/>
+                                                               <reference key="NSSupport" ref="713244604"/>
+                                                               <string key="NSCellIdentifier">_NS:9</string>
+                                                               <reference key="NSControlView" ref="781381545"/>
+                                                               <bool key="NSDrawsBackground">YES</bool>
+                                                               <reference key="NSBackgroundColor" ref="784757228"/>
+                                                               <reference key="NSTextColor" ref="752414597"/>
+                                                       </object>
+                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                               </object>
+                                       </array>
+                                       <string key="NSFrameSize">{319, 191}</string>
+                                       <reference key="NSSuperview"/>
+                                       <reference key="NSWindow"/>
+                                       <reference key="NSNextKeyView" ref="150710550"/>
+                                       <string key="NSReuseIdentifierKey">_NS:20</string>
+                               </object>
+                               <string key="NSScreenRect">{{0, 0}, {1366, 746}}</string>
+                               <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
+                               <int key="NSWindowAnimationBehavior">3</int>
+                               <int key="NSWindowCollectionBehavior">2</int>
+                               <bool key="NSWindowIsRestorable">YES</bool>
+                       </object>
+               </array>
+               <object class="IBObjectContainer" key="IBDocument.Objects">
+                       <array class="NSMutableArray" key="connectionRecords">
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">auth</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="336402053"/>
+                                       </object>
+                                       <int key="connectionID">58</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">name</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="112629631"/>
+                                       </object>
+                                       <int key="connectionID">60</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">ok</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="260033587"/>
+                                       </object>
+                                       <int key="connectionID">61</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">server</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="708032587"/>
+                                       </object>
+                                       <int key="connectionID">62</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">user</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="781381545"/>
+                                       </object>
+                                       <int key="connectionID">63</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">window</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="735050660"/>
+                                       </object>
+                                       <int key="connectionID">64</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">saveConnEditor:</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="260033587"/>
+                                       </object>
+                                       <int key="connectionID">65</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">cancelConnEditor:</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="458815142"/>
+                                       </object>
+                                       <int key="connectionID">66</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="781381545"/>
+                                               <reference key="destination" ref="1001"/>
+                                       </object>
+                                       <int key="connectionID">69</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="708032587"/>
+                                               <reference key="destination" ref="1001"/>
+                                       </object>
+                                       <int key="connectionID">68</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="112629631"/>
+                                               <reference key="destination" ref="1001"/>
+                                       </object>
+                                       <int key="connectionID">67</int>
+                               </object>
+                       </array>
+                       <object class="IBMutableOrderedSet" key="objectRecords">
+                               <array key="orderedObjects">
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">0</int>
+                                               <array key="object" id="0"/>
+                                               <reference key="children" ref="1000"/>
+                                               <nil key="parent"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">-2</int>
+                                               <reference key="object" ref="1001"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">File's Owner</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">-1</int>
+                                               <reference key="object" ref="1003"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">First Responder</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">-3</int>
+                                               <reference key="object" ref="1004"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Application</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">5</int>
+                                               <reference key="object" ref="735050660"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="88276965"/>
+                                               </array>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">connEditor</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">6</int>
+                                               <reference key="object" ref="88276965"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="260033587"/>
+                                                       <reference ref="458815142"/>
+                                                       <reference ref="336402053"/>
+                                                       <reference ref="781381545"/>
+                                                       <reference ref="252377551"/>
+                                                       <reference ref="708032587"/>
+                                                       <reference ref="37302032"/>
+                                                       <reference ref="599769836"/>
+                                                       <reference ref="112629631"/>
+                                                       <reference ref="150710550"/>
+                                                       <object class="IBNSLayoutConstraint" id="191717939">
+                                                               <reference key="firstItem" ref="150710550"/>
+                                                               <int key="firstAttribute">3</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="88276965"/>
+                                                               <int key="secondAttribute">3</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">20</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">8</int>
+                                                               <float key="scoringTypeFloat">29</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="888271389">
+                                                               <reference key="firstItem" ref="150710550"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="88276965"/>
+                                                               <int key="secondAttribute">5</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">23</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">3</int>
+                                                               <float key="scoringTypeFloat">9</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="301307470">
+                                                               <reference key="firstItem" ref="599769836"/>
+                                                               <int key="firstAttribute">6</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="150710550"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="904961544">
+                                                               <reference key="firstItem" ref="599769836"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="150710550"/>
+                                                               <int key="secondAttribute">5</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="273342708">
+                                                               <reference key="firstItem" ref="37302032"/>
+                                                               <int key="firstAttribute">10</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="708032587"/>
+                                                               <int key="secondAttribute">10</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="413934103">
+                                                               <reference key="firstItem" ref="37302032"/>
+                                                               <int key="firstAttribute">6</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="599769836"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="1055671094">
+                                                               <reference key="firstItem" ref="37302032"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="599769836"/>
+                                                               <int key="secondAttribute">5</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="873111545">
+                                                               <reference key="firstItem" ref="37302032"/>
+                                                               <int key="firstAttribute">6</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="252377551"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="732345296">
+                                                               <reference key="firstItem" ref="252377551"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="37302032"/>
+                                                               <int key="secondAttribute">5</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="318329324">
+                                                               <reference key="firstItem" ref="112629631"/>
+                                                               <int key="firstAttribute">10</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="150710550"/>
+                                                               <int key="secondAttribute">10</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="617034649">
+                                                               <reference key="firstItem" ref="88276965"/>
+                                                               <int key="firstAttribute">6</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="112629631"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">20</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">8</int>
+                                                               <float key="scoringTypeFloat">29</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="244493668">
+                                                               <reference key="firstItem" ref="112629631"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="336402053"/>
+                                                               <int key="secondAttribute">5</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="355628358">
+                                                               <reference key="firstItem" ref="336402053"/>
+                                                               <int key="firstAttribute">3</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="88276965"/>
+                                                               <int key="secondAttribute">3</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">49</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">3</int>
+                                                               <float key="scoringTypeFloat">9</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="456332886">
+                                                               <reference key="firstItem" ref="336402053"/>
+                                                               <int key="firstAttribute">11</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="599769836"/>
+                                                               <int key="secondAttribute">11</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="137867301">
+                                                               <reference key="firstItem" ref="88276965"/>
+                                                               <int key="firstAttribute">6</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="336402053"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">20</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">8</int>
+                                                               <float key="scoringTypeFloat">29</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="705449622">
+                                                               <reference key="firstItem" ref="336402053"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="708032587"/>
+                                                               <int key="secondAttribute">5</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="90621650">
+                                                               <reference key="firstItem" ref="708032587"/>
+                                                               <int key="firstAttribute">3</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="88276965"/>
+                                                               <int key="secondAttribute">3</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">78</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">3</int>
+                                                               <float key="scoringTypeFloat">9</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="390243852">
+                                                               <reference key="firstItem" ref="88276965"/>
+                                                               <int key="firstAttribute">6</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="708032587"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">20</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">8</int>
+                                                               <float key="scoringTypeFloat">29</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="416463027">
+                                                               <reference key="firstItem" ref="781381545"/>
+                                                               <int key="firstAttribute">10</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="252377551"/>
+                                                               <int key="secondAttribute">10</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="843035247">
+                                                               <reference key="firstItem" ref="781381545"/>
+                                                               <int key="firstAttribute">3</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="88276965"/>
+                                                               <int key="secondAttribute">3</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">108</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">3</int>
+                                                               <float key="scoringTypeFloat">9</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="97881575">
+                                                               <reference key="firstItem" ref="88276965"/>
+                                                               <int key="firstAttribute">6</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="781381545"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">20</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">8</int>
+                                                               <float key="scoringTypeFloat">29</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="77769865">
+                                                               <reference key="firstItem" ref="781381545"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="458815142"/>
+                                                               <int key="secondAttribute">5</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="8157502">
+                                                               <reference key="firstItem" ref="781381545"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="708032587"/>
+                                                               <int key="secondAttribute">5</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">0.0</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">2</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="183246038">
+                                                               <reference key="firstItem" ref="88276965"/>
+                                                               <int key="firstAttribute">4</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="458815142"/>
+                                                               <int key="secondAttribute">4</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">20</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">8</int>
+                                                               <float key="scoringTypeFloat">29</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="20925965">
+                                                               <reference key="firstItem" ref="88276965"/>
+                                                               <int key="firstAttribute">6</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="260033587"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">20</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">8</int>
+                                                               <float key="scoringTypeFloat">29</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="688537540">
+                                                               <reference key="firstItem" ref="88276965"/>
+                                                               <int key="firstAttribute">4</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="260033587"/>
+                                                               <int key="secondAttribute">4</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">20</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">8</int>
+                                                               <float key="scoringTypeFloat">29</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                                       <object class="IBNSLayoutConstraint" id="1018426303">
+                                                               <reference key="firstItem" ref="260033587"/>
+                                                               <int key="firstAttribute">5</int>
+                                                               <int key="relation">0</int>
+                                                               <reference key="secondItem" ref="458815142"/>
+                                                               <int key="secondAttribute">6</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBNSLayoutSymbolicConstant" key="constant">
+                                                                       <double key="value">12</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="88276965"/>
+                                                               <int key="scoringType">6</int>
+                                                               <float key="scoringTypeFloat">24</float>
+                                                               <int key="contentType">3</int>
+                                                       </object>
+                                               </array>
+                                               <reference key="parent" ref="735050660"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">7</int>
+                                               <reference key="object" ref="260033587"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <object class="IBNSLayoutConstraint" id="791978514">
+                                                               <reference key="firstItem" ref="260033587"/>
+                                                               <int key="firstAttribute">7</int>
+                                                               <int key="relation">0</int>
+                                                               <nil key="secondItem"/>
+                                                               <int key="secondAttribute">0</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">70</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="260033587"/>
+                                                               <int key="scoringType">3</int>
+                                                               <float key="scoringTypeFloat">9</float>
+                                                               <int key="contentType">1</int>
+                                                       </object>
+                                                       <reference ref="238866077"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">okButton</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">8</int>
+                                               <reference key="object" ref="458815142"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="85365463"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">cancelButton</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">9</int>
+                                               <reference key="object" ref="336402053"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="967115457"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">typePopup</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">10</int>
+                                               <reference key="object" ref="781381545"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="1016899923"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">userText</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">11</int>
+                                               <reference key="object" ref="252377551"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="680381038"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">userLabel</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">12</int>
+                                               <reference key="object" ref="708032587"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="835181265"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">serverText</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">13</int>
+                                               <reference key="object" ref="37302032"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="810993949"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">serverLabel</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">14</int>
+                                               <reference key="object" ref="599769836"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="103441974"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">typeLabel</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">15</int>
+                                               <reference key="object" ref="112629631"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="693045854"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">nameText</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">16</int>
+                                               <reference key="object" ref="150710550"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <object class="IBNSLayoutConstraint" id="831918914">
+                                                               <reference key="firstItem" ref="150710550"/>
+                                                               <int key="firstAttribute">7</int>
+                                                               <int key="relation">0</int>
+                                                               <nil key="secondItem"/>
+                                                               <int key="secondAttribute">0</int>
+                                                               <float key="multiplier">1</float>
+                                                               <object class="IBLayoutConstant" key="constant">
+                                                                       <double key="value">156</double>
+                                                               </object>
+                                                               <float key="priority">1000</float>
+                                                               <reference key="containingView" ref="150710550"/>
+                                                               <int key="scoringType">3</int>
+                                                               <float key="scoringTypeFloat">9</float>
+                                                               <int key="contentType">1</int>
+                                                       </object>
+                                                       <reference ref="41274883"/>
+                                               </array>
+                                               <reference key="parent" ref="88276965"/>
+                                               <string key="objectName">nameLabel</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">17</int>
+                                               <reference key="object" ref="191717939"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">18</int>
+                                               <reference key="object" ref="888271389"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">19</int>
+                                               <reference key="object" ref="301307470"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">20</int>
+                                               <reference key="object" ref="904961544"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">21</int>
+                                               <reference key="object" ref="273342708"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">22</int>
+                                               <reference key="object" ref="413934103"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">23</int>
+                                               <reference key="object" ref="1055671094"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">24</int>
+                                               <reference key="object" ref="873111545"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">25</int>
+                                               <reference key="object" ref="732345296"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">26</int>
+                                               <reference key="object" ref="318329324"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">27</int>
+                                               <reference key="object" ref="617034649"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">28</int>
+                                               <reference key="object" ref="244493668"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">29</int>
+                                               <reference key="object" ref="355628358"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">30</int>
+                                               <reference key="object" ref="456332886"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">31</int>
+                                               <reference key="object" ref="137867301"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">32</int>
+                                               <reference key="object" ref="705449622"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">33</int>
+                                               <reference key="object" ref="90621650"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">34</int>
+                                               <reference key="object" ref="390243852"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">35</int>
+                                               <reference key="object" ref="416463027"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">36</int>
+                                               <reference key="object" ref="843035247"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">37</int>
+                                               <reference key="object" ref="97881575"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">38</int>
+                                               <reference key="object" ref="77769865"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">39</int>
+                                               <reference key="object" ref="8157502"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">40</int>
+                                               <reference key="object" ref="183246038"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">41</int>
+                                               <reference key="object" ref="20925965"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">42</int>
+                                               <reference key="object" ref="688537540"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">43</int>
+                                               <reference key="object" ref="1018426303"/>
+                                               <reference key="parent" ref="88276965"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">44</int>
+                                               <reference key="object" ref="831918914"/>
+                                               <reference key="parent" ref="150710550"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">45</int>
+                                               <reference key="object" ref="41274883"/>
+                                               <reference key="parent" ref="150710550"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">46</int>
+                                               <reference key="object" ref="693045854"/>
+                                               <reference key="parent" ref="112629631"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">47</int>
+                                               <reference key="object" ref="103441974"/>
+                                               <reference key="parent" ref="599769836"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">48</int>
+                                               <reference key="object" ref="810993949"/>
+                                               <reference key="parent" ref="37302032"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">49</int>
+                                               <reference key="object" ref="835181265"/>
+                                               <reference key="parent" ref="708032587"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">50</int>
+                                               <reference key="object" ref="680381038"/>
+                                               <reference key="parent" ref="252377551"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">51</int>
+                                               <reference key="object" ref="1016899923"/>
+                                               <reference key="parent" ref="781381545"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">52</int>
+                                               <reference key="object" ref="967115457"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="913040062"/>
+                                               </array>
+                                               <reference key="parent" ref="336402053"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">53</int>
+                                               <reference key="object" ref="913040062"/>
+                                               <array class="NSMutableArray" key="children">
+                                                       <reference ref="349822264"/>
+                                               </array>
+                                               <reference key="parent" ref="967115457"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">54</int>
+                                               <reference key="object" ref="349822264"/>
+                                               <reference key="parent" ref="913040062"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">55</int>
+                                               <reference key="object" ref="85365463"/>
+                                               <reference key="parent" ref="458815142"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">56</int>
+                                               <reference key="object" ref="791978514"/>
+                                               <reference key="parent" ref="260033587"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">57</int>
+                                               <reference key="object" ref="238866077"/>
+                                               <reference key="parent" ref="260033587"/>
+                                       </object>
+                               </array>
+                       </object>
+                       <dictionary class="NSMutableDictionary" key="flattenedProperties">
+                               <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <boolean value="NO" key="10.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <boolean value="NO" key="11.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <object class="NSMutableAttributedString" key="11.notes">
+                                       <object class="NSMutableString" key="NSString">
+                                               <characters key="NS.bytes"/>
+                                       </object>
+                               </object>
+                               <boolean value="NO" key="12.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <boolean value="NO" key="13.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <object class="NSMutableAttributedString" key="13.notes">
+                                       <object class="NSMutableString" key="NSString">
+                                               <characters key="NS.bytes"/>
+                                       </object>
+                               </object>
+                               <boolean value="NO" key="14.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <object class="NSMutableAttributedString" key="14.notes">
+                                       <object class="NSMutableString" key="NSString">
+                                               <characters key="NS.bytes"/>
+                                       </object>
+                               </object>
+                               <boolean value="NO" key="15.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <array key="16.IBNSViewMetadataConstraints">
+                                       <reference ref="831918914"/>
+                               </array>
+                               <boolean value="NO" key="16.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <object class="NSMutableAttributedString" key="16.notes">
+                                       <object class="NSMutableString" key="NSString">
+                                               <characters key="NS.bytes"/>
+                                       </object>
+                               </object>
+                               <string key="17.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="25.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="26.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="30.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="31.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="32.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="33.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="34.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="35.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="36.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="38.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="39.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="40.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="41.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="42.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="43.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="45.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="46.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="47.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="48.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="49.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <boolean value="NO" key="5.NSWindowTemplate.visibleAtLaunch"/>
+                               <string key="50.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="51.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="52.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="53.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="54.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="55.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <array class="NSMutableArray" key="6.IBNSViewMetadataConstraints">
+                                       <reference ref="191717939"/>
+                                       <reference ref="888271389"/>
+                                       <reference ref="301307470"/>
+                                       <reference ref="904961544"/>
+                                       <reference ref="273342708"/>
+                                       <reference ref="413934103"/>
+                                       <reference ref="1055671094"/>
+                                       <reference ref="873111545"/>
+                                       <reference ref="732345296"/>
+                                       <reference ref="318329324"/>
+                                       <reference ref="617034649"/>
+                                       <reference ref="244493668"/>
+                                       <reference ref="355628358"/>
+                                       <reference ref="456332886"/>
+                                       <reference ref="137867301"/>
+                                       <reference ref="705449622"/>
+                                       <reference ref="90621650"/>
+                                       <reference ref="390243852"/>
+                                       <reference ref="416463027"/>
+                                       <reference ref="843035247"/>
+                                       <reference ref="97881575"/>
+                                       <reference ref="77769865"/>
+                                       <reference ref="8157502"/>
+                                       <reference ref="183246038"/>
+                                       <reference ref="20925965"/>
+                                       <reference ref="688537540"/>
+                                       <reference ref="1018426303"/>
+                               </array>
+                               <string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <array key="7.IBNSViewMetadataConstraints">
+                                       <reference ref="791978514"/>
+                               </array>
+                               <boolean value="NO" key="7.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <boolean value="NO" key="8.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                               <boolean value="NO" key="9.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
+                               <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                       </dictionary>
+                       <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+                       <nil key="activeLocalization"/>
+                       <dictionary class="NSMutableDictionary" key="localizations"/>
+                       <nil key="sourceID"/>
+                       <int key="maxID">69</int>
+               </object>
+               <object class="IBClassDescriber" key="IBDocument.Classes">
+                       <array class="NSMutableArray" key="referencedPartialClassDescriptions">
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">ConnController</string>
+                                       <string key="superclassName">NSWindowController</string>
+                                       <dictionary class="NSMutableDictionary" key="actions">
+                                               <string key="cancelConnEditor:">id</string>
+                                               <string key="saveConnEditor:">id</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="actionInfosByName">
+                                               <object class="IBActionInfo" key="cancelConnEditor:">
+                                                       <string key="name">cancelConnEditor:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                               <object class="IBActionInfo" key="saveConnEditor:">
+                                                       <string key="name">saveConnEditor:</string>
+                                                       <string key="candidateClassName">id</string>
+                                               </object>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="outlets">
+                                               <string key="auth">NSPopUpButton</string>
+                                               <string key="name">NSTextField</string>
+                                               <string key="ok">NSButton</string>
+                                               <string key="server">NSTextField</string>
+                                               <string key="user">NSTextField</string>
+                                       </dictionary>
+                                       <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
+                                               <object class="IBToOneOutletInfo" key="auth">
+                                                       <string key="name">auth</string>
+                                                       <string key="candidateClassName">NSPopUpButton</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="name">
+                                                       <string key="name">name</string>
+                                                       <string key="candidateClassName">NSTextField</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="ok">
+                                                       <string key="name">ok</string>
+                                                       <string key="candidateClassName">NSButton</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="server">
+                                                       <string key="name">server</string>
+                                                       <string key="candidateClassName">NSTextField</string>
+                                               </object>
+                                               <object class="IBToOneOutletInfo" key="user">
+                                                       <string key="name">user</string>
+                                                       <string key="candidateClassName">NSTextField</string>
+                                               </object>
+                                       </dictionary>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/ConnController.h</string>
+                                       </object>
+                               </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">NSLayoutConstraint</string>
+                                       <string key="superclassName">NSObject</string>
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                               <string key="majorKey">IBProjectSource</string>
+                                               <string key="minorKey">./Classes/NSLayoutConstraint.h</string>
+                                       </object>
+                               </object>
+                       </array>
+               </object>
+               <int key="IBDocument.localizationMode">0</int>
+               <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+               <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+               <int key="IBDocument.defaultPropertyAccessControl">3</int>
+               <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+                       <string key="NSMenuCheckmark">{11, 11}</string>
+                       <string key="NSMenuMixedState">{10, 3}</string>
+               </dictionary>
+               <bool key="IBDocument.UseAutolayout">YES</bool>
+       </data>
+</archive>
diff --git a/src/frontends/osx/strongSwan/en.lproj/Credits.rtf b/src/frontends/osx/strongSwan/en.lproj/Credits.rtf
new file mode 100644 (file)
index 0000000..5684d78
--- /dev/null
@@ -0,0 +1,32 @@
+{\rtf1\ansi\ansicpg1252\cocoartf1265
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue255;}
+\paperw11900\paperh16840\viewkind1\viewscale96
+\deftab720
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ri0
+
+\f0\fs24 \cf0 Based on the strongSwan Open Source project:\
+\
+  {\field{\*\fldinst{HYPERLINK "http://www.strongswan.org"}}{\fldrslt \cf2 \ul \ulc2 http://www.strongswan.org}}\
+\
+The App and the
+\i  charon-xpc
+\i0  privileged helper tool are licensed under the {\field{\*\fldinst{HYPERLINK "http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt"}}{\fldrslt \cf2 \ul \ulc2 General Public License Version 2}}. The strongSwan source code is available for download at:\
+\
+  {\field{\*\fldinst{HYPERLINK "http://download.strongswan.org/"}}{\fldrslt \cf2 \ul \ulc2 http://download.strongswan.org/}}\
+\
+The App and the
+\i  charon-xpc
+\i0  helper sources are not part of the main strongSwan distribution, but available separately under:\
+\
+  {\field{\*\fldinst{HYPERLINK "http://download.strongswan.org/osx/"}}{\fldrslt \cf2 \ul \ulc2 http://download.strongswan.org/osx/}}\
+\
+The
+\i  osx-sources
+\i0  tarball should get extracted into the strongSwan sources root directory. The
+\i  README.md
+\i0  in
+\i  src/frontends/osx
+\i0  has more information about building
+\i  charon-xpc
+\i0  and the App.}
\ No newline at end of file
diff --git a/src/frontends/osx/strongSwan/en.lproj/InfoPlist.strings b/src/frontends/osx/strongSwan/en.lproj/InfoPlist.strings
new file mode 100644 (file)
index 0000000..b92732c
--- /dev/null
@@ -0,0 +1 @@
+/* Localized versions of Info.plist keys */
diff --git a/src/frontends/osx/strongSwan/en.lproj/LogWindow.xib b/src/frontends/osx/strongSwan/en.lproj/LogWindow.xib
new file mode 100644 (file)
index 0000000..4c32618
--- /dev/null
@@ -0,0 +1,587 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+       <data>
+               <int key="IBDocument.SystemTarget">1080</int>
+               <string key="IBDocument.SystemVersion">12D78</string>
+               <string key="IBDocument.InterfaceBuilderVersion">2840</string>
+               <string key="IBDocument.AppKitVersion">1187.37</string>
+               <string key="IBDocument.HIToolboxVersion">626.00</string>
+               <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+                       <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+                       <string key="NS.object.0">2840</string>
+               </object>
+               <array key="IBDocument.IntegratedClassDependencies">
+                       <string>IBNSLayoutConstraint</string>
+                       <string>NSCustomObject</string>
+                       <string>NSScrollView</string>
+                       <string>NSScroller</string>
+                       <string>NSTextView</string>
+                       <string>NSView</string>
+                       <string>NSWindowTemplate</string>
+               </array>
+               <array key="IBDocument.PluginDependencies">
+                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+               </array>
+               <object class="NSMutableDictionary" key="IBDocument.Metadata">
+                       <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+                       <integer value="1" key="NS.object.0"/>
+               </object>
+               <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+                       <object class="NSCustomObject" id="1001">
+                               <string key="NSClassName">LogController</string>
+                       </object>
+                       <object class="NSCustomObject" id="1003">
+                               <string key="NSClassName">FirstResponder</string>
+                       </object>
+                       <object class="NSCustomObject" id="1004">
+                               <string key="NSClassName">NSApplication</string>
+                       </object>
+                       <object class="NSWindowTemplate" id="995804331">
+                               <int key="NSWindowStyleMask">15</int>
+                               <int key="NSWindowBacking">2</int>
+                               <string key="NSWindowRect">{{121, 123}, {547, 312}}</string>
+                               <int key="NSWTFlags">611845120</int>
+                               <string key="NSWindowTitle">Window</string>
+                               <string key="NSWindowClass">NSWindow</string>
+                               <nil key="NSViewClass"/>
+                               <nil key="NSUserInterfaceItemIdentifier"/>
+                               <object class="NSView" key="NSWindowView" id="875316202">
+                                       <reference key="NSNextResponder"/>
+                                       <int key="NSvFlags">256</int>
+                                       <array class="NSMutableArray" key="NSSubviews">
+                                               <object class="NSScrollView" id="12648948">
+                                                       <reference key="NSNextResponder" ref="875316202"/>
+                                                       <int key="NSvFlags">256</int>
+                                                       <array class="NSMutableArray" key="NSSubviews">
+                                                               <object class="NSClipView" id="710672467">
+                                                                       <reference key="NSNextResponder" ref="12648948"/>
+                                                                       <int key="NSvFlags">2304</int>
+                                                                       <array class="NSMutableArray" key="NSSubviews">
+                                                                               <object class="NSTextView" id="476923000">
+                                                                                       <reference key="NSNextResponder" ref="710672467"/>
+                                                                                       <int key="NSvFlags">2322</int>
+                                                                                       <string key="NSFrameSize">{525, 286}</string>
+                                                                                       <reference key="NSSuperview" ref="710672467"/>
+                                                                                       <reference key="NSWindow"/>
+                                                                                       <reference key="NSNextKeyView" ref="757345988"/>
+                                                                                       <string key="NSReuseIdentifierKey">_NS:13</string>
+                                                                                       <object class="NSTextContainer" key="NSTextContainer" id="756204541">
+                                                                                               <object class="NSLayoutManager" key="NSLayoutManager">
+                                                                                                       <object class="NSTextStorage" key="NSTextStorage">
+                                                                                                               <object class="NSMutableString" key="NSString">
+                                                                                                                       <characters key="NS.bytes"/>
+                                                                                                               </object>
+                                                                                                               <nil key="NSDelegate"/>
+                                                                                                       </object>
+                                                                                                       <array class="NSMutableArray" key="NSTextContainers">
+                                                                                                               <reference ref="756204541"/>
+                                                                                                       </array>
+                                                                                                       <int key="NSLMFlags">166</int>
+                                                                                                       <nil key="NSDelegate"/>
+                                                                                               </object>
+                                                                                               <reference key="NSTextView" ref="476923000"/>
+                                                                                               <double key="NSWidth">525</double>
+                                                                                               <int key="NSTCFlags">1</int>
+                                                                                       </object>
+                                                                                       <object class="NSTextViewSharedData" key="NSSharedData">
+                                                                                               <int key="NSFlags">10593</int>
+                                                                                               <int key="NSTextCheckingTypes">0</int>
+                                                                                               <nil key="NSMarkedAttributes"/>
+                                                                                               <object class="NSColor" key="NSBackgroundColor" id="1072550816">
+                                                                                                       <int key="NSColorSpace">3</int>
+                                                                                                       <bytes key="NSWhite">MQA</bytes>
+                                                                                               </object>
+                                                                                               <dictionary key="NSSelectedAttributes">
+                                                                                                       <object class="NSColor" key="NSBackgroundColor">
+                                                                                                               <int key="NSColorSpace">6</int>
+                                                                                                               <string key="NSCatalogName">System</string>
+                                                                                                               <string key="NSColorName">selectedTextBackgroundColor</string>
+                                                                                                               <object class="NSColor" key="NSColor">
+                                                                                                                       <int key="NSColorSpace">3</int>
+                                                                                                                       <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+                                                                                                               </object>
+                                                                                                       </object>
+                                                                                                       <object class="NSColor" key="NSColor">
+                                                                                                               <int key="NSColorSpace">6</int>
+                                                                                                               <string key="NSCatalogName">System</string>
+                                                                                                               <string key="NSColorName">selectedTextColor</string>
+                                                                                                               <object class="NSColor" key="NSColor" id="120554890">
+                                                                                                                       <int key="NSColorSpace">3</int>
+                                                                                                                       <bytes key="NSWhite">MAA</bytes>
+                                                                                                               </object>
+                                                                                                       </object>
+                                                                                               </dictionary>
+                                                                                               <reference key="NSInsertionColor" ref="120554890"/>
+                                                                                               <dictionary key="NSLinkAttributes">
+                                                                                                       <object class="NSColor" key="NSColor">
+                                                                                                               <int key="NSColorSpace">1</int>
+                                                                                                               <bytes key="NSRGB">MCAwIDEAA</bytes>
+                                                                                                       </object>
+                                                                                                       <object class="NSCursor" key="NSCursor">
+                                                                                                               <string key="NSHotSpot">{8, -8}</string>
+                                                                                                               <int key="NSCursorType">13</int>
+                                                                                                       </object>
+                                                                                                       <integer value="1" key="NSUnderline"/>
+                                                                                               </dictionary>
+                                                                                               <object class="NSParagraphStyle" key="NSDefaultParagraphStyle">
+                                                                                                       <int key="NSAlignment">4</int>
+                                                                                                       <nil key="NSTabStops"/>
+                                                                                                       <int key="NSWritingDirection">1</int>
+                                                                                               </object>
+                                                                                               <nil key="NSTextFinder"/>
+                                                                                               <int key="NSPreferredTextFinderStyle">1</int>
+                                                                                       </object>
+                                                                                       <int key="NSTVFlags">6</int>
+                                                                                       <string key="NSMaxSize">{548, 10000000}</string>
+                                                                                       <nil key="NSDelegate"/>
+                                                                               </object>
+                                                                       </array>
+                                                                       <string key="NSFrame">{{1, 1}, {525, 286}}</string>
+                                                                       <reference key="NSSuperview" ref="12648948"/>
+                                                                       <reference key="NSWindow"/>
+                                                                       <reference key="NSNextKeyView" ref="476923000"/>
+                                                                       <string key="NSReuseIdentifierKey">_NS:11</string>
+                                                                       <reference key="NSDocView" ref="476923000"/>
+                                                                       <reference key="NSBGColor" ref="1072550816"/>
+                                                                       <object class="NSCursor" key="NSCursor">
+                                                                               <string key="NSHotSpot">{4, 5}</string>
+                                                                               <object class="NSImage" key="NSImage">
+                                                                                       <int key="NSImageFlags">12582912</int>
+                                                                                       <array class="NSMutableArray" key="NSReps">
+                                                                                               <array>
+                                                                                                       <integer value="0"/>
+                                                                                                       <object class="NSBitmapImageRep">
+                                                                                                               <object class="NSData" key="NSTIFFRepresentation">
+                                                                                                                       <bytes key="NS.bytes">TU0AKgAAEAj///8A////qwAAAP8AAAD/AwMD/BYWFtIFBQVuAAAABv///wD///8E6+vrTGhoaLYtLS3p
+BAQE/QAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/AAAA/wAAAP8EBATSX19fK9HR0ZciIiLv
+AAAA/wAAAP8AAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////CsPDw0CRkZG1FxcX9AAAAP8bGxvr
+ICAg8AAAAP8ICAjlFRUVVQAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wrm5uab
+FxcX9AAAAP8AAAD/AQEB3wAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///zaXl5fGAAAA/wAAAP8AAABR////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r
+AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/
+AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/
+AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r
+AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///80mpqaxQAAAP8AAAD/AAAATv///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////CuXl5ZYeHh7xAAAA/wAAAP8CAgLXAAAAD////wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////EKurq0mOjo63FxcX9AAAAP8bGxvrICAg8AAAAP8ICAjlHh4eXAAAABj///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/BAQE1V9fXyvS0tKZICAg8AAAAP8AAAD/
+AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/FBQU1AUFBXEAAAAG////AP///wTr6+tO
+ZWVluC4uLuoAAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8AABABAAADAAAAAQAgAAABAQADAAAAAQAgAAABAgADAAAABAAA
+EM4BAwADAAAAAQABAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAE
+AAABFgADAAAAAQAgAAABFwAEAAAAAQAAEAABGgAFAAAAAQAAENYBGwAFAAAAAQAAEN4BHAADAAAAAQAB
+AAABKAADAAAAAQACAAABUgADAAAAAQACAAABUwADAAAABAAAEOYAAAAAAAgACAAIAAgSAAAAACAAABIA
+AAAAIAAAAAEAAQABAAE</bytes>
+                                                                                                               </object>
+                                                                                                       </object>
+                                                                                               </array>
+                                                                                               <array>
+                                                                                                       <integer value="0"/>
+                                                                                                       <object class="NSBitmapImageRep">
+                                                                                                               <object class="NSData" key="NSTIFFRepresentation">
+                                                                                                                       <bytes key="NS.bytes">TU0AKgAABAj///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///+qAAAA/////6oAAAD/////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A
+////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP8AAAD/
+AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+q
+AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///6oAAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///8A////qgAAAP////+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A
+////AP///wD///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A
+////AP///wD///8AAA4BAAADAAAAAQAQAAABAQADAAAAAQAQAAABAgADAAAABAAABLYBAwADAAAAAQAB
+AAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQAQ
+AAABFwAEAAAAAQAABAABHAADAAAAAQABAAABUgADAAAAAQACAAABUwADAAAABAAABL6HcwAHAAAHqAAA
+BMYAAAAAAAgACAAIAAgAAQABAAEAAQAAB6hhcHBsAiAAAG1udHJSR0IgWFlaIAfZAAIAGQALABoAC2Fj
+c3BBUFBMAAAAAGFwcGwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2Rlc2MAAAEIAAAAb2RzY20AAAF4AAAFbGNw
+cnQAAAbkAAAAOHd0cHQAAAccAAAAFHJYWVoAAAcwAAAAFGdYWVoAAAdEAAAAFGJYWVoAAAdYAAAAFHJU
+UkMAAAdsAAAADmNoYWQAAAd8AAAALGJUUkMAAAdsAAAADmdUUkMAAAdsAAAADmRlc2MAAAAAAAAAFEdl
+bmVyaWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAB4AAAAMc2tTSwAA
+ACgAAAF4aHJIUgAAACgAAAGgY2FFUwAAACQAAAHIcHRCUgAAACYAAAHsdWtVQQAAACoAAAISZnJGVQAA
+ACgAAAI8emhUVwAAABYAAAJkaXRJVAAAACgAAAJ6bmJOTwAAACYAAAKia29LUgAAABYAAALIY3NDWgAA
+ACIAAALeaGVJTAAAAB4AAAMAZGVERQAAACwAAAMeaHVIVQAAACgAAANKc3ZTRQAAACYAAAKiemhDTgAA
+ABYAAANyamFKUAAAABoAAAOIcm9STwAAACQAAAOiZWxHUgAAACIAAAPGcHRQTwAAACYAAAPobmxOTAAA
+ACgAAAQOZXNFUwAAACYAAAPodGhUSAAAACQAAAQ2dHJUUgAAACIAAARaZmlGSQAAACgAAAR8cGxQTAAA
+ACwAAASkcnVSVQAAACIAAATQYXJFRwAAACYAAATyZW5VUwAAACYAAAUYZGFESwAAAC4AAAU+AFYBYQBl
+AG8AYgBlAGMAbgD9ACAAUgBHAEIAIABwAHIAbwBmAGkAbABHAGUAbgBlAHIAaQENAGsAaQAgAFIARwBC
+ACAAcAByAG8AZgBpAGwAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcAZQBuAOgAcgBpAGMAUABlAHIAZgBp
+AGwAIABSAEcAQgAgAEcAZQBuAOkAcgBpAGMAbwQXBDAEMwQwBDsETAQ9BDgEOQAgBD8EQAQ+BEQEMAQ5
+BDsAIABSAEcAQgBQAHIAbwBmAGkAbAAgAGcA6QBuAOkAcgBpAHEAdQBlACAAUgBWAEKQGnUoACAAUgBH
+AEIAIIJyX2ljz4/wAFAAcgBvAGYAaQBsAG8AIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMAbwBHAGUAbgBl
+AHIAaQBzAGsAIABSAEcAQgAtAHAAcgBvAGYAaQBsx3y8GAAgAFIARwBCACDVBLhc0wzHfABPAGIAZQBj
+AG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwF5AXoBdUF5AXZBdwAIABSAEcAQgAgBdsF3AXcBdkAQQBs
+AGwAZwBlAG0AZQBpAG4AZQBzACAAUgBHAEIALQBQAHIAbwBmAGkAbADBAGwAdABhAGwA4QBuAG8AcwAg
+AFIARwBCACAAcAByAG8AZgBpAGxmbpAaACAAUgBHAEIAIGPPj/Blh072TgCCLAAgAFIARwBCACAw1zDt
+MNUwoTCkMOsAUAByAG8AZgBpAGwAIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMDkwO1A70DuQO6A8wAIAPA
+A8EDvwPGA68DuwAgAFIARwBCAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDpAHIAaQBjAG8AQQBs
+AGcAZQBtAGUAZQBuACAAUgBHAEIALQBwAHIAbwBmAGkAZQBsDkIOGw4jDkQOHw4lDkwAIABSAEcAQgAg
+DhcOMQ5IDicORA4bAEcAZQBuAGUAbAAgAFIARwBCACAAUAByAG8AZgBpAGwAaQBZAGwAZQBpAG4AZQBu
+ACAAUgBHAEIALQBwAHIAbwBmAGkAaQBsAGkAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAAcAByAG8AZgBp
+AGwAIABSAEcAQgQeBDEESQQ4BDkAIAQ/BEAEPgREBDgEOwRMACAAUgBHAEIGRQZEBkEAIAYqBjkGMQZK
+BkEAIABSAEcAQgAgBicGRAY5BicGRQBHAGUAbgBlAHIAaQBjACAAUgBHAEIAIABQAHIAbwBmAGkAbABl
+AEcAZQBuAGUAcgBlAGwAIABSAEcAQgAtAGIAZQBzAGsAcgBpAHYAZQBsAHMAZXRleHQAAAAAQ29weXJp
+Z2h0IDIwMDcgQXBwbGUgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZlZC4AWFlaIAAAAAAAAPNSAAEAAAAB
+Fs9YWVogAAAAAAAAdE0AAD3uAAAD0FhZWiAAAAAAAABadQAArHMAABc0WFlaIAAAAAAAACgaAAAVnwAA
+uDZjdXJ2AAAAAAAAAAEBzQAAc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAA
+wGw</bytes>
+                                                                                                               </object>
+                                                                                                       </object>
+                                                                                               </array>
+                                                                                       </array>
+                                                                                       <object class="NSColor" key="NSColor">
+                                                                                               <int key="NSColorSpace">3</int>
+                                                                                               <bytes key="NSWhite">MCAwAA</bytes>
+                                                                                       </object>
+                                                                               </object>
+                                                                       </object>
+                                                                       <int key="NScvFlags">4</int>
+                                                               </object>
+                                                               <object class="NSScroller" id="862774956">
+                                                                       <reference key="NSNextResponder" ref="12648948"/>
+                                                                       <int key="NSvFlags">256</int>
+                                                                       <string key="NSFrame">{{510, 1}, {16, 286}}</string>
+                                                                       <reference key="NSSuperview" ref="12648948"/>
+                                                                       <reference key="NSWindow"/>
+                                                                       <string key="NSReuseIdentifierKey">_NS:83</string>
+                                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                                                       <reference key="NSTarget" ref="12648948"/>
+                                                                       <string key="NSAction">_doScroller:</string>
+                                                                       <double key="NSCurValue">1</double>
+                                                                       <double key="NSPercent">0.85256409645080566</double>
+                                                               </object>
+                                                               <object class="NSScroller" id="757345988">
+                                                                       <reference key="NSNextResponder" ref="12648948"/>
+                                                                       <int key="NSvFlags">256</int>
+                                                                       <string key="NSFrame">{{1, 271}, {525, 16}}</string>
+                                                                       <reference key="NSSuperview" ref="12648948"/>
+                                                                       <reference key="NSWindow"/>
+                                                                       <reference key="NSNextKeyView" ref="710672467"/>
+                                                                       <string key="NSReuseIdentifierKey">_NS:33</string>
+                                                                       <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+                                                                       <int key="NSsFlags">1</int>
+                                                                       <reference key="NSTarget" ref="12648948"/>
+                                                                       <string key="NSAction">_doScroller:</string>
+                                                                       <double key="NSCurValue">1</double>
+                                                                       <double key="NSPercent">0.94565218687057495</double>
+                                                               </object>
+                                                       </array>
+                                                       <string key="NSFrame">{{10, 10}, {527, 288}}</string>
+                                                       <reference key="NSSuperview" ref="875316202"/>
+                                                       <reference key="NSWindow"/>
+                                                       <reference key="NSNextKeyView" ref="710672467"/>
+                                                       <string key="NSReuseIdentifierKey">_NS:9</string>
+                                                       <int key="NSsFlags">133170</int>
+                                                       <reference key="NSVScroller" ref="862774956"/>
+                                                       <reference key="NSHScroller" ref="757345988"/>
+                                                       <reference key="NSContentView" ref="710672467"/>
+                                                       <double key="NSMinMagnification">0.25</double>
+                                                       <double key="NSMaxMagnification">4</double>
+                                                       <double key="NSMagnification">1</double>
+                                               </object>
+                                       </array>
+                                       <string key="NSFrameSize">{547, 312}</string>
+                                       <reference key="NSSuperview"/>
+                                       <reference key="NSWindow"/>
+                                       <reference key="NSNextKeyView" ref="12648948"/>
+                                       <string key="NSReuseIdentifierKey">_NS:20</string>
+                               </object>
+                               <string key="NSScreenRect">{{0, 0}, {1366, 746}}</string>
+                               <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
+                               <bool key="NSWindowIsRestorable">YES</bool>
+                       </object>
+               </array>
+               <object class="IBObjectContainer" key="IBDocument.Objects">
+                       <array class="NSMutableArray" key="connectionRecords">
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">textView</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="476923000"/>
+                                       </object>
+                                       <int key="connectionID">15</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">window</string>
+                                               <reference key="source" ref="1001"/>
+                                               <reference key="destination" ref="995804331"/>
+                                       </object>
+                                       <int key="connectionID">16</int>
+                               </object>
+                       </array>
+                       <object class="IBMutableOrderedSet" key="objectRecords">
+                               <array key="orderedObjects">
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">0</int>
+                                               <array key="object" id="0"/>
+                                               <reference key="children" ref="1000"/>
+                                               <nil key="parent"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">-2</int>
+                                               <reference key="object" ref="1001"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">File's Owner</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">-1</int>
+                                               <reference key="object" ref="1003"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">First Responder</string>
+                                       </object>
+                                     &n