From 360bd903e955beaf3a49dff493d0a28fe12fe446 Mon Sep 17 00:00:00 2001 From: a Date: Fri, 8 Feb 2013 19:41:05 +0400 Subject: [PATCH] Unfinished --- iDNA/iDNA.xcodeproj/project.pbxproj | 353 + .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 23440 bytes .../xcdebugger/Breakpoints.xcbkptlist | 5 + .../a.xcuserdatad/xcschemes/iDNA.xcscheme | 86 + .../xcschemes/xcschememanagement.plist | 22 + iDNA/iDNA/AppDelegate.h | 24 + iDNA/iDNA/AppDelegate.m | 166 + iDNA/iDNA/Cell.h | 13 + iDNA/iDNA/Cell.m | 84 + iDNA/iDNA/Evolution.h | 34 + iDNA/iDNA/Evolution.m | 161 + iDNA/iDNA/EvolutionProgressDelegate.h | 8 + iDNA/iDNA/HybridizeStrategy.h | 20 + iDNA/iDNA/HybridizeStrategy.m | 60 + iDNA/iDNA/NucleobaseType.h | 9 + iDNA/iDNA/NucleobaseType.m | 28 + iDNA/iDNA/en.lproj/Credits.rtf | 29 + iDNA/iDNA/en.lproj/InfoPlist.strings | 2 + iDNA/iDNA/en.lproj/Localizable.strings | 17 + iDNA/iDNA/en.lproj/MainMenu.xib | 5953 +++++++++++++++++ iDNA/iDNA/iDNA-Info.plist | 34 + iDNA/iDNA/iDNA-Prefix.pch | 7 + iDNA/iDNA/main.m | 6 + iDNA/iDNA/ru.lproj/Credits.rtf | 29 + iDNA/iDNA/ru.lproj/InfoPlist.strings | 2 + iDNA/iDNA/ru.lproj/Localizable.strings | 17 + iDNA/iDNA/ru.lproj/MainMenu.xib | 5897 ++++++++++++++++ 28 files changed, 13073 insertions(+) create mode 100644 iDNA/iDNA.xcodeproj/project.pbxproj create mode 100644 iDNA/iDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/a.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcschemes/iDNA.xcscheme create mode 100644 iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 iDNA/iDNA/AppDelegate.h create mode 100644 iDNA/iDNA/AppDelegate.m create mode 100644 iDNA/iDNA/Cell.h create mode 100644 iDNA/iDNA/Cell.m create mode 100644 iDNA/iDNA/Evolution.h create mode 100644 iDNA/iDNA/Evolution.m create mode 100644 iDNA/iDNA/EvolutionProgressDelegate.h create mode 100644 iDNA/iDNA/HybridizeStrategy.h create mode 100644 iDNA/iDNA/HybridizeStrategy.m create mode 100644 iDNA/iDNA/NucleobaseType.h create mode 100644 iDNA/iDNA/NucleobaseType.m create mode 100644 iDNA/iDNA/en.lproj/Credits.rtf create mode 100644 iDNA/iDNA/en.lproj/InfoPlist.strings create mode 100644 iDNA/iDNA/en.lproj/Localizable.strings create mode 100644 iDNA/iDNA/en.lproj/MainMenu.xib create mode 100644 iDNA/iDNA/iDNA-Info.plist create mode 100644 iDNA/iDNA/iDNA-Prefix.pch create mode 100644 iDNA/iDNA/main.m create mode 100644 iDNA/iDNA/ru.lproj/Credits.rtf create mode 100644 iDNA/iDNA/ru.lproj/InfoPlist.strings create mode 100644 iDNA/iDNA/ru.lproj/Localizable.strings create mode 100644 iDNA/iDNA/ru.lproj/MainMenu.xib diff --git a/iDNA/iDNA.xcodeproj/project.pbxproj b/iDNA/iDNA.xcodeproj/project.pbxproj new file mode 100644 index 0000000..b8bf539 --- /dev/null +++ b/iDNA/iDNA.xcodeproj/project.pbxproj @@ -0,0 +1,353 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 00A8CAF316BE75B2004FBC93 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 00A8CAF516BE75B2004FBC93 /* Localizable.strings */; }; + 00AB6AC616996A6200B01285 /* HybridizeStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AB6AC516996A6200B01285 /* HybridizeStrategy.m */; }; + 00AF4DAF168743A400A45A83 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00AF4DAE168743A400A45A83 /* Cocoa.framework */; }; + 00AF4DB9168743A400A45A83 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 00AF4DB7168743A400A45A83 /* InfoPlist.strings */; }; + 00AF4DBB168743A400A45A83 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AF4DBA168743A400A45A83 /* main.m */; }; + 00AF4DBF168743A400A45A83 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 00AF4DBD168743A400A45A83 /* Credits.rtf */; }; + 00AF4DC2168743A400A45A83 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AF4DC1168743A400A45A83 /* AppDelegate.m */; }; + 00AF4DC5168743A400A45A83 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 00AF4DC3168743A400A45A83 /* MainMenu.xib */; }; + 00AF4DD116875F4A00A45A83 /* Evolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AF4DD016875F4A00A45A83 /* Evolution.m */; }; + 00C691FC1688DC820077E1D8 /* Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 00C691F91688DC820077E1D8 /* Cell.m */; }; + 00C691FD1688DC820077E1D8 /* NucleobaseType.m in Sources */ = {isa = PBXBuildFile; fileRef = 00C691FB1688DC820077E1D8 /* NucleobaseType.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 002AA28316BE7A1600B506A3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; + 002AA28416BE7A1700B506A3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/MainMenu.xib; sourceTree = ""; }; + 002AA28516BE7A1700B506A3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; + 002AA28616BE7A1700B506A3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = ru; path = ru.lproj/Credits.rtf; sourceTree = ""; }; + 00A8CAF416BE75B2004FBC93 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + 00AB6AC416996A6200B01285 /* HybridizeStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HybridizeStrategy.h; sourceTree = ""; }; + 00AB6AC516996A6200B01285 /* HybridizeStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HybridizeStrategy.m; sourceTree = ""; }; + 00AF4DAA168743A400A45A83 /* iDNA.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iDNA.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 00AF4DAE168743A400A45A83 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 00AF4DB1168743A400A45A83 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 00AF4DB2168743A400A45A83 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 00AF4DB3168743A400A45A83 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 00AF4DB6168743A400A45A83 /* iDNA-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iDNA-Info.plist"; sourceTree = ""; }; + 00AF4DB8168743A400A45A83 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 00AF4DBA168743A400A45A83 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 00AF4DBC168743A400A45A83 /* iDNA-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iDNA-Prefix.pch"; sourceTree = ""; }; + 00AF4DBE168743A400A45A83 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + 00AF4DC0168743A400A45A83 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 00AF4DC1168743A400A45A83 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 00AF4DC4168743A400A45A83 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + 00AF4DCF16875F4A00A45A83 /* Evolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Evolution.h; sourceTree = ""; }; + 00AF4DD016875F4A00A45A83 /* Evolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Evolution.m; sourceTree = ""; }; + 00C691F81688DC820077E1D8 /* Cell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Cell.h; sourceTree = ""; }; + 00C691F91688DC820077E1D8 /* Cell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Cell.m; sourceTree = ""; }; + 00C691FA1688DC820077E1D8 /* NucleobaseType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NucleobaseType.h; sourceTree = ""; }; + 00C691FB1688DC820077E1D8 /* NucleobaseType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NucleobaseType.m; sourceTree = ""; }; + 00DBEF4D168A2C0100C5436D /* EvolutionProgressDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EvolutionProgressDelegate.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00AF4DA7168743A400A45A83 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 00AF4DAF168743A400A45A83 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00AF4D9F168743A400A45A83 = { + isa = PBXGroup; + children = ( + 00AF4DB4168743A400A45A83 /* iDNA */, + 00AF4DAD168743A400A45A83 /* Frameworks */, + 00AF4DAB168743A400A45A83 /* Products */, + ); + sourceTree = ""; + }; + 00AF4DAB168743A400A45A83 /* Products */ = { + isa = PBXGroup; + children = ( + 00AF4DAA168743A400A45A83 /* iDNA.app */, + ); + name = Products; + sourceTree = ""; + }; + 00AF4DAD168743A400A45A83 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 00AF4DAE168743A400A45A83 /* Cocoa.framework */, + 00AF4DB0168743A400A45A83 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 00AF4DB0168743A400A45A83 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 00AF4DB1168743A400A45A83 /* AppKit.framework */, + 00AF4DB2168743A400A45A83 /* CoreData.framework */, + 00AF4DB3168743A400A45A83 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 00AF4DB4168743A400A45A83 /* iDNA */ = { + isa = PBXGroup; + children = ( + 00AB6AC416996A6200B01285 /* HybridizeStrategy.h */, + 00AB6AC516996A6200B01285 /* HybridizeStrategy.m */, + 00C691F81688DC820077E1D8 /* Cell.h */, + 00C691F91688DC820077E1D8 /* Cell.m */, + 00A8CAF516BE75B2004FBC93 /* Localizable.strings */, + 00C691FA1688DC820077E1D8 /* NucleobaseType.h */, + 00C691FB1688DC820077E1D8 /* NucleobaseType.m */, + 00AF4DC0168743A400A45A83 /* AppDelegate.h */, + 00AF4DC1168743A400A45A83 /* AppDelegate.m */, + 00AF4DC3168743A400A45A83 /* MainMenu.xib */, + 00AF4DB5168743A400A45A83 /* Supporting Files */, + 00AF4DCF16875F4A00A45A83 /* Evolution.h */, + 00AF4DD016875F4A00A45A83 /* Evolution.m */, + 00DBEF4D168A2C0100C5436D /* EvolutionProgressDelegate.h */, + ); + path = iDNA; + sourceTree = ""; + }; + 00AF4DB5168743A400A45A83 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00AF4DB6168743A400A45A83 /* iDNA-Info.plist */, + 00AF4DB7168743A400A45A83 /* InfoPlist.strings */, + 00AF4DBA168743A400A45A83 /* main.m */, + 00AF4DBC168743A400A45A83 /* iDNA-Prefix.pch */, + 00AF4DBD168743A400A45A83 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 00AF4DA9168743A400A45A83 /* iDNA */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00AF4DC8168743A400A45A83 /* Build configuration list for PBXNativeTarget "iDNA" */; + buildPhases = ( + 00AF4DA6168743A400A45A83 /* Sources */, + 00AF4DA7168743A400A45A83 /* Frameworks */, + 00AF4DA8168743A400A45A83 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iDNA; + productName = iDNA; + productReference = 00AF4DAA168743A400A45A83 /* iDNA.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 00AF4DA1168743A400A45A83 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = a; + }; + buildConfigurationList = 00AF4DA4168743A400A45A83 /* Build configuration list for PBXProject "iDNA" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + "ru-RU", + ru, + ); + mainGroup = 00AF4D9F168743A400A45A83; + productRefGroup = 00AF4DAB168743A400A45A83 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 00AF4DA9168743A400A45A83 /* iDNA */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 00AF4DA8168743A400A45A83 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00AF4DB9168743A400A45A83 /* InfoPlist.strings in Resources */, + 00AF4DBF168743A400A45A83 /* Credits.rtf in Resources */, + 00AF4DC5168743A400A45A83 /* MainMenu.xib in Resources */, + 00A8CAF316BE75B2004FBC93 /* Localizable.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 00AF4DA6168743A400A45A83 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00AF4DBB168743A400A45A83 /* main.m in Sources */, + 00AF4DC2168743A400A45A83 /* AppDelegate.m in Sources */, + 00AF4DD116875F4A00A45A83 /* Evolution.m in Sources */, + 00C691FC1688DC820077E1D8 /* Cell.m in Sources */, + 00C691FD1688DC820077E1D8 /* NucleobaseType.m in Sources */, + 00AB6AC616996A6200B01285 /* HybridizeStrategy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 00A8CAF516BE75B2004FBC93 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 00A8CAF416BE75B2004FBC93 /* en */, + 002AA28316BE7A1600B506A3 /* ru */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 00AF4DB7168743A400A45A83 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 00AF4DB8168743A400A45A83 /* en */, + 002AA28516BE7A1700B506A3 /* ru */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 00AF4DBD168743A400A45A83 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 00AF4DBE168743A400A45A83 /* en */, + 002AA28616BE7A1700B506A3 /* ru */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + 00AF4DC3168743A400A45A83 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 00AF4DC4168743A400A45A83 /* en */, + 002AA28416BE7A1700B506A3 /* ru */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 00AF4DC6168743A400A45A83 /* 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_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 00AF4DC7168743A400A45A83 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + SDKROOT = macosx; + }; + name = Release; + }; + 00AF4DC9168743A400A45A83 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iDNA/iDNA-Prefix.pch"; + INFOPLIST_FILE = "iDNA/iDNA-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 00AF4DCA168743A400A45A83 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "iDNA/iDNA-Prefix.pch"; + INFOPLIST_FILE = "iDNA/iDNA-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 00AF4DA4168743A400A45A83 /* Build configuration list for PBXProject "iDNA" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00AF4DC6168743A400A45A83 /* Debug */, + 00AF4DC7168743A400A45A83 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 00AF4DC8168743A400A45A83 /* Build configuration list for PBXNativeTarget "iDNA" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00AF4DC9168743A400A45A83 /* Debug */, + 00AF4DCA168743A400A45A83 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 00AF4DA1168743A400A45A83 /* Project object */; +} diff --git a/iDNA/iDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iDNA/iDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..2d38afe --- /dev/null +++ b/iDNA/iDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/a.xcuserdatad/UserInterfaceState.xcuserstate b/iDNA/iDNA.xcodeproj/project.xcworkspace/xcuserdata/a.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..d24719c576d25b43bd8b98964d03e6cf5b3f47b0 GIT binary patch literal 23440 zcmd6P2V7Iv_xQbUG6Dn)8$#GgAcPGWj1Z-QcQP zTWzgc>+H~4t*xVb+S+BOtJ?j)FOLAR+V=nV`}_X>@)44E?>pz*bI(2No_lLs8ZGwL zLyt5B^J7z4(F zdSC_wVv*3BK z9~=e8z$@T5I1A2!H^KYhJoplP1-=KD!42>SWFQOOpcwi>KNtc-VHgaDX)qmTz)YA0 zv!MoRp$_U{AuNK$umlc<74R-N3XX2L;I02jhVa520W zE`j&K`{8474cq`X!cFiAxE($Tcfn`jbMOE>2oJ%-@F;v0o`SE#cj1Td2lylW4gL=Q zfPWHzAPFzRoA4pTgoFqpf{A!SPACW^kw7F8Dk6zUC9;TYLPO*bMxu}?Ck7K0L^Uyt z7*32LMiVu}IHH~~6XS^nViI8`T8MUH1~H$whgd)?B$g0siFHIL(M7B$HV_+$O~htm zC-F4#46%!NmUxcXPaGzW60Z?&5T}WA#GAxB#QVet#3#gg;#1-a;v(@4afSGUq)1QF zoAf0mWFQ$thLMqEEU6$>q=wXzI#N&OkVdkQ>`#`H1IS8p7+FJ(BTb}*oJdY0tz;Y7 zPEIH1kaNj-RakN>U-)Z>N<6U`i&-NlBQ@8?L~Xj zKD3zjr-Nw&T|^ht{poUgFkL}c(?jSH^hkOvT|?K=_4EYVLO0RPw2ijYQ|PJm409J!+gS=XFg>X&WiB&Un5)ch%1ClCQ2;5TegRnjDLhkYde+pV>R#?&>M?Dj6;1-ub~$SxoTzE~olFN&=Z$7oWD zQwmbD465|>v@}(^p&(UdNG&c<8H+M93Nno8MakLeHDXCwVbL(FZIZpkRA(-<*0nX6 zn_Hcj13(0jKMn#x5C{e#AQXgwa3DoAVi1emkUR1~o=EgKkby`L1)?z_!5|JqBQNBQ z#3&0B#iCIBS232yVrj0oPARsTn#?ugNc>>1t=?=i*Y{wrHq{!f&8;?TVY$L7`4+*(v`X|>wy156#(w$>W47>~7Tf_2IuQ@f?Xgj+`82YA>6Ott358nKFJ zg;U;KCUr=wrP0#bVX&D^RoHa54z-x42;h1^@ohIvoePLUv)$6rd~b>+0F|i zey!NjXs$4|P8fr~3S;136a)7fv5%#2kU>?}Jl>k*a3Y+1tN|t3eY*xOan7-LNg1a ziAS-~`BqsUAalUnv4g4xwzZnDm^$QVJ($Bwkbq-8xTi+kuct#Vvh`qoUvvw>y+Gat z7J&^8JnW)B!M^Jhg3DzpNhwQ^c?&g{B7O$y#nB)Srz&ze+Gxwku zx=W@{PfnC2^V%ep*DTrDSeLjt`Sldo3H&<24y5S>Pa`dFD0qxRO^t14yTQ(baCY4d z_VU8M2kAP&b4ZUA)%>b(wjKaSfP6hT2o8b6C-XU-jyoNg(P=WB?A;){Uyv+0)V68JXTBh;5PO`W1jJJ;-XtFd9G&i>; zO|{fIX?P2~(=(WNQ6Y+THhcg+>LLAORD=}HhEKr-zTq=e+zEJ$ijfX`G=*14&OTp* zZ+f79i%NT;{s4Xi@^$NapRtYSLZa`w zge0WU05p)F1zv6T%rdWtqVrqw9ZR*FF6a(LE-!mQZ!{QHVBLXV?NwmW`43Yr@AZQL zF7E}xAXJH}oJf1rq6^X*u}(e2j?J*zq;?9cUF}%7GCZ-4s7cMsL+`J@>Pskva%^{C z1eC!@7zLwY42*?wFdhv>!_aUv0*yqY&}cLUjoktjPze*T?J0#xPz{r@7g2)_qc5@T z2|?F5$a2sPuURY}j>YA$ISxx+Vs5syVQ(RzhYOC!cxg7*n{4$X8y$9u7i^wSyde;H zHB$H^cmw@#Q=xghsjacK&|KTr!1DrYq3%Z&e7IlJ1*jI)A;lQS+Z9&3g$G+BjumL@HmSEm zACc-R0ZKnt9R8c`E!Mpo2&y!C3(^y5LH<3f+x3V#bg@v0)A$<*9tYAm$gj7vF5P#cwIJ6`hk5}T=I!XQ2_s5DK%6IWq3x7AyP*PP%t z!!11c$IbvY)CKqR;Qn=gtRYm5R#Sb66;IP3 zL$S@;#4lm(7?&~Bh~r%ND=cj1P?D+~E6RxH?<_omdHe!g4qt*h`H;ERWH*n(e{JSQ zEQsx9EJXLBdBVt!!B>V1s=^b{1&;%r@KF%36TD_RiS9#kY;Jn}sq75A0yJqEGiN%5 z;thE2FIx0XtVQ2O4`3~N5XB1c-ors0d><|C71od77yqc~zJy=Fui-`f^DX=iJ&2Z} z?dW;@vmYJcg*&#++LUB!X~9lXSu1B< z%kT=k3a_Du(8K5vw0r}+4sXC~@E7zbdJHW`>v%mA>{J8;%}uptTkkr=IwPX2ptPgb zW~uLS*7+!AD za(V&-O<1=F^3rauueP=fFt?i zB21`>WMQPjY~XxD7m-e6psi>d@~KSKRHbF5IN78nbVA=gdY{N8^57$c0hFTW&{J4V zKZ!zW#Dc5H$9OJkLr|$nJqdswDH4zufs74AF;PO45@l!ydImj<_Ta<^F#vcH1BpQ+ zdqolLL{DS6>Khfvsj&sS z;Of4Ezb!9n#HlW-)1er6ebHcZSmvagbg84gj~XRR4wbo2n4m_i$cQF%2>D>e-K!XJ z_6o~YU(HBNChWYq%tNM5q7@zK37Uv0L3loE5%QLIZp|1Wr?#3Fupi_x)Ob#x!`2-efY{lo*rQsO~k8SxPDFnR?YN3Wt2 z=p=d#o!U$+CmtmpBUa#_Rm5uaI(h@WgWktKpP>u?|9PaLy;fstQ=t zMFWbA)n$VR)sz>Fz_HU`It(qVDk~UJREc{DUH%HAXn2KTP*o3%zereic6N7Ol-Nz| z?IiY~x6s>yWbOl&bx1C(`~$>6oEz&-YgL(B*AoYbLkIP)dHM7}~_+*$*qX3d;=j`)`Nj`$v{>>uEA;u3MWM(k&^T3dx^mJh@op0+r! z!4bI&_;?S(JhfG532G4noxe1pOPG|e(ABqytHd>o;3wibaRVdyf%uj9jrbjm8jg2y z8|!W6=AkVn{JV8j9S^s;l@AB8Ogf$JUTyCh3XZbcEV#ErF=9-Y&=oO6U-y-mKS|In zF+ZYZdF7kk!e7_fmD;pWD1#zenQvL4fOK{GM&sIGs!IU3;GTHf&Rp4 zj-e)-g%9rS!>}ybt&Qf9!q9{S51$?C&Fu6fYn*6uNt~JKB=gX(o!E~F;l0d|9)P?% z>2!&!>af0azEwoxZIw>482#S!mTxz5yx_5;$Kw_g&h7)r!MM9)_kgV6An48)l2v%C zfUG8ma1e4hA?VyJAcvEq`X=tk(c~Bo5*#FP%Fl(k===v_`ueD3EopXnb3EC=L7IaM ziXGKWppfmex4695NH)2+!DI_*<3~7|gYKQAor4}cXKu6QK~CYvF_rA#peKiOlRe{@ zLC$ia29X>GMI7`(u_N%b2&+6gf1xWa^T~xSZ!IDhbI^x_V&44lIqSX|w&?uPhh0YU z0EzbnwvkK82gzmRL*&EcBjj@OQSvcz1-X)gejMz_K?w)_IT*mfKn@0RFqnfO91P`P z*ftPHt^uXwIW+K2>1D!gTHYE3We7SaPV92coFZbVNHjP5oVn;Y!>ig z62e{Rb0oy8EYr+ABnAn476SRsx4WswVR|vnWZ27^2U?mfJ!8QHyL|5!I_FAwmfR2I zo5HY z@Oxem{~tWte{TV6#94x^bo@^1PP25|^qakAmp=bGTOn*3-_>TRn>4^`og^^08#E5J z|ISobRu?;&d4hZ$N6h3&@-^}l2V*%H&q2j{@(uDdd4_`t95irn0Cux`QzPWtyhZ0= zT#b0>o%t8GHdW=2TZAKhk$oT_!>N=z41CPZ|A6VdfJu4Bm~I(jIr)8o{F*mOpOasZ zUy@&OFp+~Q4kmF>jk77_H{@63cj!?LCgTSj%;4qpzm`yOl6aN8jyD6yYvfNHOyOW^ z7kPukN-K?n={!CEmkAUn)IZ2SU91B|P^9Yvh7#f22*pxvlsn}?VKb1)!7L7Db5O%U z?MBLr@}_(!G3Coa9S8Ls%;8`z2k~~{|1VjR(bKcivT=?iGpjd8LWNRc!ayA^78T*h zkx-FnD~AJIpFSB9Dwc|KWr>1H!qRe!yc?AauTiPIq!gg#9PHhsq%x>%JbQc!j8A}d zQ5s6iK_dqXdtzlOhst$DW1tFL9~4n|Kj_wJDrx{VkQzh{rmz!I%)t^4mU6I+gXKuk zH(8XD?noB7Fk%Qbv@at@2#grTGorsMBWkE|t_0Ol6K=zZiI@?MJR=73jJT_JlvWDo z5L|PCR4dg+wR3O~2M2SoqPK4cHO&>@OzLjo!Oa;wYBsgtwyar5Eut1v_fktZSjoXE z4pwszJ7&XNSd)>Q;b4shbI6%TqaLJ|^<~W?0&5=SSu@m?HLIxAuB5J`y0Djpa|ahX zsr4M*f^+UyQ=6!*JO{QA+lZ|=5lk9xGQ9E|?adFWtx;jBun`{l{ z?f|(P@~yf%V+E(H%k46=Hw(&ox*sj!BjvyEcI#a`C*c8fpo^BF zLueI{KPC2~L+LO&oR-oNw2Y3Vqv&WlhK{A<=y+OAD`+L1Kx3EYZVn<2&gS4;4$kM` z0uC*u_Dt7O}c|mVa0EMJEU3x-QqjumeJhU=*q1I0rZmp==Q%0uNnmm z_unzEdgS?Uc{N!;x3oq);?Aa~sNLGw#+Q*`b=!dJuk1b54KBlL7w|2s5#M!Z`2JzV zOc(GxTq7>KGdw-xauoz5z+e8Kkuet*%@aUBcE=j6XSMtTuNDaiSKjfQ2vr9-Ers`R z`MR18S5YySsE;)3Tf0Z-?D+Ojn{9fMUgu9Mn8ucp_~Yw2|y z#1Y2^4sPV&rVVr#y&go<`158CS2|^Ja0~BJ{;w6D9h~xZLfjj}g~GFpnL~xjX6Hbj zqIdBF*+K85pQfMT;5H6E!NKhud~yT*EWKM8$Wt8L@xMQimn+X32!F>w(ly!6n2|n0 zAHD5V9HU>sBY2gAPjm1YegwO442r$ejt9<+e$W9aH8p$Y@aZYpsd($X2jm;{o3~}k zTlCukQ+9K3Pd8IA$d{|aqd$xmxSY}p=_C5H+d{fPe=b16k>kF;kixG2vQB`M)(h!d z`qFJ7U8b)HkoI%%Kp#kzH#)Q2hw&4h-V3LGO>*EwzMTMi2|VG9DKDG(7`F!f-^S=oX<}0At{Z) zsifO5Ov7jeNGCb?S|3PlkDj~!r~oN7wFi=cDZVYF5~fsu^g0LM=mTlWCATj=6B#?Fm+750O?H*zSRrq z<;u$eOMD%WGI~XnnZ&f*mZr&!O@M?0?RR@29h`Fb?OinvNa?*Y%5*R|?{piQW-$m0 z77nW3=imoCqz@f}^>XF@d3$C!7?qlmnt~-OE!A;`!^yD)%#zzucOP@VK;6e2{G=~+ zuRg@C5SX8(N$Fw!Bg{$+>M!-i%qj*Sli@Z0ryTsO7t9NvG+E0d9D~eC%j|)&f!TyJ z4-D@9c_)Ky#g{J88S{i-!@j5y&%CXNG{918!^O<%LcXYtFG3MY#_)F=uG6gNi?|(U z3smL_EvA;HMpM)H=82Y$y4pIsX>v<*d)u@Lwd2)}f=4y>3mr#I@XNS(-|-q>8L4*i z?H;3QC2`*+g&O%bgiUd8DW<`o93ryn?Ysf#(mVEuB1gV$X}$ap z-pJsj#TE|!#EV*hGbLzrDagkSLvity1?L2+>iA=?&bm*>dP~XZwN@9HFaHAnYX|%r z_@tG?KkC!_JLU&o+`s4GFP+Sf9Q+lZFu~%=A8ZgRAp4%kVy-bac-TKN*E#q*2mk0| zer9m`?N5%t6$&_?=-6s+x73+=S6?`v;@|VkQAyK^56(G`?M2nMx7On{Y@Hbwb>mT~ zaIslS8!m*_ew!XVzq#5I;HWLp8a zOE$!zDxG|fWfiv?f|5;O6FI`0BYZeQjEz&iSO8F|mGu=GHkHl1)%#g&Hml(X%(s3V zA;IrEi;wGoES3PWGi)yKWb@d3zBa!etN6jb#OPYb8C!f&2P8;}W_0?0cR|N?*3Cy8 z5*ij0n~;*8)qP~%-NRGl<&6(OcQZjaAC0R44XwELw-(Ey9iK`UA#y}jTV0*mTyL&F z>+9#yFCh392kg5f{)j?!S6~o6@a~R0hYqSL#`R>lr_tJIwVex>MtH~~qoVP1zF-1l z9bepNYOv$){9237j}w^Z>m|kqxZUtt8qii}sW;){Citj}s=(SPn^_*}9|1evF z6YzbQ!k6>o5|l12-aEg=b6hntsH)uDfvZWn?@2kGlUvOf^&yCFNb$vY14IKAz7Zu0 zpDHiMccP2}wfJoFWMIcPpUlFCh3~^Bb60^i_z>=TeCx?(eB;Rue7f`qzTxCFKErt) zpUV6Kd;G0Vp;X6vY@QoyU z;C_L@_zZ#YFR%M=_aB^ACj1@dk1b%0V|r>rdFNt1epCo_n9uw-=ej6n2ja>UytGT% zGB$`UX9qYIcpyjMmF~_F!5k5?i5q&**$Nfjwu~QFt+qX2zPQY>v=kdV4oK*(DC52wcy2huP#FXW{QMr0jzNI@KL#`u>u8XO|10 z)&GOJcXpM4Bjta_wdyl1odTk?J4W;m&LX=>K!ooOxx@MILG-utzfC}w_1{XzvO5HX zSo{BXcC^@M1%z00{3p*e-ohTS&$0W4IBF{$CMg(1;p@6GfEMIY&*O`bPT|Xs&Qo9E zOOJk_F5zpBZcx8czvF#R9bJmAH5x^a!Pgp@@Wn=Ex&dEoG!0*8bT^Igbw+dXg+>eL zMfgIamGmK;V+v!+nI>i-vjJZrbeuVfuMm0zJO3A$@30&F3wC0~_-de7Hl9^rM@oe+ z2ufko*bHn;`m+PD)u>=A*=l@A&~SV`&}g=eU4SnEdWn78jd2Thle=ZQWxHwI%H4*$ zjdB~~HqNcqt=?^_8|OCPZGqb&w|m_lb6exK&aKOBv)dN8ZEoA$o_9Ot_PX0UZs*;; zce~;a+-Y~#-QC^WUF`1XE^!Zck8{s(*Si@@(l3|_l)q2@{I9}^UU@v@+|f2?>W$Ou;*Q#Lp|#}Cwew|HhZ>sPVwyUobEZ( zbC%}<&xM}%d9L*A^4#FL$@6i~r#yFhKI8eU=N`}3Jm2&D((|I{x1K+EUh=#m0wPjG zi`+yWB9SOq6eg02B1O@nSW&VlN0cur5EY3^L}j9(qG6)pqLHEo(L_J)7fJuccRdO~za^orB z^78YNcm;TcdWCyMctv`pd*ygd_gdh!(rdNXTCYy8^#)}gUN3na z^?JqYRj-p?uX~;GI_LG4*LU8Gx371Ex6(V`yUu%x_ag7*-mARVc(3!`=)Ku{i}yC~ z=e*B*f8l+_`-b-~-oN=kAJT{RVSRjk0(_!_xaK1vd>j96nlx~ zV!e2{xLrJ3yhglDyi2@WyjQ$WykGpX_?Y;(_=Na1@$2G?zP`Q@z9qgDz9W6>eLH;b z^$kDrfqp0YU6nwI zyTo4-C<&H?N@65RiCU5&$(0x+MoE!mw8SE5k=P`yl6J{V$t(#cnIoAexlgiGvP|-@ zq)W0>@{HtJ$sWmblIJA{B!?uYByUL0NX|*#lDs2%Px67}BY(!fpMRLY)L-Twlz(_^0`2_-FZ7`M3Em^zZWD=KqBMlm5^9zu^Cp|55)}{9pG!?SIz)P5-z3F9o;- z!~~=Sqz0q~WCRoh7y}9eiUS4*j1FiBumnsBXbP|fOb(b4aCZO-m>n=TV1B@YfMo$| z1C9oK637OM10w>i7z~O--0!Idp4xAil4{QsZ64((q zJ#c&A?!ZHVM*?3Ad^zw~;PJpSfgc8b9C$wPmmo4IDkwgvIB0OtT|rerfyIl=RT7X&X3 zUJ`tN@T%ao!JWYyf;R;}9{g-61GscF5e2`60_f)`sj0ITdm-)GbsJ zni`rHS{zy$+COwaXjSNt&|#q?LPv$p2wfX`IP{&+^Pv|)zX<&*^it^M(5s=phk1ng zh6RQth9!k1hoy$4hh>K4g_VZ&4;v6RD6Ar^GHg`Xn6R3#$zjvNW`x}xwlr)-*s8EK zVVlFYgl!Ak5q2Q#P}q^M7sLC7=Y;nU9}qq$ydr!=_~`Jl;p4)mhA#|X6TUb6Z1|hu zZ->7d{(kt?@ZY7BR4h%C=1C1wqqIm`A}y1Sm5!6vO6#TLr4yu+rPHJ{q<2e^bhdP^ zbcytS=~C$m=_=_O>1OE`={D&u>2B#>=>h4h(v#9t(l?}EOTUqRC;dTsN&1WQcj=!I zFv24uJwg*v7tt8;V8rr>0}-!AoQ-%h;_ZlcBi@g=5b;ICR}mK@zK!@k;)V>!JY_Mm z6j{0~Q>KyWWI3{tvIf~iS)lwFAgk#r;*=^p7F=^H7D42X=1Oo+^m)I@3{^^s+f10n}U zRz?nq92Pk#vNf_Jaz^B=NG|fe$YqfaM=puh^VNj*eH2aLR3;zN>qAOR+KjCuBfW0p;5!5Mn#Q{GDX!# zHAGE}YK&@*YKgihYD3h)s1s42M*By{N0&s`M$d>|7QHTdd-RUzXQFpUKNr0}`cU-A z=+~pqM86sRPW1cHA4Pu>;~$e3(-G4Zb1>$UnD1h)#$1p2CFb{7Dwd7)i1mu~i4BXD z#>!%&V`s!Jj9nbNB=&*WFJiC6UW>gR`%7F!+?crWahABoIBT3OZhG9zI21Q0ZhqW? zxD9bfA{Ob61@$2I^#czp!BL2zv=i*#Dt0KIQ9P^ItJtSFrZ}Z| zLvcoNPVv6tBgJ{e1;rPND~hX%Yl`biN=YjjrJK@MDODm${PtVfk>bd!V(k-i3#e2)P#(Ltc1dZ;)K$K z@`Ohc)+aofurpy-!k&bE2?r8hNjQ;kD&cg(xrDb9-c58*Oi!#!d@%8F;(Li-CSFYZ zF7e02D~Z=s?kYc3pejTau8L44s!~+xsw|aWm8U9D6{;##X4QC=RW(D!sphKgQQfP$ zU-h8sA=PTt)2ioH2USN@FRIR|K2n`mT~K|gx|o!al$%tZRFPDbG&E^c(%2+ZQeD!d zBwNyyq@_tKlJ+GXNjjf&T}`QJHKTS@`>XZpJavJ(NL{KfR}WI(rLI;FQ;$@SQIAvC zsmH4=>PEFyZBsv{UZq~E?ow}5Kd#=Uep0QB_4sy|Q8Og1JLC6^@kPu`roD|vVF-sI;~LQ~`^%9O+ubxM26oRoPf_oOUJc`xP5 zl&@31N%=mtEOlt=@YIp1V^TMy?o53q_1VPiPv1le~nl&w&4$W-M{hCKLD>Z90oth1r?V25$ zXEe`h_GyrVge6*Nx?)|GZnUmO zSF1DYCg>*XT6I%&9l9C1yLI>Img?5%HtV+Pw(EB2p3&{s9n!s^dr5apcU*Ty_rC5c z-6h>s-F4kBy5IGT-d!)!d+UAm{q$k_SbeHqr_a?J^o9BoeTBYCKU6sh|E~T6{m1%G^`Gm%*I&|K)&Hdb zS^sMemE)ZgniG=~mm|+n<|O81*ZpPPSA z{=)pO{O9vu%0Hd|R{p#BALO6UzmWfB{@3}J^Zzsu2HN0e@HBWCLJcwlzS7i?VaPV* z81fB9Ly=*GVY1;7!)n7;!%o94!ydyv!x6(vhGT}~h7*QA3W5t#3v>mA1tkUj3kDWc z6jT<}6pSyh6f_oC3)%}h3T70{D&PvX7QADmj9x|`qrWlAs4ylP)y7n##;7;u84HYs z#(~BP;}B!5(PC^gT8%bihjE5+mT|Umu5pR+A>(S}#$vkIt=P9XqByQtRje&8Dehl9 zu(+bQs(5Jeh~n|Zmg2@@Yq71kt$1qjwBohJFBN}Z5>ygdqAW=*(Us(ul#~oAsVW&? zGNEL0Noz@a$<&g0B@0Rxm)uvfv}9Syx{|Jv4JDgPc9lF=vcKd|$x9{2N?t8FS#qZ2 z-I7mBzA3p{>R#$u>RswvDk%*t4Ji#Tm6b-9#+AxTGfJ~cHKqE}<)s@+H7Qk=j4WfyhL+Wpnadi=CYBv4J6U$B?2WRs{pI~L`e*gm^w;-a-hV^?P5mG5zpdP@ u+`l}qJh(ipyrX=6`GWFA + + diff --git a/iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcschemes/iDNA.xcscheme b/iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcschemes/iDNA.xcscheme new file mode 100644 index 0000000..15a2672 --- /dev/null +++ b/iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcschemes/iDNA.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcschemes/xcschememanagement.plist b/iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..d460dfe --- /dev/null +++ b/iDNA/iDNA.xcodeproj/xcuserdata/a.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + iDNA.xcscheme + + orderHint + 2 + + + SuppressBuildableAutocreation + + 00AF4DA9168743A400A45A83 + + primary + + + + + diff --git a/iDNA/iDNA/AppDelegate.h b/iDNA/iDNA/AppDelegate.h new file mode 100644 index 0000000..c667590 --- /dev/null +++ b/iDNA/iDNA/AppDelegate.h @@ -0,0 +1,24 @@ +#import +#import "EvolutionProgressDelegate.h" +@class Evolution; + +@interface AppDelegate : NSObject { + Evolution *evolution; + IBOutlet NSTextField *generationLabel; + IBOutlet NSTextField *bestMatchLabel; + IBOutlet NSLevelIndicator *progressIndicator; +} + +@property (assign) IBOutlet NSWindow *window; +@property Evolution *evolution; +@property (readonly) BOOL canChangeParams; +@property (readonly) NSString *startStopButtonTitle; +@property (readonly) NSString *pauseResumeButtonTitle; +@property (readonly) BOOL pauseResumeButtonIsEnabled; + +-(IBAction)startStopEvolution:(id)sender; +-(IBAction)pauseResumeEvolution:(id)sender; + +-(IBAction)loadGoalDNAFromFile:(id)sender; + +@end diff --git a/iDNA/iDNA/AppDelegate.m b/iDNA/iDNA/AppDelegate.m new file mode 100644 index 0000000..4b53046 --- /dev/null +++ b/iDNA/iDNA/AppDelegate.m @@ -0,0 +1,166 @@ +#import "AppDelegate.h" +#import "Evolution.h" + +@implementation AppDelegate + +@synthesize evolution; + +-(id)init { + self = [super init]; + if (self) { + [[self class] registerDefaultSettings]; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + evolution = [[Evolution alloc] init]; + [evolution setDelegate:self]; + for (NSString *evolutionParam in @[ @"populationSize", @"dnaLength", @"mutationRate" ]) { + [evolution setValue:[defaults objectForKey:evolutionParam] forKey:evolutionParam]; + [evolution addObserver:self forKeyPath:evolutionParam options:NSKeyValueObservingOptionNew context:nil]; + } + } + return self; +} + ++(void)registerDefaultSettings { + NSDictionary *defaultSettings = @{ + @"populationSize": @100, + @"dnaLength": @20, + @"mutationRate": @10 + }; + [[NSUserDefaults standardUserDefaults] registerDefaults:defaultSettings]; +} + +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if (object != evolution) { + return; + } + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:change[@"new"] forKey:keyPath]; +} + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + [self.window setDelegate:self]; +} + +-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender { + return YES; +} + +-(BOOL)windowShouldClose:(id)sender { + NSAlert *alertWindow = [NSAlert alertWithMessageText:NSLocalizedString(@"QUIT_MSG", "Quit iDNA") + defaultButton:NSLocalizedString(@"YES", @"Yes") + alternateButton:NSLocalizedString(@"NO", @"No") + otherButton:nil + informativeTextWithFormat:NSLocalizedString(@"QUIT_TEXT", @"Do you really want to exit?")]; + if ([alertWindow runModal] == NSAlertDefaultReturn) { + return YES; + } + return NO; +} + +-(IBAction)startStopEvolution:(id)sender { + [self willChangeState]; + if (evolution.inProgress) { + [evolution stop]; + } else { + [evolution start]; + } + [self didChangeState]; +} + +-(IBAction)pauseResumeEvolution:(id)sender { + [self willChangeState]; + if (evolution.paused) { + [evolution resume]; + } else { + [evolution pause]; + } + [self didChangeState]; +} + +-(void)willChangeState { + [self willChangeValueForKey:@"canChangeParams"]; + [self willChangeValueForKey:@"startStopButtonTitle"]; + [self willChangeValueForKey:@"pauseResumeButtonTitle"]; + [self willChangeValueForKey:@"pauseResumeButtonIsEnabled"]; +} + +-(void)didChangeState { + [self didChangeValueForKey:@"canChangeParams"]; + [self didChangeValueForKey:@"startStopButtonTitle"]; + [self didChangeValueForKey:@"pauseResumeButtonTitle"]; + [self didChangeValueForKey:@"pauseResumeButtonIsEnabled"]; +} + +-(BOOL)canChangeParams { + return evolution.inProgress == NO; +} + +-(NSString *)startStopButtonTitle { + return evolution.inProgress ? NSLocalizedString(@"STOP", @"Stop evolution") : NSLocalizedString(@"START", @"Start evolution"); +} + +-(NSString *)pauseResumeButtonTitle { + return evolution.paused ? NSLocalizedString(@"RESUME", @"Resume") : NSLocalizedString(@"PAUSE", @"Pause"); +} + +-(BOOL)pauseResumeButtonIsEnabled { + return evolution.inProgress == YES; +} + +-(void)evolutionStateHasChanged:(NSNotification *)notification { + NSDictionary *userInfo = notification.userInfo; + [generationLabel setStringValue:[NSString stringWithFormat:@"%@", [userInfo objectForKey:@"generation"]]]; + NSNumber *bestMatch = [userInfo objectForKey:@"bestMatch"]; + [bestMatchLabel setStringValue:[NSString stringWithFormat:@"%@%%", bestMatch]]; + [progressIndicator setDoubleValue: [bestMatch doubleValue]]; +} + +-(void)evolutionGoalIsReached { + [self willChangeState]; + [self didChangeState]; +} + +-(IBAction)loadGoalDNAFromFile:(id)sender { + NSOpenPanel *openPanel = [NSOpenPanel openPanel]; + if (![openPanel runModal] == NSFileHandlingPanelOKButton) { + return; + } + + NSString *errorText = nil; + NSString *dnaString = [NSString stringWithContentsOfURL:[openPanel URL] usedEncoding:nil error:nil]; + NSPredicate *dnaStringPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"[ATGC]+"]; + + if (dnaString == nil) { + errorText = NSLocalizedString(@"FILE_READ_ERROR", @"Cannot read the file"); + } else if (![dnaStringPredicate evaluateWithObject:dnaString]) { + errorText = NSLocalizedString(@"FILE_FORMAT_ERROR", @"Text from the file is not DNA"); + } else if ([dnaString length] < 4) { + errorText = NSLocalizedString(@"TOO_SHORT_DNA_ERROR", @"DNA is too short"); + } else if ([dnaString length] > 100) { + errorText = NSLocalizedString(@"TOO_LONG_DNA_ERROR", @"DNA is too long"); + } + + if (errorText) { + [self showAlertWithMessageText:@"Ops" informativeText:errorText]; + return; + } + + NSAlert *alertWindow = [NSAlert alertWithMessageText:NSLocalizedString(@"OPEN_FILE_MSG", @"Open file") + defaultButton:NSLocalizedString(@"YES", @"Yes") + alternateButton:NSLocalizedString(@"NO", @"No") + otherButton:nil + informativeTextWithFormat:NSLocalizedString(@"REPLACE_TEXT", @"Do you really want replace current goal DNA with DNA from file?")]; + if ([alertWindow runModal] != NSAlertDefaultReturn) { + return; + } + + [evolution loadGoalDNA:dnaString]; +} + +-(void)showAlertWithMessageText:(NSString *)text informativeText:(NSString *)informativeText { + NSAlert *alert = [NSAlert alertWithMessageText:text defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:@"%@", informativeText]; + [alert runModal]; +} + +@end diff --git a/iDNA/iDNA/Cell.h b/iDNA/iDNA/Cell.h new file mode 100644 index 0000000..ad917e6 --- /dev/null +++ b/iDNA/iDNA/Cell.h @@ -0,0 +1,13 @@ +#import + +@interface Cell : NSObject + +@property NSMutableArray* dna; + +-(id) initWithRandomDNAOfLength:(NSInteger)length; +-(id) initWithDNA:(NSMutableArray *)dna; +-(int) hammingDistance:(Cell*)otherCell; +-(void) mutate:(NSInteger)percent; +-(NSString *) nucleobaseAtIndex:(NSInteger)index; + +@end diff --git a/iDNA/iDNA/Cell.m b/iDNA/iDNA/Cell.m new file mode 100644 index 0000000..84b5667 --- /dev/null +++ b/iDNA/iDNA/Cell.m @@ -0,0 +1,84 @@ +#import "Cell.h" +#import "NucleobaseType.h" + +@implementation Cell + +-(id) initWithDNA:(NSMutableArray *)dna { + self = [super init]; + if (self) { + _dna = dna; + } + return self; +} + +-(id) initWithRandomDNAOfLength:(NSInteger)length { + self = [super init]; + if (self) { + _dna = [NSMutableArray arrayWithCapacity:length]; + for (int i = 0; i < length; i++) { + [_dna addObject: [NucleobaseType random]]; + } + } + return self; +} + +-(NSString*) description { + return [_dna componentsJoinedByString:@""]; +} + +-(int) hammingDistance:(Cell *)otherCell { + int distance = 0; + NSString* myNucleobaceType; + NSString* otherCellsNucleobaseType; + + for (int i = 0; i < _dna.count; i++) { + myNucleobaceType = [_dna objectAtIndex:i]; + otherCellsNucleobaseType = [otherCell.dna objectAtIndex:i]; + if ([myNucleobaceType isEqualToString:otherCellsNucleobaseType] == NO) { + distance++; + } + } + + return distance; +} + +-(NSString *)nucleobaseAtIndex:(NSInteger)index { + return [_dna objectAtIndex:index]; +} + +-(void)mutate:(NSInteger)percent { + NSMutableArray* mutationPositionsMask = [self createMutationPositionsMask: percent]; + for (int i = 0; i < [mutationPositionsMask count]; i++) { + if ([[mutationPositionsMask objectAtIndex:i] boolValue]) { + NSString* replacement = [NucleobaseType randomExcluding:[self.dna objectAtIndex:i]]; + [self.dna replaceObjectAtIndex:i withObject: replacement]; + } + } +} + +-(NSMutableArray*)createMutationPositionsMask:(NSInteger)percent { + + int totalPositionsCount = (int)[self.dna count]; + int mutationPositionsCount = (int)(totalPositionsCount * percent / 100); + + NSMutableArray* positions = [[NSMutableArray alloc] initWithCapacity:totalPositionsCount]; + + for (int i = 0; i < totalPositionsCount; i++) { + [positions addObject: [NSNumber numberWithBool:NO]]; + } + for (int i = 0; i < mutationPositionsCount; i++) { + [positions replaceObjectAtIndex:i withObject: [NSNumber numberWithBool:YES]]; + } + [[self class] shuffle:positions]; + + return positions; +} + ++(void)shuffle:(NSMutableArray*)array { + for (int i = 0; i < [array count]; i++) { + int targetPosition = arc4random_uniform((int)[array count]); + [array exchangeObjectAtIndex:i withObjectAtIndex:targetPosition]; + } +} + +@end diff --git a/iDNA/iDNA/Evolution.h b/iDNA/iDNA/Evolution.h new file mode 100644 index 0000000..2c0d796 --- /dev/null +++ b/iDNA/iDNA/Evolution.h @@ -0,0 +1,34 @@ +#import +#import "EvolutionProgressDelegate.h" + +@class Cell; + +@interface Evolution : NSObject { + BOOL paused; + BOOL inProgress; + NSMutableArray *population; + NSInteger populationSize; + NSInteger generation; + NSInteger mutationRate; + NSInteger dnaLength; + NSInteger closestDistanceDuringEvolution; + Cell *goalCell; + id delegate; +} + +@property (assign) NSInteger populationSize; +@property (assign) NSInteger dnaLength; +@property (assign) NSInteger mutationRate; +@property (assign) BOOL paused; +@property (assign) BOOL inProgress; +@property (readonly) NSInteger generation; +@property (readonly) NSString *goalDNA; +@property id delegate; + +-(void)start; +-(void)stop; +-(void)pause; +-(void)resume; +-(void)loadGoalDNA:(NSString *)dnaString; + +@end diff --git a/iDNA/iDNA/Evolution.m b/iDNA/iDNA/Evolution.m new file mode 100644 index 0000000..99558d7 --- /dev/null +++ b/iDNA/iDNA/Evolution.m @@ -0,0 +1,161 @@ +#import "Evolution.h" +#import "Cell.h" +#import "HybridizeStrategy.h" + +NSInteger compareCellsByHammingDistanceToTargetCell(Cell *cell1, Cell *cell2, void *context) { + Cell *goalCell = (__bridge Cell *)(context); + int hammingDistance1 = [goalCell hammingDistance:cell1]; + int hammingDistance2 = [goalCell hammingDistance:cell2]; + if (hammingDistance1 < hammingDistance2) { + return (NSComparisonResult) NSOrderedAscending; + } else if (hammingDistance1 > hammingDistance2) { + return (NSComparisonResult) NSOrderedDescending; + } else { + return (NSComparisonResult) NSOrderedSame; + } +} + +@implementation Evolution + +@synthesize populationSize, mutationRate, inProgress, paused, generation, delegate; + +-(id)init { + if (self = [super init]) { + srandom((unsigned)time(NULL)); + inProgress = NO; + paused = NO; + generation = 0; + } + return self; +} + +-(void)start { + inProgress = YES; + paused = NO; + generation = 0; + closestDistanceDuringEvolution = dnaLength; + [self generatePopulation]; + [self performSelectorInBackground:@selector(nextGeneration) withObject:nil]; +} + +-(void)nextGeneration { + [self sortPopulation]; + NSInteger closestDistance = [[population objectAtIndex:0] hammingDistance:goalCell]; + // NSLog(@"step: %li, closest: %li, %@", generation, closestDistance, [population objectAtIndex:0]); + if (closestDistanceDuringEvolution > closestDistance) { + closestDistanceDuringEvolution = closestDistance; + } + if (closestDistance == 0) { + [self postProgressNotification]; + [self stop]; + if (self.delegate) { + [delegate evolutionGoalIsReached]; + } + return; + } + generation++; + [self hybridizePopulation]; + [self mutatePopulation]; + [self postProgressNotification]; + if (paused == NO && inProgress == YES) { + [self nextGeneration]; + } +} + +-(void)mutatePopulation { + for (Cell *cell in population) { + [cell mutate:mutationRate]; + } +} + +-(void)hybridizePopulation { + int losersThreshold = (int)(populationSize * 0.5); + for (int i = losersThreshold; i < populationSize; i++) { + Cell *mother = [population objectAtIndex: arc4random_uniform(losersThreshold)]; + Cell *father = [population objectAtIndex: arc4random_uniform(losersThreshold)]; + Cell *child = [self hybridizeCell:mother withCell:father]; + [population replaceObjectAtIndex:i withObject:child]; + } +} + +-(Cell *)hybridizeCell:(Cell *)cell1 withCell:(Cell *)cell2 { + NSMutableArray *dna = [NSMutableArray arrayWithCapacity:dnaLength]; + HybridizeStrategy *hybridizeStrategy = [HybridizeStrategy randomStrategy]; + for (int i = 0; i < dnaLength; i++) { + [dna addObject:[hybridizeStrategy nucleobaseAtIndex:i firstParent:cell1 secondParent:cell2]]; + } + return [[Cell alloc] initWithDNA:dna]; +} + +-(void) generateGoalCell { + [self willChangeValueForKey:@"goalDNA"]; + goalCell = [[Cell alloc] initWithRandomDNAOfLength:dnaLength]; + [self didChangeValueForKey:@"goalDNA"]; +} + +-(void) generatePopulation { + population = [[NSMutableArray alloc] init]; + for (int i = 0; i < populationSize; i++) { + [population addObject:[[Cell alloc] initWithRandomDNAOfLength:dnaLength]]; + } +} + +-(void) sortPopulation { + [population sortUsingFunction:compareCellsByHammingDistanceToTargetCell context:(__bridge void *)(goalCell)]; +} + +-(void)stop { + inProgress = NO; + paused = NO; +} + +-(void)pause { + paused = YES; +} + +-(void)resume { + paused = NO; + [self performSelectorInBackground:@selector(nextGeneration) withObject:nil]; +} + +-(void)postProgressNotification { + if (!self.delegate) { + return; + } + NSInteger bestMatchPercent = (NSInteger)(100 * (dnaLength - closestDistanceDuringEvolution) / dnaLength); + NSDictionary *userInfo = @{ @"generation": [NSNumber numberWithInteger:generation], + @"bestMatch": [NSNumber numberWithInteger:bestMatchPercent] }; + NSNotification *notification = [NSNotification notificationWithName:@"evolutionProgressChange" object:nil userInfo:userInfo]; + [delegate evolutionStateHasChanged:notification]; +} + +-(NSString *)goalDNA { + return [goalCell description]; +} + +-(void)setDnaLength:(NSInteger)l { + dnaLength = l; + [self generateGoalCell]; +} + +-(NSInteger)dnaLength { + return dnaLength; +} + +-(void)loadGoalDNA:(NSString *)dnaString { + NSMutableArray *goalDNA = [NSMutableArray arrayWithCapacity:dnaString.length]; + NSRange range; + range.length = 1; + for (int i = 0; i < dnaString.length; i++) { + range.location = i; + [goalDNA addObject:[dnaString substringWithRange:range]]; + } + [self willChangeValueForKey:@"goalDNA"]; + [self willChangeValueForKey:@"dnaLength"]; + dnaLength = dnaString.length; + goalCell = [[Cell alloc] initWithDNA:goalDNA]; + [self didChangeValueForKey:@"goalDNA"]; + [self didChangeValueForKey:@"dnaLength"]; +} + +@end diff --git a/iDNA/iDNA/EvolutionProgressDelegate.h b/iDNA/iDNA/EvolutionProgressDelegate.h new file mode 100644 index 0000000..ba91d4f --- /dev/null +++ b/iDNA/iDNA/EvolutionProgressDelegate.h @@ -0,0 +1,8 @@ +#import + +@protocol EvolutionProgressDelegate + +-(void)evolutionStateHasChanged:(NSNotification *)notification; +-(void)evolutionGoalIsReached; + +@end diff --git a/iDNA/iDNA/HybridizeStrategy.h b/iDNA/iDNA/HybridizeStrategy.h new file mode 100644 index 0000000..0826183 --- /dev/null +++ b/iDNA/iDNA/HybridizeStrategy.h @@ -0,0 +1,20 @@ +#import + +@class Cell; + +@interface HybridizeStrategy : NSObject + +-(NSString *)nucleobaseAtIndex:(NSInteger)index firstParent:(Cell *)cell1 secondParent:(Cell *)cell2; ++(HybridizeStrategy *)randomStrategy; + +@end + + +@interface FiftyPercentHybridizeStrategy: HybridizeStrategy +@end + +@interface OnePercentHybridizeStrategy: HybridizeStrategy +@end + +@interface TwentySixtyTwentyPercentHybridizeStrategy: HybridizeStrategy +@end diff --git a/iDNA/iDNA/HybridizeStrategy.m b/iDNA/iDNA/HybridizeStrategy.m new file mode 100644 index 0000000..ddfcd76 --- /dev/null +++ b/iDNA/iDNA/HybridizeStrategy.m @@ -0,0 +1,60 @@ +#import "HybridizeStrategy.h" +#import "Cell.h" + +@implementation HybridizeStrategy + ++(HybridizeStrategy *)randomStrategy { + int randomIndex = random() % 3; + if (randomIndex == 0) { + return [[FiftyPercentHybridizeStrategy alloc] init]; + } else if (randomIndex == 1) { + return [[OnePercentHybridizeStrategy alloc] init]; + } else { + return [[TwentySixtyTwentyPercentHybridizeStrategy alloc] init]; + } +} + +-(NSString *)nucleobaseAtIndex:(NSInteger)index firstParent:(Cell *)cell1 secondParent:(Cell *)cell2 { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + +@end + + + +@implementation FiftyPercentHybridizeStrategy + +-(NSString *)nucleobaseAtIndex:(NSInteger)index firstParent:(Cell *)cell1 secondParent:(Cell *)cell2 { + NSInteger threshold = (NSInteger)([cell1.dna count] * 0.5); + Cell *cell = index < threshold ? cell1 : cell2; + return [cell nucleobaseAtIndex:index]; +} + +@end + + + +@implementation OnePercentHybridizeStrategy + +-(NSString *)nucleobaseAtIndex:(NSInteger)index firstParent:(Cell *)cell1 secondParent:(Cell *)cell2 { + Cell *cell = index % 2 == 0 ? cell1 : cell2; + return [cell nucleobaseAtIndex:index]; +} + +@end + + + +@implementation TwentySixtyTwentyPercentHybridizeStrategy + +-(NSString *)nucleobaseAtIndex:(NSInteger)index firstParent:(Cell *)cell1 secondParent:(Cell *)cell2 { + NSInteger threshold1 = (NSInteger)([cell1.dna count] * 0.2); + NSInteger threshold2 = (NSInteger)([cell1.dna count] * 0.8); + Cell *cell = index < threshold1 || index >= threshold2 ? cell1 : cell2; + return [cell nucleobaseAtIndex:index]; +} + +@end + diff --git a/iDNA/iDNA/NucleobaseType.h b/iDNA/iDNA/NucleobaseType.h new file mode 100644 index 0000000..178000b --- /dev/null +++ b/iDNA/iDNA/NucleobaseType.h @@ -0,0 +1,9 @@ +#import + +@interface NucleobaseType : NSObject + ++(NSString*) random; ++(NSString*) randomExcluding:(NSString*)type; ++(int) typesCount; + +@end diff --git a/iDNA/iDNA/NucleobaseType.m b/iDNA/iDNA/NucleobaseType.m new file mode 100644 index 0000000..2d6ae12 --- /dev/null +++ b/iDNA/iDNA/NucleobaseType.m @@ -0,0 +1,28 @@ +#import "NucleobaseType.h" +#import + +static NSArray* nucleobaseTypes = nil; + +@implementation NucleobaseType + ++(NSString*) random { + return [[self types] objectAtIndex: arc4random_uniform([self typesCount])]; +} + ++(NSString*) randomExcluding:(NSString *)type { + NSArray* availableTypes = [[self types] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != %@", type]]; + return [availableTypes objectAtIndex: arc4random_uniform((int)[availableTypes count])]; +} + ++(NSArray*) types { + if (!nucleobaseTypes) { + nucleobaseTypes = [[NSArray alloc] initWithObjects: @"A", @"T", @"G", @"C", nil]; + } + return nucleobaseTypes; +} + ++(int) typesCount { + return (int)[[self types] count]; +} + +@end diff --git a/iDNA/iDNA/en.lproj/Credits.rtf b/iDNA/iDNA/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/iDNA/iDNA/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/iDNA/iDNA/en.lproj/InfoPlist.strings b/iDNA/iDNA/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/iDNA/iDNA/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/iDNA/iDNA/en.lproj/Localizable.strings b/iDNA/iDNA/en.lproj/Localizable.strings new file mode 100644 index 0000000..cccd309 --- /dev/null +++ b/iDNA/iDNA/en.lproj/Localizable.strings @@ -0,0 +1,17 @@ +"YES" = "Yes"; +"NO" = "No"; +"QUIT_MSG" = "Quit iDNA"; +"QUIT_TEXT" = "Do you really want to exit?"; + +"STOP" = "Stop evolution"; +"START" = "Start evolution"; +"PAUSE" = "Pause"; +"RESUME" = "Resume"; + +"FILE_READ_ERROR" = "Cannot read the file"; +"FILE_FORMAT_ERROR" = "Text from the file is not DNA"; +"TOO_LONG_DNA_ERROR" = "DNA is too long"; +"TOO_SHORT_DNA_ERROR" = "DNA is too short"; + +"OPEN_FILE_MSG" = "Open file"; +"REPLACE_TEXT" = "Do you really want replace current goal DNA with DNA from file?"; diff --git a/iDNA/iDNA/en.lproj/MainMenu.xib b/iDNA/iDNA/en.lproj/MainMenu.xib new file mode 100644 index 0000000..be7aba1 --- /dev/null +++ b/iDNA/iDNA/en.lproj/MainMenu.xib @@ -0,0 +1,5953 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSBox + NSButton + NSButtonCell + NSCustomObject + NSLevelIndicator + NSLevelIndicatorCell + NSMenu + NSMenuItem + NSNumberFormatter + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSUserDefaultsController + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + iDNA + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + iDNA + + + + About iDNA + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide iDNA + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit iDNA + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save… + s + 1048576 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find and Replace… + f + 1572864 + 2147483647 + + + 12 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + + + Font + + 2147483647 + + + submenuAction: + + Font + + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligatures + + 2147483647 + + + submenuAction: + + Ligatures + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Writing Direction + + 2147483647 + + + submenuAction: + + Writing Direction + + + + YES + Paragraph + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + YES + Selection + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + + + iDNA Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 3 + 2 + {{335, 390}, {550, 466}} + 1954021376 + iDNA + NSWindow + + + + + 256 + + + + 268 + {{195, 392}, {337, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 100 + 4 + 4 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{17, 394}, {114, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + DNA length + + LucidaGrande + 13 + 1044 + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{17, 426}, {114, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Population size + + _NS:1535 + + + + + NO + + + + 268 + {{17, 363}, {114, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Mutation rate % + + _NS:1535 + + + + + NO + + + + 268 + {{195, 424}, {337, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 10000 + 2 + 2 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{195, 361}, {337, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 100 + 0.0 + 0.0 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{136, 424}, {53, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + NO + + + + 268 + {{136, 392}, {53, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + + + NO + + + + 268 + {{136, 360}, {53, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + + + NO + + + + 268 + {{215, 325}, {81, 17}} + + + + _NS:1535 + YES + + 68157504 + 71304192 + Generation: + + LucidaGrande-Bold + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{184, 300}, {143, 17}} + + + + _NS:1535 + YES + + 68157504 + 71304192 + Best individual match: + + _NS:1535 + + + + + NO + + + + 268 + {{298, 325}, {60, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + 0 + + _NS:1535 + + + + + NO + + + + 268 + {{329, 300}, {64, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + 0 + + _NS:1535 + + + + + NO + + + + 12 + + + + 274 + + + + 268 + {{18, 14}, {478, 137}} + + + + _NS:9 + {250, 750} + YES + + -2074083327 + 272629760 + + + _NS:9 + + YES + + + + NO + + + + 268 + {{218, 153}, {78, 17}} + + + + _NS:1535 + YES + + 68157504 + 205521920 + Goal DNA + + _NS:1535 + + + + + NO + + + {{1, 1}, {514, 172}} + + + + _NS:11 + + + {{17, 78}, {516, 174}} + + + + _NS:9 + {0, 0} + + 67108864 + 0 + Box + + LucidaGrande + 13 + 16 + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 0 + NO + + + + 268 + {{161, 13}, {104, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Pause + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{14, 13}, {147, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Start evolution + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{402, 13}, {134, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Load goal DNA + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{20, 276}, {510, 16}} + + + + _NS:9 + YES + + 0 + 0 + _NS:9 + + 100 + 1 + + NO + + + {550, 466} + + + + + {{0, 0}, {1920, 1178}} + {10000000000000, 10000000000000} + YES + + + AppDelegate + + + NSFontManager + + + YES + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + saveDocument: + + + + 362 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + orderFrontSubstitutionsPanel: + + + + 458 + + + + toggleAutomaticDashSubstitution: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + pasteAsPlainText: + + + + 486 + + + + performFindPanelAction: + + + + 487 + + + + performFindPanelAction: + + + + 488 + + + + performFindPanelAction: + + + + 489 + + + + showHelp: + + + + 493 + + + + alignCenter: + + + + 518 + + + + pasteRuler: + + + + 519 + + + + toggleRuler: + + + + 520 + + + + alignRight: + + + + 521 + + + + copyRuler: + + + + 522 + + + + alignJustified: + + + + 523 + + + + alignLeft: + + + + 524 + + + + makeBaseWritingDirectionNatural: + + + + 525 + + + + makeBaseWritingDirectionLeftToRight: + + + + 526 + + + + makeBaseWritingDirectionRightToLeft: + + + + 527 + + + + makeTextWritingDirectionNatural: + + + + 528 + + + + makeTextWritingDirectionLeftToRight: + + + + 529 + + + + makeTextWritingDirectionRightToLeft: + + + + 530 + + + + performFindPanelAction: + + + + 535 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + window + + + + 532 + + + + startStopEvolution: + + + + 822 + + + + pauseResumeEvolution: + + + + 823 + + + + generationLabel + + + + 844 + + + + bestMatchLabel + + + + 850 + + + + progressIndicator + + + + 861 + + + + loadGoalDNAFromFile: + + + + 862 + + + + value: self.evolution.dnaLength + + + + + + value: self.evolution.dnaLength + value + self.evolution.dnaLength + 2 + + + 769 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 797 + + + + value: self.evolution.populationSize + + + + + + value: self.evolution.populationSize + value + self.evolution.populationSize + 2 + + + 764 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 793 + + + + value: self.evolution.mutationRate + + + + + + value: self.evolution.mutationRate + value + self.evolution.mutationRate + 2 + + + 773 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 832 + + + + value: self.evolution.populationSize + + + + + + value: self.evolution.populationSize + value + self.evolution.populationSize + 2 + + + 757 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 791 + + + + value: self.evolution.dnaLength + + + + + + value: self.evolution.dnaLength + value + self.evolution.dnaLength + 2 + + + 782 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 795 + + + + value: self.evolution.mutationRate + + + + + + value: self.evolution.mutationRate + value + self.evolution.mutationRate + 2 + + + 781 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 830 + + + + value: self.evolution.goalDNA + + + + + + value: self.evolution.goalDNA + value + self.evolution.goalDNA + 2 + + + 872 + + + + enabled: self.pauseResumeButtonIsEnabled + + + + + + enabled: self.pauseResumeButtonIsEnabled + enabled + self.pauseResumeButtonIsEnabled + 2 + + + 826 + + + + title: self.pauseResumeButtonTitle + + + + + + title: self.pauseResumeButtonTitle + title + self.pauseResumeButtonTitle + 2 + + + 828 + + + + title: self.startStopButtonTitle + + + + + + title: self.startStopButtonTitle + title + self.startStopButtonTitle + 2 + + + 827 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 807 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + + + 75 + + + + + 78 + + + + + 72 + + + + + 82 + + + + + 124 + + + + + + + + 77 + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 74 + + + + + 125 + + + + + + + + 126 + + + + + 205 + + + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 131 + + + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + + + + + + 349 + + + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + + + + 372 + + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 12 + + 1000 + + 6 + 24 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 124 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 187 + + 1000 + + 3 + 9 + 3 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 4 + 0 + + 4 + 1 + + 82 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 216 + + 1000 + + 3 + 9 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 10 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 10 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + + + + + + + + + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + + 377 + + + + + + + + 388 + + + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + + + + + + 398 + + + + + + + + 399 + + + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + + + + + + 451 + + + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 457 + + + + + 459 + + + + + 460 + + + + + 462 + + + + + 465 + + + + + 466 + + + + + 485 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 496 + + + + + + + + 497 + + + + + + + + + + + + + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + 503 + + + + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + 508 + + + + + + + + + + + + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 534 + + + + + 536 + + + + + + + + 537 + + + + + 543 + + + + + + + + 544 + + + + + 550 + + + + + 551 + + + + + + 7 + 0 + + 0 + 1 + + 108 + + 1000 + + 3 + 9 + 1 + + + + + + 553 + + + + + 555 + + + + + 562 + + + + + + + + 563 + + + + + 565 + + + + + 573 + + + + + + + + 574 + + + + + 581 + + + + + + + + 582 + + + + + 599 + + + + + + 7 + 0 + + 0 + 1 + + 53 + + 1000 + + 3 + 9 + 1 + + + + + + 600 + + + + + + + + 601 + + + + + 602 + + + + + 603 + + + + + 605 + + + + + 606 + + + + + + + + 608 + + + + + + + + 609 + + + + + 611 + + + + + 614 + + + + + 615 + + + + + 616 + + + + + + + + 617 + + + + + + + + 618 + + + + + 619 + + + + + 620 + + + + + 622 + + + + + 624 + + + + + 625 + + + + + 626 + + + + + 627 + + + + + 629 + + + + + 630 + + + + + 631 + + + + + 633 + + + + + 634 + + + + + 635 + + + + + 638 + + + + + 640 + + + + + 641 + + + + + 642 + + + + + + + + 643 + + + + + 648 + + + + + + + + 649 + + + + + 664 + + + + + + 7 + 0 + + 0 + 1 + + 54 + + 1000 + + 3 + 9 + 1 + + + + + + 665 + + + + + 666 + + + + + 668 + + + + + + 7 + 0 + + 0 + 1 + + 58 + + 1000 + + 3 + 9 + 1 + + + + + + 669 + + + + + 671 + + + + + 672 + + + + + 677 + + + + + 679 + + + + + 695 + + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 1 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 11 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + + + + + 696 + + + + + 704 + + + + + 706 + + + + + 708 + + + + + 713 + + + + + + 8 + 0 + + 0 + 1 + + 137 + + 1000 + + 3 + 9 + 1 + + + + + + 714 + + + + + 718 + + + + + 720 + + + + + 723 + + + + + + 7 + 0 + + 0 + 1 + + 72 + + 1000 + + 3 + 9 + 1 + + + + + + 724 + + + + + 726 + + + + + 727 + + + + + 729 + + + + + 731 + + + + + 732 + + + + + 733 + + + + + + 7 + 0 + + 0 + 1 + + 92 + + 1000 + + 3 + 9 + 1 + + + + + + 734 + + + + + 736 + + + + + 738 + + + + + + 7 + 0 + + 0 + 1 + + 135 + + 1000 + + 3 + 9 + 1 + + + + + + 739 + + + + + 740 + + + + + 741 + + + + + 743 + + + + + + + + 744 + + + + + 745 + + + + + 747 + + + + + 751 + + + + + 812 + + + + + 814 + + + + + 815 + + + + + 673 + + + + + 701 + + + + + 663 + + + + + 842 + + + + + 612 + + + + + 849 + + + + + 852 + + + + + + + + 853 + + + + + 855 + + + + + 858 + + + + + 859 + + + + + 860 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 872 + + + + + AppDelegate + NSObject + + id + id + id + + + + loadGoalDNAFromFile: + id + + + pauseResumeEvolution: + id + + + startStopEvolution: + id + + + + NSTextField + NSTextField + NSTextField + NSLevelIndicator + NSWindow + + + + bestMatchLabel + NSTextField + + + generationLabel + NSTextField + + + goalDNATextField + NSTextField + + + progressIndicator + NSLevelIndicator + + + window + NSWindow + + + + IBProjectSource + ./Classes/AppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/iDNA/iDNA/iDNA-Info.plist b/iDNA/iDNA/iDNA-Info.plist new file mode 100644 index 0000000..2a60f5b --- /dev/null +++ b/iDNA/iDNA/iDNA-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.me.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2012 a. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/iDNA/iDNA/iDNA-Prefix.pch b/iDNA/iDNA/iDNA-Prefix.pch new file mode 100644 index 0000000..24593cd --- /dev/null +++ b/iDNA/iDNA/iDNA-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'iDNA' target in the 'iDNA' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/iDNA/iDNA/main.m b/iDNA/iDNA/main.m new file mode 100644 index 0000000..04d99da --- /dev/null +++ b/iDNA/iDNA/main.m @@ -0,0 +1,6 @@ +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/iDNA/iDNA/ru.lproj/Credits.rtf b/iDNA/iDNA/ru.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/iDNA/iDNA/ru.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/iDNA/iDNA/ru.lproj/InfoPlist.strings b/iDNA/iDNA/ru.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/iDNA/iDNA/ru.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/iDNA/iDNA/ru.lproj/Localizable.strings b/iDNA/iDNA/ru.lproj/Localizable.strings new file mode 100644 index 0000000..bcefcf0 --- /dev/null +++ b/iDNA/iDNA/ru.lproj/Localizable.strings @@ -0,0 +1,17 @@ +"YES" = "Да"; +"NO" = "Нет"; +"QUIT_MSG" = "Выход"; +"QUIT_TEXT" = "Вы действительно хотите выйти?"; + +"STOP" = "Остановить эволюцию"; +"START" = "Начать эволюцию"; +"PAUSE" = "Пауза"; +"RESUME" = "Продолжить"; + +"FILE_READ_ERROR" = "Невозможно открыть файл"; +"FILE_FORMAT_ERROR" = "Текст, содержащийся в файле, не является кодом ДНК"; +"TOO_LONG_DNA_ERROR" = "Слишком длинный ДНК"; +"TOO_SHORT_DNA_ERROR" = "Слишком короткий ДНК"; + +"OPEN_FILE_MSG" = "Открытие файла"; +"REPLACE_TEXT" = "Вы действительно хотите заменить целевой ДНК кодом из файла?"; \ No newline at end of file diff --git a/iDNA/iDNA/ru.lproj/MainMenu.xib b/iDNA/iDNA/ru.lproj/MainMenu.xib new file mode 100644 index 0000000..5ce360d --- /dev/null +++ b/iDNA/iDNA/ru.lproj/MainMenu.xib @@ -0,0 +1,5897 @@ + + + + 1080 + 12C60 + 3084 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 3084 + + + IBNSLayoutConstraint + NSBox + NSButton + NSButtonCell + NSCustomObject + NSLevelIndicator + NSLevelIndicatorCell + NSMenu + NSMenuItem + NSNumberFormatter + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSUserDefaultsController + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + iDNA + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + iDNA + + + + About iDNA + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide iDNA + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit iDNA + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save… + s + 1048576 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find and Replace… + f + 1572864 + 2147483647 + + + 12 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + + + Font + + 2147483647 + + + submenuAction: + + Font + + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligatures + + 2147483647 + + + submenuAction: + + Ligatures + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Writing Direction + + 2147483647 + + + submenuAction: + + Writing Direction + + + + YES + Paragraph + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + YES + Selection + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + + + iDNA Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 3 + 2 + {{335, 390}, {550, 466}} + 1954021376 + iDNA + NSWindow + + + + + 256 + + + + 268 + {{230, 392}, {302, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 100 + 4 + 4 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{17, 394}, {149, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Длина ДНК + + LucidaGrande + 13 + 1044 + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{17, 426}, {149, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Размер популяции + + _NS:1535 + + + + + NO + + + + 268 + {{17, 363}, {149, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Процент мутирования + + _NS:1535 + + + + + NO + + + + 268 + {{230, 424}, {302, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 10000 + 2 + 2 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{230, 361}, {302, 21}} + + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 100 + 0.0 + 0.0 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{171, 424}, {53, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + NO + + + + 268 + {{171, 392}, {53, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + + + NO + + + + 268 + {{171, 360}, {53, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + -∞ + + + +∞ + + #,##0.### + #,##0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + YES + NO + YES + + _NS:9 + + YES + + + + NO + + + + 268 + {{227, 325}, {83, 17}} + + + + _NS:1535 + YES + + 68157504 + 71304192 + Поколение: + + LucidaGrande-Bold + 13 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{184, 300}, {168, 17}} + + + + _NS:1535 + YES + + 68157504 + 71304192 + Наиболее близкая особь: + + _NS:1535 + + + + + NO + + + + 268 + {{312, 325}, {60, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + 0 + + _NS:1535 + + + + + NO + + + + 268 + {{354, 300}, {64, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + 0 + + _NS:1535 + + + + + NO + + + + 12 + + + + 274 + + + + 268 + {{18, 14}, {478, 137}} + + + + _NS:9 + {250, 750} + YES + + -2074083327 + 272629760 + + + _NS:9 + + YES + + + + NO + + + + 268 + {{212, 153}, {91, 17}} + + + + _NS:1535 + YES + + 68157504 + 205521920 + Целевой ДНК + + _NS:1535 + + + + + NO + + + {{1, 1}, {514, 172}} + + + + _NS:11 + + + {{17, 78}, {516, 174}} + + + + _NS:9 + {0, 0} + + 67108864 + 0 + Box + + LucidaGrande + 13 + 16 + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 0 + NO + + + + 268 + {{193, 13}, {131, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Пауза + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{14, 13}, {184, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Начать эволюцию + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{343, 13}, {193, 32}} + + + _NS:9 + YES + + 67108864 + 134217728 + Загрузить целевой ДНК + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{20, 276}, {510, 16}} + + + + _NS:9 + YES + + 0 + 0 + _NS:9 + + 100 + 1 + + NO + + + {550, 466} + + + + + {{0, 0}, {1920, 1178}} + {10000000000000, 10000000000000} + YES + + + AppDelegate + + + NSFontManager + + + YES + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + saveDocument: + + + + 362 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + orderFrontSubstitutionsPanel: + + + + 458 + + + + toggleAutomaticDashSubstitution: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + pasteAsPlainText: + + + + 486 + + + + performFindPanelAction: + + + + 487 + + + + performFindPanelAction: + + + + 488 + + + + performFindPanelAction: + + + + 489 + + + + showHelp: + + + + 493 + + + + alignCenter: + + + + 518 + + + + pasteRuler: + + + + 519 + + + + toggleRuler: + + + + 520 + + + + alignRight: + + + + 521 + + + + copyRuler: + + + + 522 + + + + alignJustified: + + + + 523 + + + + alignLeft: + + + + 524 + + + + makeBaseWritingDirectionNatural: + + + + 525 + + + + makeBaseWritingDirectionLeftToRight: + + + + 526 + + + + makeBaseWritingDirectionRightToLeft: + + + + 527 + + + + makeTextWritingDirectionNatural: + + + + 528 + + + + makeTextWritingDirectionLeftToRight: + + + + 529 + + + + makeTextWritingDirectionRightToLeft: + + + + 530 + + + + performFindPanelAction: + + + + 535 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + window + + + + 532 + + + + startStopEvolution: + + + + 822 + + + + pauseResumeEvolution: + + + + 823 + + + + generationLabel + + + + 844 + + + + bestMatchLabel + + + + 850 + + + + progressIndicator + + + + 861 + + + + loadGoalDNAFromFile: + + + + 862 + + + + value: self.evolution.dnaLength + + + + + + value: self.evolution.dnaLength + value + self.evolution.dnaLength + 2 + + + 769 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 797 + + + + value: self.evolution.populationSize + + + + + + value: self.evolution.populationSize + value + self.evolution.populationSize + 2 + + + 764 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 793 + + + + value: self.evolution.mutationRate + + + + + + value: self.evolution.mutationRate + value + self.evolution.mutationRate + 2 + + + 773 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 832 + + + + value: self.evolution.populationSize + + + + + + value: self.evolution.populationSize + value + self.evolution.populationSize + 2 + + + 757 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 791 + + + + value: self.evolution.dnaLength + + + + + + value: self.evolution.dnaLength + value + self.evolution.dnaLength + 2 + + + 782 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 795 + + + + value: self.evolution.mutationRate + + + + + + value: self.evolution.mutationRate + value + self.evolution.mutationRate + 2 + + + 781 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 830 + + + + value: self.evolution.goalDNA + + + + + + value: self.evolution.goalDNA + value + self.evolution.goalDNA + 2 + + + 872 + + + + enabled: self.pauseResumeButtonIsEnabled + + + + + + enabled: self.pauseResumeButtonIsEnabled + enabled + self.pauseResumeButtonIsEnabled + 2 + + + 826 + + + + title: self.pauseResumeButtonTitle + + + + + + title: self.pauseResumeButtonTitle + title + self.pauseResumeButtonTitle + 2 + + + 828 + + + + title: self.startStopButtonTitle + + + + + + title: self.startStopButtonTitle + title + self.startStopButtonTitle + 2 + + + 827 + + + + enabled: self.canChangeParams + + + + + + enabled: self.canChangeParams + enabled + self.canChangeParams + 2 + + + 807 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + + + 75 + + + + + 78 + + + + + 72 + + + + + 82 + + + + + 124 + + + + + + + + 77 + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 74 + + + + + 125 + + + + + + + + 126 + + + + + 205 + + + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 131 + + + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + + + + + + 349 + + + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + + + + 372 + + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 199 + + 1000 + + 3 + 9 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 124 + + 1000 + + 3 + 9 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 187 + + 1000 + + 3 + 9 + 3 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 4 + 0 + + 4 + 1 + + 82 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 216 + + 1000 + + 3 + 9 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 10 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 10 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + + + + + + + + + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + + 377 + + + + + + + + 388 + + + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + + + + + + 398 + + + + + + + + 399 + + + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + + + + + + 451 + + + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 457 + + + + + 459 + + + + + 460 + + + + + 462 + + + + + 465 + + + + + 466 + + + + + 485 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 496 + + + + + + + + 497 + + + + + + + + + + + + + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + 503 + + + + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + 508 + + + + + + + + + + + + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 534 + + + + + 536 + + + + + + + + 537 + + + + + 543 + + + + + + + + 544 + + + + + 550 + + + + + 551 + + + + + + + + 553 + + + + + 555 + + + + + 562 + + + + + + + + 563 + + + + + 565 + + + + + 573 + + + + + + + + 574 + + + + + 581 + + + + + + + + 582 + + + + + 599 + + + + + + 7 + 0 + + 0 + 1 + + 53 + + 1000 + + 3 + 9 + 1 + + + + + + 600 + + + + + + + + 601 + + + + + 602 + + + + + 603 + + + + + 605 + + + + + 606 + + + + + + + + 608 + + + + + + + + 609 + + + + + 611 + + + + + 614 + + + + + 615 + + + + + 616 + + + + + + + + 617 + + + + + + + + 618 + + + + + 619 + + + + + 620 + + + + + 622 + + + + + 624 + + + + + 625 + + + + + 626 + + + + + 627 + + + + + 629 + + + + + 630 + + + + + 631 + + + + + 633 + + + + + 634 + + + + + 635 + + + + + 638 + + + + + 640 + + + + + 641 + + + + + 642 + + + + + + + + 643 + + + + + 648 + + + + + + + + 649 + + + + + 664 + + + + + + 7 + 0 + + 0 + 1 + + 54 + + 1000 + + 3 + 9 + 1 + + + + + + 665 + + + + + 666 + + + + + 668 + + + + + + 7 + 0 + + 0 + 1 + + 58 + + 1000 + + 3 + 9 + 1 + + + + + + 669 + + + + + 671 + + + + + 672 + + + + + 679 + + + + + 695 + + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 1 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 11 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + + + + + 696 + + + + + 704 + + + + + 706 + + + + + 708 + + + + + 713 + + + + + + 8 + 0 + + 0 + 1 + + 137 + + 1000 + + 3 + 9 + 1 + + + + + + 714 + + + + + 718 + + + + + 720 + + + + + 723 + + + + + + + + 724 + + + + + 726 + + + + + 729 + + + + + 731 + + + + + 732 + + + + + 733 + + + + + + 7 + 0 + + 0 + 1 + + 119 + + 1000 + + 3 + 9 + 1 + + + + + + 734 + + + + + 736 + + + + + 738 + + + + + + 7 + 0 + + 0 + 1 + + 172 + + 1000 + + 3 + 9 + 1 + + + + + + 739 + + + + + 740 + + + + + 741 + + + + + 743 + + + + + + + + 744 + + + + + 745 + + + + + 747 + + + + + 751 + + + + + 673 + + + + + 701 + + + + + 663 + + + + + 842 + + + + + 612 + + + + + 849 + + + + + 852 + + + + + + + + 853 + + + + + 855 + + + + + 858 + + + + + 859 + + + + + 860 + + + + + 873 + + + + + 875 + + + + + 876 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 876 + + + + + AppDelegate + NSObject + + id + id + id + + + + loadGoalDNAFromFile: + id + + + pauseResumeEvolution: + id + + + startStopEvolution: + id + + + + NSTextField + NSTextField + NSLevelIndicator + NSWindow + + + + bestMatchLabel + NSTextField + + + generationLabel + NSTextField + + + progressIndicator + NSLevelIndicator + + + window + NSWindow + + + + IBProjectSource + ./Classes/AppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + +