From bc368db575bb1538da1849d69d20343a372bdf7f Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Wed, 29 May 2019 21:25:14 +0200 Subject: [PATCH] initial init --- .gitignore | 3 + Mini Stats.xcodeproj/project.pbxproj | 390 ++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 57966 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/xcschememanagement.plist | 14 + Mini Stats/AppDelegate.swift | 68 ++ Mini Stats/Readers/CpuUsage.swift | 81 +++ Mini Stats/Readers/DiskUsage.swift | 46 ++ Mini Stats/Readers/MemoryUsage.swift | 59 ++ Mini Stats/StatusBarView.swift | 123 ++++ Mini Stats/StatusBarView.xib | 137 ++++ Mini Stats/Store.swift | 68 ++ .../AppIcon.appiconset/1024.png | Bin 0 -> 61813 bytes .../AppIcon.appiconset/128.png | Bin 0 -> 23576 bytes .../Assets.xcassets/AppIcon.appiconset/16.png | Bin 0 -> 19883 bytes .../AppIcon.appiconset/256-1.png | Bin 0 -> 28477 bytes .../AppIcon.appiconset/256.png | Bin 0 -> 28477 bytes .../AppIcon.appiconset/32-1.png | Bin 0 -> 20361 bytes .../Assets.xcassets/AppIcon.appiconset/32.png | Bin 0 -> 20361 bytes .../AppIcon.appiconset/512-1.png | Bin 0 -> 38712 bytes .../AppIcon.appiconset/512.png | Bin 0 -> 38712 bytes .../Assets.xcassets/AppIcon.appiconset/64.png | Bin 0 -> 21200 bytes .../AppIcon.appiconset/Contents.json | 68 ++ .../Assets.xcassets/Contents.json | 6 + .../tray_icon.imageset/Contents.json | 21 + .../tray_icon.imageset/tray_icon.png | Bin 0 -> 19401 bytes .../Base.lproj/Main.storyboard | 684 ++++++++++++++++++ Mini Stats/Supporting Files/Info.plist | 36 + .../Supporting Files/Mini_Stats.entitlements | 10 + Mini Stats/libs/Extensions.swift | 34 + Mini Stats/libs/NilLoadable.swift | 30 + Mini Stats/libs/Observable.swift | 54 ++ 34 files changed, 1952 insertions(+) create mode 100644 .gitignore create mode 100755 Mini Stats.xcodeproj/project.pbxproj create mode 100755 Mini Stats.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100755 Mini Stats.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100755 Mini Stats.xcodeproj/project.xcworkspace/xcuserdata/samuelgrant.xcuserdatad/UserInterfaceState.xcuserstate create mode 100755 Mini Stats.xcodeproj/xcuserdata/samuelgrant.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100755 Mini Stats.xcodeproj/xcuserdata/samuelgrant.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100755 Mini Stats/AppDelegate.swift create mode 100755 Mini Stats/Readers/CpuUsage.swift create mode 100755 Mini Stats/Readers/DiskUsage.swift create mode 100755 Mini Stats/Readers/MemoryUsage.swift create mode 100755 Mini Stats/StatusBarView.swift create mode 100755 Mini Stats/StatusBarView.xib create mode 100755 Mini Stats/Store.swift create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/1024.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/128.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/16.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/256-1.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/256.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/32-1.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/32.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/512-1.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/512.png create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/64.png create mode 100755 Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100755 Mini Stats/Supporting Files/Assets.xcassets/Contents.json create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/tray_icon.imageset/Contents.json create mode 100644 Mini Stats/Supporting Files/Assets.xcassets/tray_icon.imageset/tray_icon.png create mode 100755 Mini Stats/Supporting Files/Base.lproj/Main.storyboard create mode 100755 Mini Stats/Supporting Files/Info.plist create mode 100755 Mini Stats/Supporting Files/Mini_Stats.entitlements create mode 100755 Mini Stats/libs/Extensions.swift create mode 100755 Mini Stats/libs/NilLoadable.swift create mode 100755 Mini Stats/libs/Observable.swift diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..4afbdf09 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +Pods +.DS_Store +build diff --git a/Mini Stats.xcodeproj/project.pbxproj b/Mini Stats.xcodeproj/project.pbxproj new file mode 100755 index 00000000..6b8eec8e --- /dev/null +++ b/Mini Stats.xcodeproj/project.pbxproj @@ -0,0 +1,390 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 9A1410F9229E721100D29793 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1410F8229E721100D29793 /* AppDelegate.swift */; }; + 9A1410FD229E721200D29793 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A1410FC229E721200D29793 /* Assets.xcassets */; }; + 9A141100229E721200D29793 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A1410FE229E721200D29793 /* Main.storyboard */; }; + 9A5B1CB6229E73BB008B9D3C /* StatusBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B1CB4229E73BB008B9D3C /* StatusBarView.swift */; }; + 9A5B1CB7229E73BB008B9D3C /* StatusBarView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A5B1CB5229E73BB008B9D3C /* StatusBarView.xib */; }; + 9A5B1CB9229E7664008B9D3C /* CpuUsage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B1CB8229E7664008B9D3C /* CpuUsage.swift */; }; + 9A5B1CBC229E78B3008B9D3C /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B1CBB229E78B3008B9D3C /* Store.swift */; }; + 9A5B1CBF229E78F0008B9D3C /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B1CBE229E78F0008B9D3C /* Observable.swift */; }; + 9A5B1CC1229E7A1C008B9D3C /* NilLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B1CC0229E7A1C008B9D3C /* NilLoadable.swift */; }; + 9A5B1CC5229E7B40008B9D3C /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B1CC4229E7B40008B9D3C /* Extensions.swift */; }; + 9A5B1CC7229E7F44008B9D3C /* MemoryUsage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B1CC6229E7F44008B9D3C /* MemoryUsage.swift */; }; + 9A5B1CC9229E8621008B9D3C /* DiskUsage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B1CC8229E8621008B9D3C /* DiskUsage.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 9A1410F5229E721100D29793 /* Mini Stats.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mini Stats.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A1410F8229E721100D29793 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 9A1410FC229E721200D29793 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9A1410FF229E721200D29793 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9A141101229E721200D29793 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9A141102229E721200D29793 /* Mini_Stats.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Mini_Stats.entitlements; sourceTree = ""; }; + 9A5B1CB4229E73BB008B9D3C /* StatusBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusBarView.swift; sourceTree = ""; }; + 9A5B1CB5229E73BB008B9D3C /* StatusBarView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StatusBarView.xib; sourceTree = ""; }; + 9A5B1CB8229E7664008B9D3C /* CpuUsage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CpuUsage.swift; sourceTree = ""; }; + 9A5B1CBB229E78B3008B9D3C /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; + 9A5B1CBE229E78F0008B9D3C /* Observable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; }; + 9A5B1CC0229E7A1C008B9D3C /* NilLoadable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NilLoadable.swift; sourceTree = ""; }; + 9A5B1CC4229E7B40008B9D3C /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + 9A5B1CC6229E7F44008B9D3C /* MemoryUsage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoryUsage.swift; sourceTree = ""; }; + 9A5B1CC8229E8621008B9D3C /* DiskUsage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiskUsage.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A1410F2229E721100D29793 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A1410EC229E721100D29793 = { + isa = PBXGroup; + children = ( + 9A1410F7229E721100D29793 /* Mini Stats */, + 9A1410F6229E721100D29793 /* Products */, + ); + sourceTree = ""; + }; + 9A1410F6229E721100D29793 /* Products */ = { + isa = PBXGroup; + children = ( + 9A1410F5229E721100D29793 /* Mini Stats.app */, + ); + name = Products; + sourceTree = ""; + }; + 9A1410F7229E721100D29793 /* Mini Stats */ = { + isa = PBXGroup; + children = ( + 9A5B1CBD229E78D2008B9D3C /* libs */, + 9A5B1CBA229E7892008B9D3C /* Readers */, + 9A5B1CB3229E72A7008B9D3C /* Supporting Files */, + 9A1410F8229E721100D29793 /* AppDelegate.swift */, + 9A5B1CB4229E73BB008B9D3C /* StatusBarView.swift */, + 9A5B1CB5229E73BB008B9D3C /* StatusBarView.xib */, + 9A5B1CBB229E78B3008B9D3C /* Store.swift */, + ); + path = "Mini Stats"; + sourceTree = ""; + }; + 9A5B1CB3229E72A7008B9D3C /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 9A1410FC229E721200D29793 /* Assets.xcassets */, + 9A1410FE229E721200D29793 /* Main.storyboard */, + 9A141101229E721200D29793 /* Info.plist */, + 9A141102229E721200D29793 /* Mini_Stats.entitlements */, + ); + path = "Supporting Files"; + sourceTree = ""; + }; + 9A5B1CBA229E7892008B9D3C /* Readers */ = { + isa = PBXGroup; + children = ( + 9A5B1CB8229E7664008B9D3C /* CpuUsage.swift */, + 9A5B1CC6229E7F44008B9D3C /* MemoryUsage.swift */, + 9A5B1CC8229E8621008B9D3C /* DiskUsage.swift */, + ); + path = Readers; + sourceTree = ""; + }; + 9A5B1CBD229E78D2008B9D3C /* libs */ = { + isa = PBXGroup; + children = ( + 9A5B1CBE229E78F0008B9D3C /* Observable.swift */, + 9A5B1CC0229E7A1C008B9D3C /* NilLoadable.swift */, + 9A5B1CC4229E7B40008B9D3C /* Extensions.swift */, + ); + path = libs; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A1410F4229E721100D29793 /* Mini Stats */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A141105229E721200D29793 /* Build configuration list for PBXNativeTarget "Mini Stats" */; + buildPhases = ( + 9A1410F1229E721100D29793 /* Sources */, + 9A1410F2229E721100D29793 /* Frameworks */, + 9A1410F3229E721100D29793 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Mini Stats"; + productName = "Mini Stats"; + productReference = 9A1410F5229E721100D29793 /* Mini Stats.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A1410ED229E721100D29793 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1020; + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = "Serhiy Mytrovtsiy"; + TargetAttributes = { + 9A1410F4229E721100D29793 = { + CreatedOnToolsVersion = 10.2.1; + }; + }; + }; + buildConfigurationList = 9A1410F0229E721100D29793 /* Build configuration list for PBXProject "Mini Stats" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A1410EC229E721100D29793; + productRefGroup = 9A1410F6229E721100D29793 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A1410F4229E721100D29793 /* Mini Stats */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A1410F3229E721100D29793 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A5B1CB7229E73BB008B9D3C /* StatusBarView.xib in Resources */, + 9A1410FD229E721200D29793 /* Assets.xcassets in Resources */, + 9A141100229E721200D29793 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A1410F1229E721100D29793 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A5B1CB6229E73BB008B9D3C /* StatusBarView.swift in Sources */, + 9A5B1CC1229E7A1C008B9D3C /* NilLoadable.swift in Sources */, + 9A5B1CC7229E7F44008B9D3C /* MemoryUsage.swift in Sources */, + 9A5B1CBF229E78F0008B9D3C /* Observable.swift in Sources */, + 9A1410F9229E721100D29793 /* AppDelegate.swift in Sources */, + 9A5B1CC9229E8621008B9D3C /* DiskUsage.swift in Sources */, + 9A5B1CB9229E7664008B9D3C /* CpuUsage.swift in Sources */, + 9A5B1CBC229E78B3008B9D3C /* Store.swift in Sources */, + 9A5B1CC5229E7B40008B9D3C /* Extensions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 9A1410FE229E721200D29793 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A1410FF229E721200D29793 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9A141103229E721200D29793 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9A141104229E721200D29793 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "Mac Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 9A141106229E721200D29793 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = "Mini Stats/Supporting Files/Mini_Stats.entitlements"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = RP2S87B72W; + INFOPLIST_FILE = "$(SRCROOT)/Mini Stats/Supporting Files/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.13; + PRODUCT_BUNDLE_IDENTIFIER = "eu.exelban.Mini-Stats"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + }; + name = Debug; + }; + 9A141107229E721200D29793 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = "Mini Stats/Supporting Files/Mini_Stats.entitlements"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = RP2S87B72W; + INFOPLIST_FILE = "$(SRCROOT)/Mini Stats/Supporting Files/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.13; + PRODUCT_BUNDLE_IDENTIFIER = "eu.exelban.Mini-Stats"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A1410F0229E721100D29793 /* Build configuration list for PBXProject "Mini Stats" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A141103229E721200D29793 /* Debug */, + 9A141104229E721200D29793 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A141105229E721200D29793 /* Build configuration list for PBXNativeTarget "Mini Stats" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A141106229E721200D29793 /* Debug */, + 9A141107229E721200D29793 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A1410ED229E721100D29793 /* Project object */; +} diff --git a/Mini Stats.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Mini Stats.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100755 index 00000000..25bf5390 --- /dev/null +++ b/Mini Stats.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Mini Stats.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Mini Stats.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100755 index 00000000..18d98100 --- /dev/null +++ b/Mini Stats.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Mini Stats.xcodeproj/project.xcworkspace/xcuserdata/samuelgrant.xcuserdatad/UserInterfaceState.xcuserstate b/Mini Stats.xcodeproj/project.xcworkspace/xcuserdata/samuelgrant.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100755 index 0000000000000000000000000000000000000000..be32e2d6d521716650510b31a70dcdeaab4f9bc8 GIT binary patch literal 57966 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
*V{HX7|hM3 zsJGp6Q1AlZI<@|*HO`4GXN$#Rb1?+E^h;9u+Xh2*31 zJGAb{(2@Pg5a~&^1JeJ8T$K6g1;j8Yg+eijY?}!)oh>J>jUR?d5+$fj+pGs zpOfP%bNZZcKQ_1Ogn0 zZ_p8AL&qDc9ajH+BmdAuGWkdOC;4ZBzbE(yf`6oUJRN2Q#tm$$@IMvYL@vy3g;RLA z*@_{nU-Ym*j<)UEckAA}Z@+~8 zod*m_OCLTWBP(aZl<7qt-@HXj0}dNyMb&I}a1a*2)ASw&xAl_Bfho)aI`@O4#!#J| zoKumX?{dL~xx>NDl;$nlG~wQ{Dx`(Z>3mhI*5GWht=!eeZ0MzP5#>s?wqAm-cYxzYQExLNGABJVC)c&0 zJR%v)Ngq;r^y~#IDYKNi^!2LVT9;{c`$WfAM?^-Mt{iGz`>P+z-MAhTAQIs zZK{SPQvZon$tk7_#XLtlNMmJ4y)}C4`4Iy}(b~7U3(H(}dd?2UAsiYxYV??ks;QYrXXMRvDzownT!m2FM9R9Mo|M~pJ(RH-Uw~M0s1s1&=kTrqF3gu26l4S@ zM>8qWp)n2?yiImGQtY0s%qbaOnhOF;D%>cA3!;#(!Q>sX-d^u`$g7mig&;!|$_frH zW|-h&dT5Vf%$9;5w&CNFCQq6?B^30yC2$-X1diE*ocaE;r0nd`bXa?!V)Spre?J}r zSMc!fu%Q6Z@ZCTB#)FDeKE!$fJ_`%{`K1hl1~ZKKS$>(XoMB|TfDE5sUPhlsz;no) z+;J)JJdI%_Esz$1nNGv0eB;g!9S#oQLWetHq6m$Rj17fdHoB&vQU1OEN=qtez3IPB z@X`Epaz?>lFbj*WDR8FJ=l<~gXudNoC-D6FJoki5cur&(99CAIJPw{m!t<<(IpdSy zxeq))Sm;Y156?s4`R(G05%f8pVc3?7igPEzb4Pd{>6w+81u7(K>`d_~ZV0IW*j;^P=Ju zT2Cm8J2u-nG8>-3*cA7@t7JHh5BczI%gVE9p75Pd^^|1NaueZsmCJ9m7ryhy%8PSp zpT#na5LWKXrD>sV0yvFI&w%H2cwSKK8$rXNy~1;4B?g@VCc^K&igC2<&_*%ceQCqt8L$$cWhNje;{wNzv*33=xPbhS31$4SzL;k`6){ex6h5I)gFf&X4zWD& z@j(nfGY7&!+-FYLzNg=53YrE)cF4C7VwONUD>RfTfb?cMnuixY^c&6hGb7*pKzWf+ zUP{Le;9W8l++UuB_r>ruhB;}3EP(oz!uJ#it$=q$@La!?SfHa=@DoexYSw|ir=^?; zl;VXH1x8tBI@(IJZYfY_54aF;8g(;T&b8vA!P$K@H;5a}4dJ4V(tHqOAroPQ4>rQA zQtMhy+jge5)VWaC`mL{zmxb{zz^fc`E`b(Omz)$IKh)-TsP~*e>N+%y5^rr=(W9(v z)y-owW^9DmW-UUm^5wbn-?-)6C3>x{x2)158uVLMeY!9xrJxaA0M7g&{!RV_e}oBz zzaR5Q`Oo0#IR75}yi;4BY^c9Q4-|V!Id1svhER(FOv=hPLTF!oPDM4&^(cKm34p1<(kkjR>Hax>{aHQIOl-CC|2ILXWL@ zVILFvpyR1mj8Z72g&yUeoOW2-yQI)_YumE285@`U<|?auOZ&mKEc3@q=Bhr?4@aMk zu8Dpy`n%{8bupsfivBYCXmlmK`2x)CZfAE=o3iYFCKSFs&F*5KGM*k}pM{@CYST5O zaC00rq;N`a`2mWiZ7dJaRDIg7KgKCu7FsmE)l;(#)Ef6heTtzy_Sb4uKc9vi!R#Gl z)Y-%BF?P}33tW>Yf$Q?l@DpoKgr{(DT|V003f_(Y2j;2vcC~nzW1QB5_8z4$s~79I z*kpKXQ37pWG0=g};91TqGvC2WlhWUm`@s=(0xr>U+L*Yoj#1)$1$&Uo{Gtn_HyHS~m#$lN6#u~B^ zYPmnZ!Z*(hMU`kXdIUX%cAxITDsvVaG;WeN8wy>8Bzp3Hx}V*@Xh#cTm^0*cHmw3HGCAG#9!ba zSO#q5w*))(5o~`ph0S88u!XFTy@FlNu41d$t-u5JvWLNR@>%v5PT-nzpx4?M2%O+t2pq_DFk%y}*8@eYJgu{gC~uAUUXOP*Tv0phZEe zf*uQcBj~I{c64*3IGm0v9IG8qIo@*o5ZpXCCO9j&G((r-SwXXF znpHP@vDvBSZ1eEuDb4enU){W>`Af}DhX^6vLoz~Uhuj$QP{@Ihb1j;+h;K2W#ex>A zTkLFcvL)NHTg!}=B`t4h`Dn{yEq`s*p;b~VSF0OZZEba^)laS4wN7m9YQ4Pmw$?{m z|Jo+BOF{EQvmIM@Ozb$j;~gEJ>v*P9^G-uMxjWs_>G@8dhqee! z3M~n}J9JOzxz6o7kLX;{xw7+t&cB6q4;vqLRoJ$$_rsO&{^5n;cZBZ_Ki8#GmoZ(I zblKA7-L7)i{#}c^-qm$)*Pps|?>4d9vTjdw`>cEG?it+|b>Gtcy&kq6!+Ol^QPtx} zPoZc3o^yKM*YnL@xL4m^#l2SddZRb)-LJR1_kFz&_Tl>s=;P^A)#t4UEg~smUc{D& z4h*$kPvnS?G0GZWS%ywyLXe|G;B z{a+ct4@e$x<$z}g{4%iL!195Q4*Ysh#GpBY9vJl5;O>K6gKGw#8WJ|dIizyP$)TY` zXAWII^yIM4!<@sahJBO>7kU#nCVraKGii3xgGpZ{M<@G|whRR% zsRz=UrHxO!H|<1vSb9}1a_%j;$H(^=Uon37grEu2CTyPY)5O$?D<__u6g6q-q}L|5 zo$Q|c

qrgee=R{4h0b>YYB#<$qC-Sa3(d8P^ckO4p}_Lkd?GepWQ3==P#B#lwnM z6`ysdxbJm;Gke7Bb+dn(lQn14obx3UOSY9tr87&P@-*|z@$B(-^e*roEbCo%UD?UG z1Lxj3_ndE(Z=)air~98Q4}k^d{)!$I*H(NuZ|J<$^M0N`Vg6$af){ue>|fYx;SCEv zU6j6P!(wi6{^H$BIxithK3tl#wDJmc#jGoKUm1SoHCLVn_tf_jh0GzZUlo1T%B#M= zdg9ejU(?|l{hCwP4!?HGb@uCg*S)oD(6V*cbJx4CKX60b4fove=kkK(uihAag3hi*0f)9!Q8DW)a>2Rf5YaDZ8zSy@sCZOO(*XkcmJNv z37a=R(Efp2w%{!lTh2Tq-H-Ku zZ0qA)A78V*`S#^I(2j*W&OK55#K|WoKY8$}kx%V@deGC`pNV{C)3cqQUA?o#&Rd>S zp1bC`^Up7O{)ZRJUO2m}XxFLTdApClIO)YBd&cfL@Y1N4UU@nFK zj3cid%{+SW*!W{_zcuZxlW!Ni{n4sUPnDDCeW&r}9sI@v;Bo-%nrjiS3hBpLY6m^JlT2J$oko%$uK2{rvP7WncVu z_PQ^Fzg+WGkFOs8I`QlM=O&#y{f+ON^WU!cuFZFwzK{QY_Yc`WocOWy$KQTh{&Sn3 z@BgL$FMEHT`0J;?&Hr8e{q8?{{_*smqyBvFeChe~dI#A0@t0q4+~lvwgv}u1tZC$^ z`3o9s_f##+Z15e@FJ1y$H^$yi)ndBwbOrdZggv3!&9(w_-?B=Ft*0i!jWe=Qu7%Wy z85|S9^|FIkUz6+eddqbLyFI~7TaZgksbnfhbj8eEW&v|8vy8a`q>wwAH6Vd(1Nq}| zW(V^WIIG_Yj_O}#4lwV41abzXk3W!rWTb-p5rjH|3+_a4hMfxTud~4Ibq=_^o{XlV z=_n65LH<~YwxhjhKRSTkM2A4`cn`b+oxy7gG3>I-`9FDu z=3ph&#J8XNlBY4vZV|%mFY(I7=o5&`! zso*|lY{<@#=R@{{911xW@_xuiAzz1l8*;t{*FtL%)FPxs&lY`JB(=zad2y;Kv0-HX zh4wf2*J3)H9tL*A6-|Ld?~U>?#jXU&Z-a=?%s3nPjo{zmc!1zP2>x@U{I2wg(o$&! zDhhDm0Y?Q75PY7n$ar{wo*9H)dUKy{a{j|eKtm9z`=xWDk#foxmi*(GxnQrshP56 zH%?lVo??0>W7pZbLlq@LiGm|#8d#}B6P6DcaZ%#xqMB(FEVDacM@AXQta||UVy*zM z?LEO>RBL{pkO2POQ0>Q>6$6>GIPd( zc?_?Q`rb9XSW=dd=NMW)DkQEm@0S;y6qgjA0B8NN1JXfrpkH)!#DF+ZBuGz>P8txO z8k-c842EesS@htlEwN!XjyARJ$c2kqvz)$q#zyF&TKy)~f3G1@+Z^uRBdBMu-p2V&4xHM$Jfocpy%pu-$7iIPQ-U!c)PF_KadeHI z{Ny>h3`pr4ot&JM5)qw}kP;D-l9CY7FTG#ih?F!41Orxa3H|#`TTG#)-P}KVDKs!D z8qQ4W=U5fhj@BbKt~VU*1RMD#4@i!Uj!ue>NKK84i%95~9v_jM)Gs{(6k8Hv(vnh> zX_Hn+-9a10$_d!*})TV8pNvkyp6br0hthC< zU6s*pM)ZP&!dWpf(fwSm0kP4IC+819r6ntS?6{oV@e?M({=(F0)9G>1EGL{66~Rf* z91tez0Rwbm9BhMj3{au@!sIG0AJ7ivNaCvW>kC|oGa+-`(v)JLjGNT-*K}NxX zT6j$d&N|XrU65oQ%W$a4>53yr=k>M@CYYagflM-t_DlRHOvN(KK8&4$Pw82 z_>%dW`G)x!DRHEl2BM$D;vl44#+p-&kUEJ^jEgMbI#I}o-bVLK5vl(3x%8@5roQCXqfq};6BqTEW@aKa8C>?p$K61I%6b15RB zhBA626k!+-v6>$VoD>XP7>YIRE)pdjcov*qU*v5r%<$+Oh6*PY{&aT?Y(%B9gRqhMTC+$)ug0Hbw8;YdY2{gvU6p4D8&#?7B;X7)tg)tzvP%J#rz&MP zSjb^xz(Ni@D!b_;8>5G1TY0^z?5`{Mb;8E!YpqvrDu?QdIZW7is_18S_c7&dctvgR zOsZ7gA>gy5_SJjJ37YDC!uG2)%G1Lpjx$WL)Dp`n<#b({pAfcxU72ST@OZO+eO-26 zD(7e`zEZv>>_EZ}s#3lY4-j@RH5CWrrOn(5mv3Ps-F+aPAHv zprr}FEerI@Ps;D0%B}pY{G$A-{6^RzgdIv)AicyI7)l3s8lnmdMLf-CzgN8PIW?1kjbzC15T+h9K;4nnU`89A{~TtHfA>H(CZY%X*1e0kTzl zsGvn%qxMvLslC-cgdI)TF@((|Y*vjLNm-H#qa)koMPr*_M6{T6FyIax0N800tcb2? za`KD8fNt&JuVqt>8OWtL0_^M$fbQnwqW- zS4TjLM-p~CVJ8sq3(HP2T0VIrm#dDU6SfK~PVmM=*eT{@?WK!MQ?C(tZvGsq69i+x z52S3cBhZ3^b{cbrp*!t{(P69{LF2JiYVz<}rWoL%AMLDw@swk>u68K|GHRY924anH&U2ZAyQE~H zl}k$YcvC*0bu0#hN|2G!ev=T5ch*#4VgVBsH34SYwpZQMP%P!0U?_H4LSdcSv$5l# zdSDAe^%8a#Y*!preX1XZYq?sX&Qs^B3)F?`B9MHnDa}&Col&wB^DtU@bo-8;gT5VnA@9>V4m76j^;S~;OX{Ug&BxbiC~OH1?2bNjp=ssWqor3IN) zU&^ejROx>j9Bt4wz|nvBu3O1{YxE7dA<7pFnL)U_PIGiNKqJWZ8a zO-rIu&R>cTvQ$$-%3lymtueYueT?a~MZI6$tUjP_Q6E$vQn#wx;BfL0^-;q52mnhWJl{^W(`c4#mJ z)XIlYrVEnN-JRMnLx_aH1`%o6Kv*C*;DU5lla5SFRK2hTCabj=kD*LyYK}rqjruAs z4)(wp*r!xMwY*Y2K-epRg_t1+#q?_Rka}1>LRc7_*Af;?8g{d~?Jf0PxZ|b1t%58^ z2zynPdR%>vuvZiI8h!0JcfmNSHQual98kSRYRYwNk(I+K^^*&7_*DIju-6fG8J)OV zHBM{v*jTV~Z-|uYm+H9-GWbUQmawplg1d}Xq#x8@K!IERQT<8%nXtu-tNE+d8-)VDHx&d;Y0~6(uEOU}%FG#_>i440JRW?h0ufVQ|(-jJqgHt~QKqy?d$(a)Mg3ufF}um=7VLi})@!JMc{DoQ=(rUKyP z@)Q`eSN*_XutVi@=7T^r4y--8;NlSQXqf(tacb?idv1BlGajdMOnqgA~emD@*Md&6Eo6t^CqN? zqZaN%yZ4QZ?jGv)hgNv}ru!{dL7&jt$51%-p;ClD)ai2#42_F~J-vAIS8QZx54R`O zydM(Uy^dVE_Z;gEbidY4>i}yDtvzAysMKI-eJ7pdJA-E&AD9e=T}+>=0G!geio8CU zt6?=q%gP9Nl+nV(^cpQ(>!NklU`4u$uy+v_cs|?)?w0517nty14d^R`y>a96fy+l1 z;k7#qR@RZVXI?M}S^{u+Umh*o}nUT*r&FRBZ&9r`6K5bZt0cD+yag*y?I6 zgXyfnUP%p|2sZqEOXZEWkHQn@n!8?B6LPePO_e(d%AG>kO|;zm&6`?vyFcNHw;AeH zmh*BgPs?vAlLE-3kgyNXOtw&dNUKx3qeS3kaaY}}&xwQ^7any1az7HA8#McQI*iMEum+X(wGVILtZ%*Kxq z7WNyq6BhOxo*?X#gnep@cBQ5RU37-S(9_zr+I8A8?RpJ(@Y95ofKu$RK)9Q55rj)4 z+$6#|2{(&Y%-Dh{aKmwjA?t%Oyt@LZhhBd&!7_qjt_8b!KG?Ex(1w^Yw97}EPdC+Q zm>C-~oM3Va^LtLktWsD*OsSWbF<0079*7To3UUhA<1-4Nxl>Z4QXOmt)^78GP!ot& zcP7$Mdh$hEgSFR-b3v0}o8LBCu1S83o%vP!GgY6$y0VPB}yHfoy)yNj@J!)tO9-O=y>hs&kA z=2n^qwTCIqJ)~{bpnGA9=S9Nqsn#BW9)vD_i3+w~Qkv`8pgPbQa3BjCjIgaiA8XGC zV2cwZp@wk-`(77@4|jQC+r_ugoJ5}jp+kF`urJpe%saK0U|&#sPJ13y(ROLOwHLKL zgxyQnR|vb0u&)vpBLD=Jj{hY8T2>S(L&+1{* zsI*1TC#f(s)vTjYdl08DCImz0HxPc!6NNU`6xhVOcGkPPNu+>o0D%c&-&E@z_z(bM zE326G|C+n*sHXC5jdFBEI0+CUMOqR<34s711V};xA=E&C5bRhGE7H58!x_uySP3>t z=n#ZZO(+Qo0d?#;*mcx#>@#B>3%1es3s}Z?=iYbUT5r8|bpd}Q=j7y^-S_^!4az3& zV@!Hu#LXWc%LSt=dZzV87r_MHWh3xCenj+#5&hGM{+W8Ct47zx{b6(+(Ff7kg(BdH zF6ti8e+(0a(Oq3U1j4s-A4mg?e%CDpEjD_f`vDt45&iRHzX59iOyB@ShVI|TZ~n|^ z1cY+q-Wt6Ci~;(W0AqmBE5I0_fB7F71K>-4$#9L{8ND~m2PLW7i2hwf9|WMO08G4R zRJvdYTmd`*o(O*hPeSysBKkig`rroM`jlT99UY$z(mVZYML_;RD234pMot!JhwH55 z*dzM;OmHj$h0S1dpnEVDo`UHAg6Q9%ug9hcRy#bAl^$I zEz^I<@#pF)aC40*AH4N{%e=;pcK_r*Kh^a=+&kC~#sRYr+avn7YhXO0e+Sfdmwu8y zFpBZ%yt>$A%+P)cOrl1w@Iz_}JHgH%HPr`?@z)|yY>Zt5bO+$C|AvwKqfGycEd-Rm zxtpUYDNKgl{ysXah23=_<=<_bnDfQiK5mWp*kl;f>yH=Z9+SLyepXJ_7(=fPFZ>rU zH|#VDH`l*6CL}(<1i^GfA0T2uQ1_PviSFY=wx|1ef2z2{44C~lRukroyA1~+`j2&P zZemg8*lBq{9pDf||H-F$4mcc+{WlF890v>Gcvu9B^nBszh(1Vao+A2h5PcA)zb`UD zATWCZd__{)3f;QKlw=Taei?*P-MMK=Y4hEuhX;L>lG*TlU|T>pa=Tvf=-yOPk?ZK% zR5(db3@7W9?O72S(I5GgI>Afe6p%WB=4GRvw8*2#v&gFsUIC}-wIKS>5&aiMpG){~ zCY<#}H4)B*zg*-97s3cAFM>I&e$WfmfLSbU5xvN_$gjx1h*89B)Ek1==pBI9!Rtp? zr|Q4drSPv1{ntfY;3ZeOdC_#cQ>k=!+E~5{Zvr=1?`%=v=li=2{s5!@i+zAg;2nnf z@Gf8s7Y z5$;8xuZrA(7yn%4@f=;O^@V2i!y26lQX`N-4LpEAlSk$Ai-6#t#WEk|b3Y8+evK}O z(bm8}Adumwh7NoL*6sg+kHW{`;|OGgKrjNK>fn<=?|wuev`+6_{~w|iShqX~zJNf+ zpJnbcd;{n-{1bcyz6xgKe}=EazaS9MP*ViLAdndXVG(Ew0-1wg1-=E}hVQ_4;d|pq zx?lyeKp-3fxgd}O0+GNx*ne28^6|+$g7VAP^CO z96#HOyU<2pFTm3uHxJm0zm9(WD=UE_kCvYyCtZ~O1@Xt2!5FtvXE2I@8wd76G&)cA zzx9@5*G|{nJYNJN>-7IGBS>Q_0(B#7pIjq~i3-qZFGz9vYfx+ia{r{gs34S%zh_Lb zQ6LATe10hm#s3?JiUJ)blmLM|bc)UW;80OA6yP}2Jk)%h zLq#ndbEuFP0x`!NDgp(Kdejf{j#`3R0puOE6txVs9F>AVR0Q%yAQ}Ss)T2^$@{Yew6t@1Y&(D^Cdc&-+|hR+J!&?2$&CoIG<(yOCR~K-7$Rw(Aa1)nS82==Pzu zlQ2JXsjk5VMt76*MhiW0^Yg~WKR{~u<*Og^@zFj%C}e!`;^^U^gZ7z*LsyCU;w__R z*QL-Ouk{pa7^pQ0IN+F?QP~0!sR^j}Wu>Kj=w$1@@yB2W2rxR8;xteiJyz7a1k$0qV)$ z9skGJ@zXvW|M@X}ywaDb*ShcZ3V~+Spxz+ROkF7RPs)<0_u%T$dT0;^&O)HX&sUFz z(3Ae=)6oWcIJ6-G&DMST96+Y@sn|u}Y}9cUd`gJX#%Qy@I{{Yj0NNaZ=7Q)Lny0fp zx)Fhog{rZl;4=F!PGpS+1#sPX%vrQO8i&T~8KMb#O95^VWILuhFvXa7>MB;zqfK}7 z#iOOTvEXgAfSaE^_KHP%=29J-(LcO|K+D0H2b6?BsprvPwikQ`3GIp|gU=zLDU;ry zJ;uG94j>$(ZSMrY5(G*kvy#T9r*tv}sf%IGP}%r=w?#p(8$J{a=hAe)-61 z(KB^Pvkpx0@4S8N6K135j14vXPlwc^6Ln|T%|HB4Zw1mAE&LL&gPxCG0AdhOEF8t` zSOVq_S3Mfw$Y2}b44eP~A=4n#Alg6(SoWp?&b&keFp6(b2q??i0P)s-K(=+r;E2I7 zgA)MNI&5&p;EusPgWn7u7(6z33W%Iu8N4-kKY83_i^;UfL6c{ILCMO=s>vrN-<$mF zu35G;NCotIJ3PxPQ3?mHrh62MlLy_ThFdmXsn&8MP19hti-9q0XYtp@6{yCTs-t4sD3GK--}0fbKa0-5{aKKnxjZ7MhJNMpvS% z(Y5G$^l#`9zy>tl7&4w{JjvL^7-NhzHaE63o@z`to?*Pgc)js9=($v&+s;QHyv#F=4x2cb*uPN6w z#x&M6&NSY1j_ESfEYlp*JktWxl>oQ9-gJZM_okaox0*Ja9yh&i`U*1<17pw_6AT7p zg|WuiV(c+^3=<>7q+!0stir6u6k)btwqmwniZNvvDMpUz#`I#8n0|}~qs5%SoWcxa z&S1`AE?_QUe!|?r{9!i93=c5CNoJ{Ld1i%XUz@Eq+i14SY`57SvobTO*)_B401{pp4A4=}%wCwiG<$9K*6bZt4?7-Ur6yu0VJ8E`6bfq$P{iTbNNf~V zfQ<#XDG_!Wb_RA9HW51?yAZn=y9~Pmn~u%G=3)!5Ut_<)ev4g)-GJSM-HP3gm0+u| zHP|}rt0@zwOqw!ziqVv$Dd|%(r({pbHFq-iHuo|2HTO4PYhG+#V!qRSxA{%;$L4>S zKQn(}!L$gsh_r~Z5Lj%psIaKCsJ5uJ#9LAayDaxumRVL<-m!dY`P_2E z@|6|OD$Xk2D#2>HRjZZKs^3aurJd?Ll{S?=)ej(+zn{8$YU$MSsgkMpraqrKGWFHe zH`d|S3D(oCXIjs;mRk>6@3%f^eaOZHpqTA#@HP%MDK-T*D{WTUd}DLS=B&+mn~OG= zZOOKNwhUXAE!$RXTV-2gTW8x~`_|6D&d?6FL)*=?TMTf{%k5U!?YH~U?zG)myYm31 z!m_$-{2738r(YER@`=+7`Fqr z3%3WS!2N`KkGBPQY7(A|cgNH59DEQy7$1TU!$;ux_-Onz{0#ge{BryXd>TF*pNr4O z7veYKH{(n3wfK5`BfbgWjNgY>;Ct|Wcoklazf900I1so5K0!c;B?t+#3CV=Tgr$V# zgcXD|LIxp=kV9BaC?aejhyiMQ7onUWAyg4+2pxod1TEnR;TYir;S^z*aG7w0aE)-C zaD#BmVVr}LL!`qphb)I&hkS=ZhcynH9kx1bcMv=5aML7DybLenTIP^I5 zIj9_tI-GGh>u}!TlEWQ`M-ERMo;o~t7$NEr#}gsqMB*gkWTF!>ikLy%PAnx>5G#q* z#J$8WqMX=G>?JCR{lp{0lf)m1r->Jcmxw5kJqr{A3JJH2vx=d9;E-uWwM17|~kVz+j-b0#~}oaxSf&J1UkbBJ@8bA&VB zIodhKd4+R{bC2_R=bxQ#INx%<4zDy1XS#AWb4oCK-{i zBwLa_2~Tn$Ig*@7BodkAM+zWuNL*4FDS{M55|9!}^GT_sJW?TP6{(1{hP0WqjZ{o3 zA?+gVAt^{dk>0!7x;nX%T-{tLuD-5;u3T51Yp83uYozOR*Ez0pT^G1621xuA*HqV4 zu0^g}Tz9#ax>mSWxz@V2xVE`=xOTZJTzg#4y1pjcl3C;sayXe!jwVkd&m%7&CzBVG zmyuHdet#voi2N;i9r=6mX7V<2F}a#tNA4i^k^9L5R-AmnT-Rs>O-J9H--DU25 z?izQk`+oPs?nm8ExSw*r=Kj0;Gxrhq*Y1B(^e6@tBMO>gLNTLEp-?F^D61$Hlm81=&hA0OqhbhM>Cn%>V!<5UEyOjHshm++)P!mFGlHLr>V# z*c0n%?rG&|?dj_2?#b{B_6!Bg22q|do-;gWdnS6$^Gxzg222M{p2t0Z_k89#;`!S1 zt=9xEl$WuWsh6486fX-eBH%zEdr`c+y?ngvh=cKGl$FMm48eQLU*&syo$_>P@9n{i#f90F^@xq6(<-)CB4bY9e(W zHHn%`&8Fs2*HX7ow^K`~yQrnqT51DTO5ID9QQN4;0N(=E+uNJv&GF`X^Sq-Uqx7c^~yY?tRL8 z*!v;PjOI(5Mw>@VqAj8=p=HntX{%`8(7vUurLCuJpcT_9X?3&)S`)36)=ul9$!Ys( zKhVz5uF!s_-Jsp3-J?CBJ)^y#y`;SXj1N{m9G`_gYkW5QZ1WNO?C_EJH2O68H2cT^ z4@8HL+Goh;fX^YH<31;ShJDWX-0->W^M}tHpLg_ebcp^H-I$J{W9jB}E4nq^k3N^a zhF(i=p|{aH>HFyY^n>)n^rQ3>^i%X<`ZfAZ`fd6>`UCnS`XBUXzWTn#zLvh$zIMKN zU!t$Ouct57m*(s1>+d_wca?9Auh#d7?{VK#zQewkeQ)~S_Pyu(o9}(!hrVz8^!&yH zK8neHMt*2N6F+-Df}e+hlh-C;F z3mD0aOvXyaY6iks%lMA5ol(Nr$=J;(V^lEu7(X-hnRuov)1B$bq%xUI9y5#?$&6;k zGKEYLa~g9Yb18EYiP^$zWA-qWOf^%>+|NA7yuq5p zBC{e{@vLdAnXK8YWL7FGgO$z7W#zL9Szoi(vA$#NV3o4US(U6hRs*Yv)y(Q+^|Ow! zPO^qsXIYn6S6Dx@eqlXiJ!bvEdLA$>U}3*&H^P&0~kLBiMZQ4E7@S681873OkjZ&dy|i!$#O^+3VRG*_+v0+1uHr zfCr?3-NbHYE7(Kq{pCs*V#AOx7iQbkJ*2)pR-@GUvum^ZX6Ge7l+32 z<@j^BoEXj=&RouXP7)`XvzW7#lgr8HtmLfX6miyY)^Wb$lyE9IRh(K*J*S=1&rx$U z94+Sr=Pc&}=Q8Ii=N9KK=Qqv+&LhrS&bvUpK>ff)fmwk$fq8+2fy05<0 z5EL0SGiXlGyr86@ML|o0Qi9TgRtF(LYlFTE`aWn&(DtB`pq)YOL8_pWL05tvamR7d zTnp}0t}PeG_2mX~qq!pPEbc#|4Xm7X~j5UKYF}I6XKk zI5)T;cxCX;;F@50@KEr%;Jd-kgWm1AhT=jULLEb?fW?I#>K~dHx;Auu=!Vcup@&1yg}}Zl@MYn7;RWF5o&MIMVh8+jq}a^%&>JCS!If8&qmqxn<#mV9fz9p91f%y;Fx^F8=} zd?ugG58_Ai`FsI?F+ZEXlE0dd@YnJ;@wf1|^GoQn zf>1$(AW9G~m?oGZm@P;YqzDQGn*|+$KEV%y6M`QFX9VX3R|VGvHw3o@cLnzZPhuv< zpkqv9urcN_&M{sw%$Ts4$e8Gu*qHbjaZGtkQ%q}2N6fyM-WXMkCPo``DCT6$&6tNV zBeCYOwy^=R@v-w`7sMvTCdX#Ru8dtBi^Q&t{VsNUY)R~{*wWaF*vigLeIq~1duZ!OhzbSre{Py_z_}2KY zctw0~yej^1{HgfU@#o?%#{V3DBmP$W-S}VQM?{dwT*MHCi3FlJkw`RMG*`4hv{1BI zv{bZO^quH?(H7A*QMIT})F|33l8Nq%o+pe?_$py?0-Ru)fK9MSuu7mLFcVk_0STOh zsD$VQK|*XoVnTAll7!_6sR=m=`3Wl%RwooCY)RObP@J$MaaQ7z#ASd(C~Z;5BH<#@ zqG^j}rdp;trczS9QfaBasf^U%)X>!M)X3E6)R@#2sU@jBspnIFPQ8(OJN0hr80tXO-TDH%`D9_Z7N_3BBT-1oYP2Yere3K@U*xzQQGvhS!s!Bi_?~+tw>8x z1H(pX;qu+xfx3`mSyB+e4Vj61IbvQu_0qq#+HnVjH(P-MteqAh9aXkLz!_X z<4DG_jFXv0nUgDaee?6lNx5ZqJltR%O;?)@NSJ z{5|u2=7Y>fnQt@y%zT%nmj!2;W?{1|vTU;Kvj|zlEUzr@ET1gDtkkTPS*xC$dgu4QD;bdY$!WwqCY=_QdQ-*$&xm*&f-{Y+80i_MGg+*~_w1vR43> zrL63t>>b&S*?Y5P*@|p+wl;fz_VMh?*}r7p%YKsmXU_N>RE~L$M-DwFCTCGjR!(8g zs+^*nH96nsY{}W4QH^Xb2sGf%-xl{ zJGV5qF;|+~l-r!!liQoym#fM>oO>+yWbSb8+1&HFw{jolzRiR4jPo#gQ}QhHtn=*h z@Oi{MpFF=jMjk7VlgG^q$qUbm%!|sKmbV~pWu7=sn%AFqHt#{+t9;vhV!mTOC7+qk z%@4^B&*$e0^AqxCAe%rDND3!|7HIBg7F0t3MLhx z3rq{J1r`NX1>Ay+0!cw*L2E&8!NG##1*Zy57o01&Qt)%Zje^?+cME3g4A*qm77*rTu$S)KW#ud&eoK=`uIKMEda9Ls2_IJhOic!T= zi*1W>#SXqbFcBJfh*{QPAW#`H+ zmi<(AwOp^;RMIHfE0Ias zC0!D^q+fDGa$Issa$0guazS!Sa$9moa!>MH@>=p|rC#NP%1M=mm2jm?CA~7ZGO9AB zQdpT#IiqqxWpd?`%H@@*mFblmE1N3il}9R%Ro<+;S2eE6unJpcS4FC#Rryvis+d&) zRe@E(RidgDRk>9wt5#PPRjsM|zN)0ErK+RqaMksy+f@&%(bZW9@&s-IPlRKKo%TZ5{ZT4P;fQ)5>{uJNm3 z*05`WYIrqaHIX&bYi89X*37F}P?KDQ(Y2xA(t(DYjY7f;OtvyluW9`-2JGH;o-miUB2i2L^IoA2riRz};&8kbR zn_suEZcklJT~l34U0Ype-M%_)-Lbmiy0di`>Mqyat9w#!T#v2yt`Dpat`DgX2P|hZ z>Sxs_)_+sKp?+ump8E27NquAeVEy6xoAs|6#y7Y%cs0yv$Zpu(P~V_x&@>D-9B4Sy zaJ1n>!;cMT8qPOdYPizywBdQf%ZAqte>Unh>NieoG-xzzgd2?;O&i@BnT@j=vl_o` z+|}69IM8^e@sZR(YAlBE=>my{t5lJcZs(nx8vbe43UG)cNhx*Tw=Wk|E6xzYmZ zR_S)BL|Q9tkTywMr5)0JQib%CbXa;#dQ*Bw`m6Mz^ojJD^hJ|?)8r<&$+!vAWYuKT zWZy(+A~unl0-7S4Vwz?&&2F08G{5QlrkbYirlU<)n;!3-u-9_0^w<$6J?WRQ)C30k1SjkCz~r{;My8eRmmQQ{l>H)mD0?D%CL58xlD%oQY;|m9wQ^dyts$-9t^8I&Yh0_Sb$aWp z*2LDF*8J9$t*ctUX+>Jsw61U6*t)rOTdTNrM{7&#fz}JHw_D$~ebr{yMr#XiOKHn% zTidp=ZFAeUwjFJ|+sfK1+M3%=w_Rwv)%I)K{kBJK&)P=XUbnq%pV)5LZqaVnj&CQn zJGWEXz1qFo>Fs{)$?dD!ceYoy*R~3m z$Bu>3Z7rZXaQv$3E&lAHeCidEd@`E&Dq5 z{jl$>9Fm*JF>YXwo^q#!BC z3W~y05uo5HLKWePNJX4Nq?oRlshF);s#vC2u2`WcRIF5dtyrztq}ZbtfEK=DxVNb#h5Vz)uJQ8&8VwA-vZq+8IP z&^@DjcK6)w`Q54A8Qt04dEJ}3w{(|vOS-GNYrEUKySnAwJ>3Vo4|N~yKHg*7SL5rYbX(*~(ny zH_G+Ojmpi+ZOUS0rLsm@uaqkHDYeS|%7ez?z+#lK> z(J$;z=%3y{vwu$i-2SioYx{rbzuo_^|4IL|{ull4)sxhd)kbQR+E{I>wo^N(9n~&s zceRI_s-~%f)uHOy>bdF#>SXm2^)hvqx=_7JU8G*4UZ)nTcdGZO%hgTl7Imw-L#eK3T>Wk{j8bghl#$02ivDQ#E98I`}uMueCG$Ku+X1->jX0c|OCPkB@`9|}- zrdHFg>D8z-8qJ{QfaZkelxA3SMsrScLGygTbbvMxJuqt^abW(y!huBtO9s9k*f_9x zVB3IrVCTT@f$D*Vfu@0$fwlqFz|g?Kfx`pG22Ky08@MoVdEm;x?SY2_Z?xmJ6SR}G zhFViCR%@=c(pqaBwN$N-)=$gSvbBL)kv37Aq+O(4s!h=rXp6LKwClASwcE8N+MU`x z+A?juwpFXt4r&i*4{48ThqY(5=e3u#KWQImUkvIGLW2_qzZ$d{bQ=sETrikCxOi~c z;EKWZgWCpo4b~1G92_1zGkAXR(%_ZBCxg!hM+RRH{yF%5XwndR$aDxhWHDql + + diff --git a/Mini Stats.xcodeproj/xcuserdata/samuelgrant.xcuserdatad/xcschemes/xcschememanagement.plist b/Mini Stats.xcodeproj/xcuserdata/samuelgrant.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100755 index 00000000..7a1a634f --- /dev/null +++ b/Mini Stats.xcodeproj/xcuserdata/samuelgrant.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Mini Stats.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Mini Stats/AppDelegate.swift b/Mini Stats/AppDelegate.swift new file mode 100755 index 00000000..fa851e5a --- /dev/null +++ b/Mini Stats/AppDelegate.swift @@ -0,0 +1,68 @@ +// +// AppDelegate.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 28.05.2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Cocoa + +@NSApplicationMain +class AppDelegate: NSObject, NSApplicationDelegate { + var statusItem = NSStatusBar.system.statusItem(withLength: CGFloat(84)) + let statusBarView: StatusBarView = StatusBarView.createFromNib()! + + func applicationDidFinishLaunching(_ aNotification: Notification) { + self.statusItem.length = CGFloat(28 * store.activeWidgets.value) + + let _ = CpuUsage() + let _ = MemoryUsage() + let _ = DiskUsage() + + if let button = statusItem.button { + button.addSubview(statusBarView) + } + statusItem.menu = statusBarView.buildMenu() + + store.activeWidgets.subscribe(observer: self) { (newValue, oldValue) in + self.statusItem.length = CGFloat(28 * newValue) + + if let button = self.statusItem.button { + if newValue == 0 { + self.statusItem.length = NSStatusItem.squareLength + for view in button.subviews { + view.removeFromSuperview() + } + button.image = NSImage(named:NSImage.Name("tray_icon")) + } else { + button.image = nil + button.addSubview(self.statusBarView) + } + } + } + } + + func applicationWillTerminate(_ aNotification: Notification) { + } + + @objc func toggleStatus(_ sender : NSMenuItem) { + let status = sender.state != NSControl.StateValue.on + sender.state = sender.state == NSControl.StateValue.on ? NSControl.StateValue.off : NSControl.StateValue.on + + switch sender.title { + case "CPU": + store.cpuStatus << status + case "Memory": + store.memoryStatus << status + case "Disk": + store.diskStatus << status + case "Colors": + store.colors << status + return + default: break + } + + store.activeWidgets << (status ? store.activeWidgets.value+1 : store.activeWidgets.value-1) + } +} diff --git a/Mini Stats/Readers/CpuUsage.swift b/Mini Stats/Readers/CpuUsage.swift new file mode 100755 index 00000000..e555cae8 --- /dev/null +++ b/Mini Stats/Readers/CpuUsage.swift @@ -0,0 +1,81 @@ +// +// CpuUsage.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 29/05/2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Foundation + +class CpuUsage { + var cpuInfo: processor_info_array_t! + var prevCpuInfo: processor_info_array_t? + var numCpuInfo: mach_msg_type_number_t = 0 + var numPrevCpuInfo: mach_msg_type_number_t = 0 + var numCPUs: uint = 0 + var updateTimer: Timer! + let CPUUsageLock: NSLock = NSLock() + + init() { + let mibKeys: [Int32] = [ CTL_HW, HW_NCPU ] + mibKeys.withUnsafeBufferPointer() { mib in + var sizeOfNumCPUs: size_t = MemoryLayout.size + let status = sysctl(processor_info_array_t(mutating: mib.baseAddress), 2, &numCPUs, &sizeOfNumCPUs, nil, 0) + if status != 0 { + numCPUs = 1 + } + read() + updateTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(read), userInfo: nil, repeats: true) + } + } + + @objc func read() { + var numCPUsU: natural_t = 0 + let err: kern_return_t = host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &numCPUsU, &cpuInfo, &numCpuInfo); + if err == KERN_SUCCESS { + CPUUsageLock.lock() + + var inUseOnAllCores: Int32 = 0 + var totalOnAllCores: Int32 = 0 + for i in 0 ..< Int32(numCPUs) { + var inUse: Int32 + var total: Int32 + if let prevCpuInfo = prevCpuInfo { + inUse = cpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_USER)] + - prevCpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_USER)] + + cpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_SYSTEM)] + - prevCpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_SYSTEM)] + + cpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_NICE)] + - prevCpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_NICE)] + total = inUse + (cpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_IDLE)] + - prevCpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_IDLE)]) + } else { + inUse = cpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_USER)] + + cpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_SYSTEM)] + + cpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_NICE)] + total = inUse + cpuInfo[Int(CPU_STATE_MAX * i + CPU_STATE_IDLE)] + } + + inUseOnAllCores = inUseOnAllCores + inUse + totalOnAllCores = totalOnAllCores + total + } + store.cpuUsage << (Float(inUseOnAllCores) / Float(totalOnAllCores)) + + CPUUsageLock.unlock() + + if let prevCpuInfo = prevCpuInfo { + let prevCpuInfoSize: size_t = MemoryLayout.stride * Int(numPrevCpuInfo) + vm_deallocate(mach_task_self_, vm_address_t(bitPattern: prevCpuInfo), vm_size_t(prevCpuInfoSize)) + } + + prevCpuInfo = cpuInfo + numPrevCpuInfo = numCpuInfo + + cpuInfo = nil + numCpuInfo = 0 + } else { + print("Error KERN_SUCCESS!") + } + } +} diff --git a/Mini Stats/Readers/DiskUsage.swift b/Mini Stats/Readers/DiskUsage.swift new file mode 100755 index 00000000..e05943f8 --- /dev/null +++ b/Mini Stats/Readers/DiskUsage.swift @@ -0,0 +1,46 @@ +// +// DiskUsage.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 29/05/2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Foundation + +class DiskUsage { + var updateTimer: Timer! + + init() { + read() + updateTimer = Timer.scheduledTimer(timeInterval: 30, target: self, selector: #selector(read), userInfo: nil, repeats: true) + } + + @objc func read() { + let total = totalDiskSpaceInBytes() + let free = freeDiskSpaceInBytes() + let usedSpace = total - free + + store.diskUsage << (Float(usedSpace) / Float(total)) + } + + func totalDiskSpaceInBytes() -> Int64 { + do { + let systemAttributes = try FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String) + let space = (systemAttributes[FileAttributeKey.systemSize] as? NSNumber)?.int64Value + return space! + } catch { + return 0 + } + } + + func freeDiskSpaceInBytes() -> Int64 { + do { + let systemAttributes = try FileManager.default.attributesOfFileSystem(forPath: NSHomeDirectory() as String) + let freeSpace = (systemAttributes[FileAttributeKey.systemFreeSize] as? NSNumber)?.int64Value + return freeSpace! + } catch { + return 0 + } + } +} diff --git a/Mini Stats/Readers/MemoryUsage.swift b/Mini Stats/Readers/MemoryUsage.swift new file mode 100755 index 00000000..a6ae9365 --- /dev/null +++ b/Mini Stats/Readers/MemoryUsage.swift @@ -0,0 +1,59 @@ +// +// MemoryUsage.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 29/05/2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Foundation + +class MemoryUsage { + var updateTimer: Timer! + var totalSize: Float + + init() { + var stats = host_basic_info() + var count = UInt32(MemoryLayout.size / MemoryLayout.size) + + let kerr: kern_return_t = withUnsafeMutablePointer(to: &stats) { + $0.withMemoryRebound(to: integer_t.self, capacity: Int(count)) { + host_info(mach_host_self(), HOST_BASIC_INFO, $0, &count) + } + } + + if kerr == KERN_SUCCESS { + self.totalSize = Float(stats.max_mem) + } + else { + self.totalSize = 0 + print("Error with host_info(): " + (String(cString: mach_error_string(kerr), encoding: String.Encoding.ascii) ?? "unknown error")) + } + + read() + updateTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(read), userInfo: nil, repeats: true) + } + + @objc func read() { + var stats = vm_statistics64() + var count = UInt32(MemoryLayout.size / MemoryLayout.size) + + let kerr: kern_return_t = withUnsafeMutablePointer(to: &stats) { + $0.withMemoryRebound(to: integer_t.self, capacity: 1) { + host_statistics64(mach_host_self(), HOST_VM_INFO64, $0, &count) + } + } + + if kerr == KERN_SUCCESS { +// let active = Float(stats.active_count) * Float(PAGE_SIZE) + let inactive = Float(stats.inactive_count) * Float(PAGE_SIZE) +// let wired = Float(stats.wire_count) * Float(PAGE_SIZE) +// let compressed = Float(stats.compressor_page_count) * Float(PAGE_SIZE) + + store.memoryUsage << ((totalSize - inactive) / totalSize) + } + else { + print("Error with host_statistics64(): " + (String(cString: mach_error_string(kerr), encoding: String.Encoding.ascii) ?? "unknown error")) + } + } +} diff --git a/Mini Stats/StatusBarView.swift b/Mini Stats/StatusBarView.swift new file mode 100755 index 00000000..2836c4b2 --- /dev/null +++ b/Mini Stats/StatusBarView.swift @@ -0,0 +1,123 @@ +// +// StatusBarView.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 28.05.2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Cocoa + +class StatusBarView: NSView, NibLoadable { + @IBOutlet weak var CPUView: NSView! + @IBOutlet weak var CPUTitleLabel: NSTextField! + @IBOutlet weak var CPUValueLabel: NSTextField! + @IBOutlet weak var MemoryView: NSView! + @IBOutlet weak var MemoryTitleLabel: NSTextField! + @IBOutlet weak var MemoryValueLabel: NSTextField! + @IBOutlet weak var DiskView: NSView! + @IBOutlet weak var DiskTitleLabel: NSTextField! + @IBOutlet weak var DiskValueLabel: NSTextField! + + override init(frame: CGRect) { + super.init(frame: frame) + prepare() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + prepare() + } + + func prepare() { + if store.cpuUsage.value != 0 { + self.CPUValueLabel.stringValue = "\(Int(Float(store.cpuUsage.value.roundTo(decimalPlaces: 2))! * 100))%" + self.CPUValueLabel.textColor = store.cpuUsage.value.usageColor() + } + if store.memoryUsage.value != 0 { + self.MemoryValueLabel.stringValue = "\(Int(Float(store.memoryUsage.value.roundTo(decimalPlaces: 2))! * 100))%" + self.MemoryValueLabel.textColor = store.memoryUsage.value.usageColor() + } + if store.diskUsage.value != 0 { + self.DiskValueLabel.stringValue = "\(Int(Float(store.diskUsage.value.roundTo(decimalPlaces: 2))! * 100))%" + self.DiskValueLabel.textColor = store.diskUsage.value.usageColor() + } + + store.cpuUsage.subscribe(observer: self) { (newValue, _) in + let percentage = Int(Float(newValue.roundTo(decimalPlaces: 2))! * 100) + self.CPUValueLabel.stringValue = "\(percentage)%" + if store.colors.value { + self.CPUValueLabel.textColor = newValue.usageColor() + } + } + store.memoryUsage.subscribe(observer: self) { (newValue, _) in + let percentage = Int(Float(newValue.roundTo(decimalPlaces: 2))! * 100) + self.MemoryValueLabel.stringValue = "\(percentage)%" + if store.colors.value { + self.MemoryValueLabel.textColor = newValue.usageColor() + } + } + store.diskUsage.subscribe(observer: self) { (newValue, _) in + let percentage = Int(Float(newValue.roundTo(decimalPlaces: 2))! * 100) + self.DiskValueLabel.stringValue = "\(percentage)%" + if store.colors.value { + self.DiskValueLabel.textColor = newValue.usageColor() + } + } + + store.cpuStatus.subscribe(observer: self) { (newValue, _) in + self.CPUView.isHidden = !newValue + } + store.memoryStatus.subscribe(observer: self) { (newValue, _) in + self.MemoryView.isHidden = !newValue + } + store.diskStatus.subscribe(observer: self) { (newValue, _) in + self.DiskView.isHidden = !newValue + } + + store.activeWidgets.subscribe(observer: self) { (newValue, _) in + self.frame = CGRect(x: 0 , y: 0, width: CGFloat(28 * newValue), height: self.frame.height) + } + + store.colors.subscribe(observer: self) { (newValue, _) in + if newValue { + self.CPUValueLabel.textColor = store.cpuUsage.value.usageColor() + self.MemoryValueLabel.textColor = store.memoryUsage.value.usageColor() + self.DiskValueLabel.textColor = store.diskUsage.value.usageColor() + } else { + self.CPUValueLabel.textColor = NSColor.labelColor + self.MemoryValueLabel.textColor = NSColor.labelColor + self.DiskValueLabel.textColor = NSColor.labelColor + } + } + } + + func buildMenu() -> NSMenu { + let menu = NSMenu() + + let cpuStatus = NSMenuItem(title: "CPU", action: #selector(AppDelegate.toggleStatus(_:)), keyEquivalent: "") + cpuStatus.state = NSControl.StateValue.on + cpuStatus.isEnabled = true + + let memoryStatus = NSMenuItem(title: "Memory", action: #selector(AppDelegate.toggleStatus(_:)), keyEquivalent: "") + memoryStatus.state = NSControl.StateValue.on + + let diskStatus = NSMenuItem(title: "Disk", action: #selector(AppDelegate.toggleStatus(_:)), keyEquivalent: "") + diskStatus.state = NSControl.StateValue.on + + menu.addItem(cpuStatus) + menu.addItem(memoryStatus) + menu.addItem(diskStatus) + + menu.addItem(NSMenuItem.separator()) + + let colorStatus = NSMenuItem(title: "Colors", action: #selector(AppDelegate.toggleStatus(_:)), keyEquivalent: "") + colorStatus.state = store.colors.value ? NSControl.StateValue.on : NSControl.StateValue.off + menu.addItem(colorStatus) + + menu.addItem(NSMenuItem.separator()) + menu.addItem(NSMenuItem(title: "Quit Mini Stats", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "")) + + return menu + } +} diff --git a/Mini Stats/StatusBarView.xib b/Mini Stats/StatusBarView.xib new file mode 100755 index 00000000..bb03c13f --- /dev/null +++ b/Mini Stats/StatusBarView.xib @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Mini Stats/Store.swift b/Mini Stats/Store.swift new file mode 100755 index 00000000..6c07afd8 --- /dev/null +++ b/Mini Stats/Store.swift @@ -0,0 +1,68 @@ +// +// Store.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 29/05/2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Foundation + +class Store { + let defaults = UserDefaults.standard + + let cpuUsage: Observable + let memoryUsage: Observable + let diskUsage: Observable + + let cpuStatus: Observable + let memoryStatus: Observable + let diskStatus: Observable + + let colors: Observable + + let activeWidgets: Observable + + init() { + cpuUsage = Observable(0) + memoryUsage = Observable(0) + diskUsage = Observable(0) + + cpuStatus = Observable(true) + memoryStatus = Observable(true) + diskStatus = Observable(true) + + activeWidgets = Observable(3) + + colors = Observable(false) + + if UserDefaults.standard.object(forKey: "cpuStatus") != nil { + cpuStatus << defaults.bool(forKey: "cpuStatus") + } + if UserDefaults.standard.object(forKey: "memoryStatus") != nil { + memoryStatus << defaults.bool(forKey: "memoryStatus") + } + if UserDefaults.standard.object(forKey: "diskStatus") != nil { + diskStatus << defaults.bool(forKey: "diskStatus") + } + if UserDefaults.standard.object(forKey: "colors") != nil { + colors << defaults.bool(forKey: "colors") + } + + cpuStatus.subscribe(observer: self) { (newValue, _) in + self.defaults.set(newValue, forKey: "cpuStatus") + } + memoryStatus.subscribe(observer: self) { (newValue, _) in + self.defaults.set(newValue, forKey: "memoryStatus") + } + diskStatus.subscribe(observer: self) { (newValue, _) in + self.defaults.set(newValue, forKey: "diskStatus") + } + + colors.subscribe(observer: self) { (newValue, _) in + self.defaults.set(newValue, forKey: "colors") + } + } +} + +var store = Store() diff --git a/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/1024.png b/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 0000000000000000000000000000000000000000..94e5981300829a4234b45a62623b064c9c61821f GIT binary patch literal 61813 zcmeFa2UJzbwl2KDKoTQ}5s)AV!X_t4f{NsvljJ0@NrFh&22jBkNup#VXBCkg6cGW* zBBDe=5fD&Hcrz);tE>Gs>!$9KFzN#NZ67oL%(C-a^17%gTvg?7b#ir*mm*)%R_F<%p}-?pSUJ!wR@{UWToc{|lZjC>2mqkb*m2)6M8cIE{$vln*dE=F@|T37rlXWsS^ z4v^H{hvFqHq9-pJl5@F`>FRRRvp37rancBxk(xzIb3Z+QcQ4;Xfo%gbFEK1Jloob7 zv+UKpHLtl@=;q_Crd(rHn^&34&4*S#v}EI@F>KJ?uWjWhu3#VG*k*#`%01S}jkYFK zi5~O8)(^Ky7h;K{Z*^zzNH!;vZk2R*e;6Kqqwq||(5yk%cg5zZX|?Y1+3$YhOY?IB zmG4VcLpiYw+lA4BApil|nX4t6j-lQ%EXaWy3F~>D|Ye? z1l!AlEuO1WQp<9QtQf&sKFkHfOir+HYc&)|)sbV^iNuQ>_mA(NeX{3h_2vUlHuXHA zS~??iMTX_sQD$VF0(^#uaTGs=`r6Vr@I@laOlbDjXQ%`80)Xms52>s3ZCZG2-0HI zK7DXn!j)9?s?n*^&|@z!zDrAi<#N0c7ayuiyxLMITaqEX@5-rrRIQfoywM@M6JuIk zAMKO4A(S-Inr*x7ZHT079Z&VAJ!JgP&hl_SuaS8ma+D(6qVWM!&X(-w`|j)HY$&@v zXVLP&bK}m7C#xxhHhRi1n$aIWt*4}?^5%2~;{g_d9d9XwDK=bDf6B%bo}u{YaOsZk z&-R$}@m|$CeU$n2&X8TW?H8`eJ`-lyd0m!|t>hM|{DTy&_MPpg+MP6*M~`O42%O%> z9A5v{(%~VQXv9%Q&KCj0al7^jITb{c6T80gq_WrpvqK6;pHXMRx47rL%m3tFx}!Ie zUL~qkx4m&x?o-sK4YQtGr~_#)*Ilz=-y5@sY>&-e&pr8fl+yNg1n;fW;t}Q@zcX@o z+g)dEJ&wm5KD40?l#vRNha>lM;IuNc(z5!psI+Ia8?{0*O*DP;PHFRN4rNljx}B|^ z6{j|?xnI*J^H|2!ESn5xEvXbg{pIVM^=p)BRAp1t6Caokl|N^sve;YTb@Y$}b#|b~ zMZsr>A2fCQoZ~3FvwW~DSRyMkNmQ0!fnT>kV#RI;$Wvyk$#q>G3 zEqa>^wyqvc@&ivZ-c~W>JGzLQC4jlRHoSc52%VyXQtj zEJKdZ9iJy3-hBAbVMXOJ<;iFb<&v}`X~&d~Db+Q-Y`WL<`mSJ%1aBALNX$q~S4@A= z83QkaqmMHl7hB0c95zVPpL|^I6ks5#pQ@*AU|eu2H!hd;by;p%`i}Gxm2j2p_}4Zy z_rE@_f1Fvg_x^`Bo8RRW@AogQ&gK*GZ|hH?px~n+p+{1_0{gJ*#`{{`nf%F zr4iE+>x*uVos{yeoxMGZv(anW-tvZj=<%+`BhT#OG-EpCZ0KxC+%C^t3%;&+sgXNM zk~?Pq^WGN~!wT+mF2;l2?Q?N41u;)2GT!A+3QgKgUhPSEDUfg^UZ3BswdRHFfcl3v zDXN4>9*6!MKUG=Pi#CNL%s2~NsBUi8{i0OQta-C3I>~R6t_eeuL*l}He0}<+FNLd% zUKBN|);PzT2K3ANGp|~%dat%&=>%31n+?}59=~Wv`eVV{=TOy6DY17}-yU{P9KVrR za-8;f$fev%AD-kMvVHOSR_>wskvq+y&30P@)ciiZZY4AOXck=Kw}ma>YJhH_)J^;~ zy?t%GQG%XrJ+f~7Cl*iKKG7Fr!>cNq&!r&9A(_Q(FaB1zRG?JqIk&a`%TB#GJ^8bW z2Sm9!@`RkuR`xGV%v^mR_nvC#0^J?l3uFBGq~@oy0qMIlxpy8FyDhDBO+_T)%kk|T z8M|+=PVe$$y-9ig>A|NqOt?0owrg)>jX3C4rcZMydxw1vEf+k`Qp=xu^h3!Nw#-}Q zO4LfdF=Fw%qt7uq@=1tQ@LmoJz2zd4bx1k~P?0mX&Fzj(^ zprS6CbJt&Xn9bFWy{~PumuMhjLIyY3^?TL7l znfsoMXo7{h){F}h%&Uc38^UIR;mG87kw3R!pJFR}m z|0tN3%DbL5x^Vl4qj9c^qsv6yhV~81WXxM1ca^;AJlHOwr4jO)b6jp~9Yf_x+>|F5 zwGg%TZ?VtcGviO3A0C~j=%1&j7JGZ{#)X_gvJQrG2W<}G>}8^-qff%MZFLi|5Ot;*Ki;VO2^R@GH{kwbpT-lbJ8_T*q*(P(#Rm)9h zr6-Pe%l2OFlrmiDc{A1HZ(r@1IMdc6H@`XHa?48ST*x-rO(Azf8Uv{V$KypLMMd9B zxh{_`rOUQhwj7S9Te-K=m`Ar8=eN)~-qqZ8r!6UJIx4)%(I<6zta^NJ{=4T-pVL>? zd-3y{%oIw7093rnicgg|~x+s3nt>B&E2Q7);=37ve+#MvCj-v-M>M5%+$~wDRF$!`Eaar*4i!cg{a`Os`itq^>W#r@G6~gg|;&=tP zczDHlM8$Y`8Grx7BuNQBiMv`_i)oxV_50)CZxT$l?(TRo9M03zliQP@+u79y$15r- zisRwK@$qrN2rjqtPVQ!2TuyGxYm=4ZMN!CXGZ4PBHBTF-PvwxUHKv0b5UuOB2v45Y(+0xGX z{7=pD=g7azVQC>|?d@3AB`9*llcm(*kge<`<1$fPQxy&prg}C_mEcpd^g!#?*d98@zP*(oy?f*9Q31js5q@4S3qDI8E?!bMPP$j@2v+PwdIQMj3%`|lkDXf?03HJ>P# znGhf7qOh4cm$?wArhtGDkB|s2pS7g`@A^UiUmt|17_Z2>$NK;CApX>33tKZM8!Jmm z-1^?uFZ{oBcGi4?e1ZUfxI{&S%;3aCg^*9=;}WnEw&LRvwSu4d*7x^+dv^a4Cw`sX zA1=_@>7148f5i!ct2F~yYvt-DY3=Il$Y_SgpS80vLk<;p&dKt3T=+*EVsv+A{7bN0 zll))i`2SE(Ev;Pb{wrSQFRQdz7ZcLSJbi&w*DRE zAe;82qk!zh1JR)|*=a4;V?K#qSL_m_E40w)IO7?2v#iAusf|90)~3?f{jR@%^^dpe|L0r(^40IRt{LiISP-IO ztX&0;1?U~zANw|uYYh4mQ_4!L& zKP9I1LBGVcE{UJ|{3WiR64UyiU*cMq#7}+x64y_OX?@Tyaji?@r#^p)>!-xDKIoUY z)+O;%pTETQQ({^l^h;dplK835U*h^HF|7~!C9ZWz{M6?!as8B-)(8C(*SaKr>hqVl zeo9R1gMNu?T@pX_`Ab|sC8qU3zr?jJiJ$uXC9acOI+)c_^Hod;`%8utq=Mou60TL)aNg8 z{gjy22mKP)x+H$;^Ov}ON=)m6eu-;c5?xkgQ`5(BYLe=*3Ol9YMt|z{U2-Pyx*dR}h zTk=(w4?VE~ZmL!cFk0xpFGKIIr4g1g5#|^EXyR#q0&7FI%^)R#vr$>YQQjrYK+&G{ z$j7H*=rM^4BHR(A4lKF1X>fL30Um0Y(Jn#O-lLi00lQXtm`Gpml<*~`PZwvdVV8EJ5IL(f6*Le@7tUAdrvuHE!MBn2% z>sWo+MirO+A_;LYU?nFoET{Kn^fQbTpIp5vg`;P;s|#>@VNZiiG8?s9F896f!PQ4i*`T|ttrko~t}2z| zRrXHWt&;i5$jVBL2G3ndab~H#?zu#ijV?a^=;&ej%d8(17q!EBcddk+Z=l6`S(guw zI?5mNsUk%a@~PtS4tAHlaK4>TPt*#$=ipO`LMOTv(a{<-i3B z^u@q?QtsFqKlj1d+oXxxIZhiK9%b+W8-zbSFQvF+J5GVR8ElZRQm}8D--0ezD;M5= zwDMGxdlTVebC^y&bwVm}E7hyJJO&RGQEjR=or`)T?KJ&~xP6Q==|;+Ty5{pou-PBn z*Ao<{M=l^czy{2gaIrI6kBqKvPiSpz4O^Pu7Bw4hwCZvNeTx|#2~IHyYnC?{`fXD+ zRoHW5a^f*ysyGs-+m=y}+G8jQbSxE5yBN^u0V^>D*V6`r)SIgD%PY-N=o;2%KpGqQ z=yf<1;mP81yg&C3qQ-a?IECFj{no2uC7{b~rh+6)a$uM^2d2;B>osW9olHqk36l&R zuIbu?W+4QR3?~?g*nGQ2%6O{Xb8)%*D!Pmf_`~}7>q;+>sF}2r%3FPpCNA(yMotO? zcdTrg70Ce3E-xk8hl_YH#VOHr%}M#)oikkzu{-RUw5GDeX(&@W1KjM2IIzj^S#r~3 z#A`vrp;RNUoYXOa+X8p<_Y$w^T0TrUoM(bXgwE!sNLQK=FB*kP%lBv85q^c6Bs~+9 zGUk&@yj;xDiHo%;vn0WXq?CQ%M|{58(aA9P{A^lG__TLaJ~eS%?N~3>NDsFfN z!kU?vVxhZ8k@t;~a6NX3c)a+gfKiV5zOrc2#H%Uqz7zEp!yES;$sC#E#+F!=87~kg z&dV;s#fF;}kq)TK7uFv{*9hZT-vZpGnaaYHu}1l~%tx;Dtch^4owfF~0%rr6aXl@z z`hM-$2s?K%jefZ2r>35dWgN0g&->y>TmYtabeg3z^ik1$2DMk5n91P!@Db0!0~M`7 z8rZ8)ce=f6y0~+)6rX4Ec~iBm@psL&+oiugG!fCoy(UdeOQ{OyA}*HuLmt)0=UN?1 z{BZqMBjTd)M_$9FDD6Ax*cEv(#v^xrzbv{pEK6SOeCB0Jw@uZ_zYAsH;U!iH*OJTJ zy4Zp#J8??bt@rFx(Ir|stVkhyb9>wdV=G%XNps4p52IhDi4hDl zIWj%eDGA5wiN=f-x!aggVc99iUQiKdDRM7s`(CL|(yF7uI!)AvYA)?kypw-7>44C~ zwF|j(oJu6EF|ouO@D4>rc~}N(=4R2grM)MTgD3SUc)z$FqM@N-F*P;aL`K%w(xRHG5UG)=kvcpwl0GnS=KI1z zhWltcos{XBGl@RFtBZBzP1fN});}5zR8(%dy1K4Byq%DcpOcdlyy`RABT7p{!_Les zd;a`+G5?kF<^-wy^78WFf|oCq;v_EUj5Nn}l(>zoOwYqlnkFXnrXU-%kuTyxG0I6v zNtD~R>FVj-dHVFJR-Tb)B&Y7=d+!q058Uxz$Tn__c;i2^ird6;8c5@>%-YRribO@#5~5{_a{jDzRiq)sdZa+9y~a~2sTF90^6hI&{C@n zqNUxtH#3NqlY@y#hL%&Od|}?I@iuElHvZ$wy$6q-Q<4jz?`%t!^Z5LR_n@fj3AvjG z+8$Wcxi2la&)TL2bdc>|uX^R~7&y4A%YODPVHG2DDd z&2sE9Pn9D_j?htE^!@S8ZmO^1ZILrW5#8^?(n4o6H`Yme@L=vfL3?&FF#|z|*XXKc z;k5JtXY-Qvz8b7d+0!o7`6 zP0Ni{Lm|D3t4G<{PfJQl`s>fk&sP;6N$Rv;ZVV?|c_Z*8Bz?;gFQ;+oqf3`BQzuw{ zspHKv*>XVAN3ZPMMCpRAx%s`D3{uV8XxHQ!W?5*UU1+b3)}#_A7WCV1+P$S7wEOmr z?OgT!{{1_hXW^=a%@56V72}@emD$k_y497>-39cklWx+|gocPC$@lN`1YEt!$-**> zQesJde_P^~4tq|8gJ>8W_^@m3=?+XREGMY< z3AFwu+?TPLdSAxz%bO{;ZsiVLy?yBtX`G15`}dQxbs-F0q0DmJD>FzLribf;r=BO< z=ICTML~^EsHm!WHquQ}!2i*OMBGwxcA-$1t2_Q$sgu!m>QPJ9>{nF$~z`in0%BqSuIU!U*q z%+co;bbPA?TfEg|UG{OcPipeV%FNcUKjx=&?d`ML+uIkO7C-p%1+Sf{ak4W@TNCt4 zJNXo~cD~7S=>%D5cz80}K}{g_+hUhw*igga%V1Jq2=f$_lp5iOmAO~6tNfN7yjzNT zonXqb+JpV`lf8}1gXLOqK#;YqYEZt)(boiHDM_o9_VcTJ?A)LC+kRpDjx^=B<>w1J z0&if%Rg1q*$#xlf4k{TLE$EO2_H0xTo*Nr`V4}NVm|$MGqf7T#%{O0>=a+ zQ{TLK6RaAVpn8mp+)53ET299qZUFW03kiW%C>12bNb!ve0UOlu@ z6m;rYh>ksNWo>N_Hz=GwUF`L=%DG>1vPJH}m#<&dK@6+YdiA9q;~YFZ_us4`Rp& z#d)AC_OCKrT-+LvlAZc(U#;KC#?g*++-(wvuDnjrD{=+0_NCP{{4NupNtG?)Ylr;O`A7oIrWy(B^b1&$nOfca)oBR$^t|l6cW;ft6I9p zW%w8$Nk!Ceydx-5rpNeeG#8j((46s#Mcqx}al&SVoO&|gK`s;mJu|hDwfDw4v$O3w z((Kz)uA>8>q~)M_HzMWs@dn!UhsG!eP!KWC$pc9nh#S|<2Q?gfl^Op2{rgvs>@>kz zX&XnB<>lL+|F$1D8RQ4f=xJbGmQl&WXdy@M2Q=4$f;eus7^kIqsOJP87GXR*_S$`S)0G@ReRtGj9tWJZ3+sUkdCBx^Y7*csJLp zEN#w0+qQdpd1)>p2jKi#Ri&0w68skB!GCU~Cfb@vwthic>A8t4ZsXDn>!xVkPw7`+u>DHh7Dh#ETXTxuE8)r#e z__keuD9&>IvuAUhD!*HMO!nx5EXu}OqGDrnAYR#nzPx>CMb#ommPcr^)=WP2+pAI! zheGFmlg@12s9@W$b4;h8qUvZ8 z?$3#rxR3>2?4jOK-K7$+??KB}%+I_SYp2Yr*D7=BKY#Twk>JXt{ z6*}mG7Mpw>G2g&jT>)pQ2zRQ3A?DjNx8&p;U0xUpi9Y6;C*=6{#2^_F5$W!P&~4~k zph$8X&VtaKb>;>sQ$f8RJ&~2Qn7*sCK=@e+pp zem`=z9uzx~u_m?8!C%3Jjo&;rsRk}H?^EB(l`9*4e@qk^JhBbtj$T$xUeUeaBD8~f$OxhoV%^aI^X%gdbwHmcNncoJW<3_X4~fgG`}sc$M+ zzMC@_VW&l*L1&us{@(K=arSVsp^7gdS~uO{l?Am?12lY*6gdO0n~8~xy)JbJ_le*W z8=`QgDIv=io)h_1D+Yi=4=G{Xso-u)hi)Ew1+okX41@)RFi7RKNUa*d*>U{E_EMe^8I}C;4uM<=Ub3fiJR^xGy-JP?aDJ2#1B+6NgW>mIJG$C zznTsE0&lMQ`@STz0B2m7s?Y_4yWM2XIa>!H-xjimXkLrJ$7j1`ZecwdL(hK`JX4K< zKP)+2L^eD;Y}*_wy7;-EB_cXn;TBQQd7MH*I@=@{62TK2q|jA>m3IjD`y{Wf%vTwG z+*WOI;?$`zkh~6{h#+@bt>ecpA~S$E1jsFvk$Cb(a)9myEMIH~e0zL%aB3?<5%|-l zSW(THk4+ulXGSP?667eiY(bjXS>^BF3r-q9K;ymd(S zRi*C_rnm*?zHs2*_t>CQ%9N!8|PLU1F?Gtv&A*1&i2=WU7XR1v>L2-o~ zDGJ_Eb&28p@Q&KrTG~a6>6w{A@ZQQXLdt;EVT8X1psrs3)#b6aNvN((cOovcr|2pSx{P~Z2A=}$MwqRU#&hGuQ>jnkZ z)Pp31{SF;zztQ_IePvo+@gL7EdSq6!`RN7(-X~f3_%xVL-B3fT^YAe+h(?=(P#@w+ zz^Y{-s?AOI8bXeu>E-2>Bx(KieQh+4*`=HG5()$qfvO_`n%cD{9{2u~bd_e$90#rl4&rE6$tV3NkZNMF2ov2=Ci2l9$CtKDCaYRt4q>4JkMA)cph2VlhgEAF!uMNe{PqPe?fHo1r&J-HV z6;&-OBehhB;`Z$xQjHZ!D(d$$1Sk_$^CVvq`!YuNWOuOl?5Ct1%%^DV{RwU(%}BtD z-`+WY=ii8q(MXk-mv^6p_ah(>+`BDirl*lsk0*ynzL)gJs!ca;-faJ6;0cOBOG``K z7nW{w846gx+yg1t)h|R-E3_==p8Zm@Z9M+MWN3c=lvRjnp?zeZ*AO+*HhQdDOG_&v z-uIh+p3=fy}Lg$fK4BwrCz*P>EiBGqMriRAsYeQ!{h~*o} zF!o0PLq27u$7>+id*LjksU{aD1anO)q6g3lq+QqzALk$~>UC}8ijok*;Z#B8I_enw zUzYJ<1WxmUZUL_^XL=!c1(b4~=_^0)4eI0$j%Do}bhCg>Kr(>*-Lu<57_uM;*V^ER z;pxTpz{+?J2GG4qkq>XAkGXw2t;^(sG9-7*BFG@sXw1yaKzI>=s?K#=baZsgH6NR@ zg#h^ZxIq&95#YD0ts-!yCP<=U=RSLNTg*@O=kr=Tw*{L(dvXFz%>!aL~>>N(}tZ4n+8HruXh|^=gCy)bU>O6YROIBXyHv%K z$|g(4!}cGMZ-;DV?tL)M9_$ZRg4ciW;DPstNL}s=oG}o?bMy-YT;896fB9(p0pv2{ zvjK~GPZV}(Rd~-S(nrO_WFOH?vjvdK!OqSof&q;B`n3%Kg(sKE8vFZK!|D#Ru{q3s zYU_Eud0=rR{ymV>U6(uUJ7u>?q(Fwx0q7mZ96me-uBEd*Rq+G9Rh<;;xeO176yTB1 zcUQr)Z`1|{2h-{T0|T>E6C_9fxXDpgTF-*k1CgH2eRYsBRkMVnh+&Y ztT-36+79$^dTve|&RyBrv%nzNzOTFl%;~-GlZDm3i|!XZ`r%oy+fHpGwsIc0{{&gfUf{lOCA)#6V|4}L2}h1K6B&L zjXg<-l$w6yT>1SJ`07@W3dL4zKpnhrmZ;lDb^!q`h+(`E+>DIUy=9)dkiE=}=T|*k zr6xFBQpQMV${=$XhYVH=axm`mJwWTuf!?4zq7}pF^C4;R9!-q`g17`uPMyRTj4cZ&0f?wdAyhy) z!)_3B44H8-(X-&WAOc|}6z;sEI~kfdq_ z)=k4hLl$1K2?+^cc^N2-Lf+EQ(!wT=>HcO24!01t{R^MV8xaIbQz5_2>~8^Hk~?acx`lAWsjk;kExfv+F>`0{S@V9nKW$WpFs z#t139*i?|q3A%Po4Je6G7w}1?5H36*14cNHxSQfi$V}!S3v^icG6;B+UxFKe9u<_{k}?0|ZPe^^vhI{2wkzy>JIhg+0adnR7z#>mLXpwLBsmuesg4|Eb!@QoX< z7QPN4woj41$f9nm#LP>61!ZMc0rc;`ad0R=GN1{z0%!L+*KqD7e+ypwAc1KJZ0Y1q zI=Xbo0R|qFeM|(#9JPyZaxWafW5ei*)Xt~H1Jb!B#Gnz#}LnPP}~b;@O%|bNXt-a3aAt1 zDtHujXhN#1r7Knz$H)4ss*dgs9(4hizfauj{_A{GRZtS6fRq##F4IaQKo+{Twi$!G zyMs>xo2KRN{zxa+pf;HlftX@3MEge^(R>ADf+D>zpkj%y&vuEqyx*8af~jp$Ns!Dv zKl3pY(y*ZG*LfxKAdf&P1*id}Nurk!qDlN@P-veD?j!?7rPU38{5S>#bZgmEWh3`0 zEVKad*D{=(7{~@(H#b19nxUsPHIPx_CVEOVA$eyaMkC58h{A2z`IX-FKbAud9!ry> zKYs!cKmSD%3{UOYUug{SLfyzH_R^(GTSC5Dm=b_paqKOPY(bJ^4CRhq4spmY`fBApYFGFblDXK|$?M^LTTM4nYbF@L17& zRzcv4-0Fua7soh%J0Pk7m>D#++QS`zb>KfhLs7k9)CG~SkhK+>*HXqw`NtDgbs+(K zILZvN)RO~8c}q%4yn#cQgQV0Dup^j1I|1 z61OIf6aZ0nK+scCQSnQBe0F`;;)v90CgkzEpmBhk@z9~;<6Zf>APykGs6#;hH@xS@ zQbE@cblE3O0!QOj0FZt(Qr9H3$(mondi-@R(h$VlKzWwV6=D#V!K2eaU+bJWab=Kq zWn~2=Y|Zf!*%R-IcEKE2^|;@Hug~n#Ov`xERr=ClYk!oaUfaR!mB$0C05_~Dwe;mO zBKAQG_R?EC(0ldR(J&w&zz$eMaQPd_;B3BZMu;7@fQX+MdX#^G>sP+RbMfF6I9nGW zb`g8(>gEQdmRpA_Smh#O{0kwBeE9fr=K-{maP1sDbq3$r(0xK@ZM~IrbZ*D{E!s8R z<-b}D2`O`ou(OVaMi_*AHYgC*SfGr*xL71t@4+RuMa<;6!bZaUwd>d0Y!ZCaAc#cM zyFph_g-^egR40=8Q0!fG_FK6$-UJzcc8t(8%x`o#i?sX3b8?`PyerxuJ(^E*k z)PVT}#TkkalsR|dYowQA4d}WUt5Go zq@mmt&XJxG8~~zDfHDFtwD!6IgewrJ?%?8)^J_)Xd-5}=bSD+AoDpoN!vZCO$bmp@ zYa{qiviioxj`y{}+K)IC zbb-3wM;B?JYuJHZ0KWQ&u&^#@1dosL88}Dae4(C-xYlxR{ZRREKNX!cQF zs4IDYeo%)-p!~(H7s7_X5BB2%A_EZzYwrP~Q+bIJV z0hJs!JW7W#B@Sdn4l6XV&<&`#v!@%MHY6kYY$SP&InFjmDTSp{;wdL z?XdVZ*_#apVuvsk2$Jp{6l4Gmra+ak!va|TEJ#oEz}7czMmj(Xn4ukNcC`EVJ9xkR z*c9Udlrb5%tkN}|46~z_+N@^M_wjY?8n3O{FAs-Li#*p{< z^I6y`rULZ;+#8D!yZSKJv^wCO?7?Sc8J7uNByqZtj$uxSI7hj4!)-2DZ;B+DR+fQ#%(ESP&-La=w9l$ZO0C1eug-|NvSB@9gKYsjp zn!gvMcejoUjao4{JcC=4%66H zljTBQLwqBL9u%WOV1856(z2j(6v#>dqyx|}4UC>$P%yF@8Cz`F82UEP>(>a zjS^X?&M-X%*0%QWkt6bu3v0q2KMV~G3CsgNg`^h{DK~PvNXrK7pViim#(DOI!t8_M zU?vD5Kt<<-9%PGeP(>Sxe`7r*GpvdPVB$1L5j4otf=UU(>>c5&fYT7w(inwf16kpl z4v65TfqENjPYnh#El!og#|Kp%Cf+=d1%qSZ0a;6{KLRcskW>VC`q&ZRE&(Tj7o#-; z4Re?TK=c+^LU3b<4)iuz%SncrKBDK7!9>lR8J+R0!=!T z2JSps{QN@*RLZI=4E{?lj&JT?ybsy$b^R*8ig>U06p*RxY2H9eIt!jI6BPH#CNQ~$ zRqzzanVRVwA|h|_@c{1F5_~j3bBHSR9u@L{8(_!bTJZD-4&)$Rg@ZVJ6zLuV6l>=O zuQHfS5Bq~C7J=SD=U;pSSs%cWG*)S#e+8`?XilCyxnnn+8zb;Cz^F?7YI`5mwa_K)j0SZlYXYozYNHSGEa}yw$llM#D2L#+c zDxpO?u>rII)PfN7U^!SH#HHJQi=%8EhMQ3^bZW6LwEz6(!I~FGj5DGj(Xt((wyO_^ z4}d}_Ru>!@RE=Ik(Tu1C;vH@+66un@i+7r<5UgU5iU-{wyfXw105k|S7vq}qfOo<7 z=L0Mw9*Ng&AfKfX-#+RCNeaqlSi%3GXEEm(6e<9_fk4(^IaJ!AmK*!n@!cssaJU0| z5fmDUztD{5KOm1v7?5jdtEow&J1s;GY(>Bra(7)IWvD~!dP@sY-Uxu1bVDAmqPx3* zvoL9w8X%pyCu9sSpydW%358bVv>Te64}(n(gpz`;B1i`unLzBwhYzDD4~Akl1yyk% z7>Us_pr*Wm3RO~FL8L*8|4KM&I38$2ZW|OKy0US#PBYBh+?*(#9#ueKh_ZlwrJC=M zU<vtgLom3k{8p{IPYJ$=8+-^G>%ASG}HVkLBooG$a6B6)?c`m6cC=f|+$RW^u zJlnwqT&1t&pZLY-5PP(ps^*3o4KVe@s8>{W6qb|xn{@(gG? zff7$_j?NH60#u&H!&M~@q1!lTzt%B0tSo(h&c>sY-RCo-40+=9L;}*Hg83~_4B!J|oH7pV-=D2(avuJnT_uQ#)wCCY;zp6KMjuk&c%Nx`RLumH z#DeM>obN-0Zcj5XG}frnv=If2+H|NvA*MuWB){U@zOpu0lFJSk>$%F;3g!9&1x4fvJ*)fHXHE_NVk8!>~%=s;VcJ8&9eO^{v#wn~N?>k($= z%l8S21C(&|Kq(9OEqOuD%ARIn$G0g^>Ig<_%X>hv>#!~G2Z03;DJs5yi~+uanH?fU zF(1$(5o2BX&LYRoecltZf*!?&AjVi`x{~lFgqhJUFOjlignQ#aVglR8P24;Jet?}& z(`U7ZE4W_8N|FvJ4uYrrEfL%GnFQN&?dHwbU_}nzd%J<5MGV{}bRx}ATgjW9bqAYi z#`gg(LckAdHdi(+Nx`WsNkLxH4(gH%d_v84XvCO>f;W1OG{tvND8%FLX@-n@7I=54 zY7r6%t5-QO!m7>7JG_XH8$2p1svjcp?GEgc0`ODfMj*Eh01iO?qPXMe(W6SCp`nmn z?LAK7|CAQ1PMDo|rweR`K&+LOmEE&zJD|x@90@(*K3FRX%?&SK3dHsU9X{5PzU?>( zxR?UOrghsS2*y=SH*hMbs2m0*#pqlhNvc?yZcLkjqz?5_5T(4p0GJfYR5i0E51@re zgNlxug*d#xvVNy8)Oi965Oo6S<@EeK8#L8ur|a~BMQGr#;Ec(PqIu+;pek3|N8=RWHZ zbqi|DjlMvnU{01`kc%rnrl@TI4|s#0wJLO_+(-#Y`qB`?D&p_9*g!8_7ch}3Xa`Q# z5T?cO1BAiPX)#XiK<`RJ!vIz;555(Z*=qCwfuFj0AQMQyU2x)rnEHl>cH$oJ-cTIX zPFFd2i4Z!^+W?A~Q2H9pK@R|DyycrSF&Y zDbCW(cM>ryaZQDcRi3z@NpKr#K0f7xN1@*nvMZ587Xd(7BAUy0*c1T0iO<)Qq6fAj z&BePx@egrhD)HiWB2yq!NEVKROfhkFFwNNp&ip%)(^CNKUL*PqRIge#R{Xq1e))9J z;O7vz4Y!YI1|~wV@rs6|+XR|sd16t|M_SZ1(6(w{gaHa{T7+T|uh1g-<0x@0EU0k? z5<+SlfYyj2q<|M$s%44wD+q&wIlB2Kkd^Ky4&I2u34~1>k%D&k`1%*pA;OPwi z)fMpmU_p@Jhe9r32N@Koyk|55hNx}E+gt4T6K3F>#b2XMcunKv!N(9ITQ$`LbdAB^ z1Y^;(5Q)~-1P)r&)9*s51j14T6cQ2e;ej8L!9Bbf#QRA{L*EZF1*noC z15|5Y`Bqewsh)f)umI>-)bfZPLr_G`p@N>1Mm74VNe_B^WG=lcSVKvZ93U-JaDy}_ z&Kev(c+-&fjt*ofSQH|QfI5={c0;8AtN;~g5Z*cd#1ZtN=Pgt@9g#llI;^zz{!+j> z==}oF-iOyoQ`##r_ev8fL?X*0`%VR@fC$GzN_QL(Gc!_BntJF12I-5{=)(y?(M5O% z2#YXY-_@lHX_Y`Mka}YfW(0elf$PMIV^Kv(Shx%S4LTDV>gukdQ!~PWM0Fv%p|


$h%z-w@(jSv$6ckR^m9fEdkVObO_lX0UDB7fJ2YRz;zxE#@z-3B5D1+JzF$(dXj~W!gv;!z>GiUUA__s1_OwnP74O+6A)-d#Y#h@A^8xOHp0#B8f9@qk63f~D=h z`lFxP2DNfRV<2*fSl27mA_#0vO*e3;jtj-o5J%bXvBi7I00LAQ2ZkFEPVCu08PYJ);lQx4O?AM$|PDu-YKNFsfu(p-Oy$e3H2?s=VETeslrj#=mWQcGFKTe z0z50=Fhu#*=v!N-L9V1k9GlnYzv>Gw1?;apcaYco${=$#37|7RsMqE}I<~)Aa%I6H zPW*h>EtnW@3;xw!v9f^eoiu|k0O%*%-wX^=&R%}&?daVzg=Z+mfU1_NVU$GLnj)v>ALsoWqV6aR+ZAYyHHDjJ_C>KBTQ z&X5V9Bzo$X;KOLPZy$K% zRP=5RNR=JiVXRRD{o5?on91F0{IJltPa`J+y_9!f}1E zLGN?4#7j`yfPc|ZP@qKiQq2l9nJsiN1QtNQGUwsL#QiUsK_A#dgSe`L(CR7RF{VWd zmO@aBfkF(to)fEDoTEd1P%MG~Ug5L`fR|TEvSc;gP~=8$vmmP?C?4~k%|PXv8hzkQ zw4kXCsmz&krdpsY5S~s+!$R>?z&$j0Gk35af=OfTW2Egh?Lvu zkc5OWYPlLb%FV3;!eN6Gt-gTr|G;r*Ar@TzfQA)k0cubJc*Y;=f;wRb3IP~6EKaT> zYxVjL_y`+lfbLSI{uj_HnY&NG7QrvV{CR*@R>11KZizdV4t6M+(ieqaGm3J}f=h*MQUi&N{D-c?1%J0Mc5 zcz?lfxm>%0QB?#TsJJ2Y!axtExkwB&pQ31u?C%S?O>->j1+x=D2@4d0PM}SWlmhz# z)#RZ^@sW|WWeC205lQgs9PX1 zlmT@(3_<8$tpSE`nP%rs8RD#?fC2%Fc6dW0)6@#E;MEqsK+i%G1Kywrl$z%ZhLk#< z6<+9pbUl6WEYL<`uEXR+;W4B4pdcL(h(!P%S}a-6xw`d0pDG8u;?q$I5g8b0a-`Js z@VY$*nua7!ww%8Q)xCR5` zi^3tE0a}bTrKJfS-ry!6Y@d`yOR$FxXdu7g4H%^p02@&x!!Zr^ohYb?7?!$cqTYAn z#P-lQ+y(`wvm)c51UWh?ouE9zt(CqPpr3hPv*hZM8xk_c(!ptweD5BrLZa!6`hkhJ zE3Why*FmLX0*t`q_Y0kE1qT;28@&&9(g?3|@cGX6gA&V2!`IabklNPZD}YN#)9oaM z!KDR~uia&9O@ifFK3*x>bt*I-n!s;_c%P&461bn1rzYP@qQYr+fJG#@~6)ug4&Rwrk0w$F(j8rF>bcQhk=+E^lLODS%!|*WcGWI@ViOH24`|BR@Y$Wct|2TTne< z@LPC7d@z7A8F+SH6$mE_EF+MgdzB1E<=yCZ7=^YM0B+aNbH`iG&Qw7u+yRdz!uG8DNTHG3)$HD1l}H$AI>imw;Z_fmdTx#z6;Q zqdSOu)HOp*H%(0*2HT+18%mzYkc<7izkLQ>h3WykX?mLg(-DZTb1p;uJ+Q!}!h6Sd zb`0-}+T(y36^@1fg%C%XpE|;&4$BXn@kN}YJy1FhPOVa$PFXRHFFIFfdqMne+;dh zM9m2b?RNP5zdC#KxEj~*|NqWBM2I-1lOaQf3{l21D%YNkz!m zgi0AwWFA6PGL|`o4B;g8d#-ys@9*dD-+n(H?~}dneee6au63M+mN8iFAtG%A%zCo0kbAo;Kb*pth^HO8Uf!AT_tm^h) zge1s<0_z+swvu|m%;fwyFZAA&sZ%R6JFQlLw2#U0Caf%qR|b?&0e{lp-+!8A-ov;y zqWLe~&JU=no(xLnj;vV<8>U%9dnI%+!yZJ2d!f@J%ZC43h0HtT&8ub3Nyw=%TZ)+e z3CKEAN~W#*vL7APWy-V%uvx2Ct$)5cHA1$I8z~f08RqcQ07{VbR*FnuI2sKYNvB{! zYyRq^=OyRgibt?o>voUzTHrWB_mT5{}w`&DKowD%v%B*K%U88gR5K#Tt;KGb9v#MrBjO%C3y|q=xC3?r@c(Xe(`ed7T za6IERi_o5Bq~vKi>UBS{h4bc*-Uq^+Pt7CaW+c-5`sUML7C$eEstzUE{nDMA_;yxB zHR`ZJ4RSl(*skWsb#EXKbr9o-fWD{Y3zftmxeE#XR81nQd?L$JRI(+mY9N{IkPICD zNE~-+sag9~ULPJGAxM0va7g0$ikOwBhD<2=sIgR~O4A2Z0j!Z(+RSB~5H|!xd9XZR zV-rmGYM{+h-(C;Og6fzZ^011gA8XdtIT~ptbS#7Zu?PR}1}fZZFg2Bg#MBL}nJigO z_L%BAkU$Nk zJ~EX8L-g$&B~JhpHEZT~Wax%#jA%_`arji%1*CG9vzukRX!8gi-6dHRobju;_~ z642$9n`V`tKk?z?*mvo zGs)#FTehsyUuBf1ZM$~O(Dd8Fl(I=x9j#cLprY=;p+h|);Q^pRbB7j};nwW4p9ZEB zGP-Lyni}d_45U6CnBT~-%o2Vlpu?GBA4&75GtnfbOen{|ntpo99M^A_TLh+6U4Gy9 z=F^+__4dl*<0KtOX?Kf!^xg}EfU0X1i&!9zoK%*P&!{Fc9e=W|-Uuo-1G{LM0jU`< z<|fJ2aHHE0Jo9)m<@in)J$>ZBGUm?}I^FR&D63uK;|iD&W|t~xxm>%bj^ZpRvpK~V z#z!8sDi()F(YhHaIHTJxO=)7x_qQR+lD+rn1 zv}^SHTe|C~du16o%A3mW35uq?QeHVbm|#e4Bcs=`y9u@7Nb6)@Phdb~)ejX?^00Q@ zI>Q=Vx-!eeimCBbL{1j}MTiho>lMxA(X4(!E!Tk3kKk-Ia(9CZy^)84d9GIZx(QfR zTQ@CclfB9-!{rjC=lZM`&%g>cZOD|IrZkRh+BJ_Sv*X*eZvD4bt}vK#^0p(1D2JmC zt;_6Fv@HQ_pC;aM&zmFxKGSe(E&}Rx^QHs4<;&lp=||tbbyu%k4=~etI5`nv^hhqN zPHiG5k_d^!`j~(z*e?URTQCPb*JMra{d=K0Eseb0PR64FifQ3&F|)kvD0?Yzo!tTl z3Y6pmF-;#P`BG zJ`T<@>Fs(3{e&s3?;2mc>q%3DE1}y5)#^ICjZLLWl7WyXq%72J;IlCbhPgUr`#}1i z*MwA4?R#rHfw07n(4o@23d zRo{R0s#W-$!>oDy=4XFOv}JKT>fI>Unfy*D|5W$WH@(A@oaLbKw#gx^d6Ms9EFbND zMeRUs8G8j+tNTQ&c`dFOlUee(3}ULA@WvPOt0*zyYdH=q;36)W5?@dBi-YU682HAv_C#&K*~bhjy-#Wu=~m5q-3}Etg@wy()dEet*M6AT&FE# zO_ZOnF4IeH$G_1C9hVwz884v_Jq{v(XL+%^VOEjErK;Kn0L$CUUOH5Wk|OU}ldbl6 z9EWbT%zJ5RQr9cnt)MCA4Yl%JgMaVF$KyEobBX}bR~9R#pf4$?4$fwdQ4M8zLINk~ zP0A>e2`=y?(m9~}B9S=+z31=MX&EzLFG`elP}OSHx;Vd47b&?%UqALuB5x~tTKxUdjI!99mVxcb-780Gi8!J->5r#_bpEYC1ySt*JQh$af@Ah z_^2}O>FP+ZNuI))OqG7-DS1~Z7=|(4$=M9;tKOdiz=xV&_|>XzU)&_-SMtr&MhKBb zHW(PJ#6yMfMMw>YI(ch}?K;@oXU8^%>jogGZ2lgdW)?^!#**7>>vlfVbZ0oT&ndySgW^T?hO(l6E`Wh#Vcfxngma9DPc`Y;}VfOg*`B z5EYI&@}A4h{9vsrZ8<>ulfbE7*ekR1Gv}3VvCnX-q%4ftc#$nx*X?9w z8v17$%pu;S`^9|qv0Z=ug?XmF zu$03BdtFG$Um@07dU%iy|QeV2YR}wbe?E16w zqlPv9``)yZS$ncxYh?|3z-pA^tg?@d`}yfM6--ERFIAt82_ zd}Wa9_m2QkYUmz;b<9?E(OA7?m5)oisPh@q2l*qO%ZQ=+>Eeu|-CVb}ffMR@dR50O zO|Xoq)>Aj+kFH*_*lbzX6td&b)3cK&Y-b$=k9uS zH$U-gHdiJ{+;??-toK$$KU7lR>#-U<$*JlDf+6q z5~okot9kP^s@YRTyI#WOvO@WQqJ8s7g}0RH)t1RV@&EK>{yBA5>~3dn9y|E=+cQ5s z(Cz49u5Zey=e~to#`D0q74j@S8>srJA1RwOO-LJgOZg~uQcXj8$aGNwYUrESQ{5j0 za)bXVK+DqaWcYrS^EPlhyK~*w3Foi#h+{1JDNFJPu8reAbMaujQPsRh(*(h;hlUt(!R;JcE&ByZPD_{ z2U7oFxh+!Evs7vR#X|2^RDCq_V||?+n{dCIA{r#QUqk47zHC`SH7>(=#dh;gf48j4;{S{Z25|{cn0_W<(@Lts zE<>cGi&%9XWaYPo9Xwb+%JIm^wd#P(?8z9V6k;){ONU)5o1x>N;Ljt#7b(54i(Dg z>s?juqJ2||3O9TEE%%BDxa!|FlzF<+TW+RZ)M;t)cS50}EOuYbPuq>HxKe#k16Qw7 ztIbLndzFJ=)22ll9_-M6nd5NXq_5-DSIX1?a>%qhtT5ZTWI;B1A0ts-!B#`(`TG+EpwuLA46fO zq=5?&nRgr?s-ZUhq=7ceq>o%6o>h`_2^dU+c<4Zy{u(LoGDH;AUXW7u@=wL(V*ZS0 z1d!xlYuWi{lSAseJ-1~wQ*J$N2(qwe|9SHSm4DBhJPlse0Bf$$RupC{ly`8(d#@g< z^xT_1eR?i{r_^Va#)J$0RGzW`&_qWvaKnEB{azvj4QJ02A=l5GO7KmU31caEbbgk& z)Iyz!s#+>-biQYwn@?XpIyJu~@3TYYM-Q>)Z_0%-@f~OWy!pXE-pyWtZ|o4`YNvXs zF~pSKQbw)nC_!!+b4hYpa3=lK{4v>iAyzPE=TwckeA{!IOt|u4?TyktdfFi+cfK^2 ze<#OORl3Ro2Xy?o_qSQsd1vBD{^W~)#Qa%A03fEOF_&h4Xz4vBoCMtvnOEUtq2y7c zMqk1Es_xC~2+|ouzZN(NO_b2bShJ)pFh)TTb`GYt2AhnRh3mInD|kz)o5XXCA-9lH zNd2zPGrdfR%1!lTWvMJ+yco1~#W?w*#(-QRj@Fqf^|-MHEkS|Ay@C}@t4 znp(o6WthgN@6f8m`sbD$JmzHApr3k4BtUwdZX)Q1=ISR8IL5V_alD><{y{~ETAu{v^_$y$3-5*WG%JAdvXSF zD_Pf!etr8=F1%3Zj1MNY-~edkP$4KiNfV2gEU-)u!v|0~{k{muzkVil97i$oMFGV> ziuEv5b#=Dh{|Vd>Wbye!C)OV>;lcr;u2G#B&8(~w18@t5>E&39i#JD zkhc1nhP7%*%F8+wnt{Mx^)KcJsFrgkep92(rNlDzq28t`}e^>{hYv;A5w91~6o z$R#ZE2OA^c(Xq*^K}UyV^y}BJj-g>cYcA4OrI>#cA&=k;^5C&R&Ltk@5H_&}VZ0W` zT#;Npa6(BE!7tS-Xr)ZbAE{euA=jThd*<;AaJj9mt(tWTrksHwzrI_(dSElrgS?`l z8LgjePz`CI z8Qw`-#-)hv$u6QCe|1g~`ep%Vl8m{E8xU}v2Ch2u*}23VZ}2ubY>TzufloDvig&-e z>WZHHv`Jf{OJ7@0aGmoS@4bV>xpdKK*O((frBtWdKa^aOlt6p*0=$i+7#s5t1;p7% zeNVR}i`7hhQj@Fs8IO?x{BJ`-hW6&J->VZ99!AJl%THnRVLYkGX$pGu}`zn9~)iQ;z0sM#>r{9oO zeV;mJ>uVjBwoCm`ig1k{cYMm)9MS0iY3hVcY-PLoq-a#5=}GAr|hDpTZ?02Qy~ z!s*}Y_oR%2oM{urn*9!x(oI4bPn*fdneli&K1{*bV(M~z^HBY#b9@`+0}@^d(cA8n5e6A#>^=zDZ8hMJ$_$A`J;ZO0X(B>c$#%M zdvn(%nBY`Brl}T~n0xt^%uSc$i$6_CDI}18>EcE8MAlThc=4jJ<4GJRxo{hW^@RBv zq)KUPjV+qUgg@t-76yo}mAyC*!AR9Rai_49wW60=GyeU=~BjR8zK4kRX} z5KP0{%MIqJdLpzQxxvANa0Ylw+A4Hx{Z(O;uPRj+_DcN~>;Y`aPsjqMEkyLteTs&ztZ1O{e(0{^d=BK;v4haS| zO+X}@f zj&6$U+;kab=5qEy!A46YFY`X}i)xu<2cpp|YGPbdp8b9RwPBRo#gbW^DI7XN3YwFD z^3iPdpwF(dGjYc-V(-88Y(fck3l)`amU-#n0T{9>tfEyJ{CG7N-4%!zb6@wKg}uFEQ1ibN^DWnSI(4J1iq=!c5Dlo#mQPcT%=Q zn7s>UG_qO|Ec(lD`pKF${bK$ z+P-fyqxWFU0N@GkCRCEDviQuI35VgTroU>5vMjJ7*>G^q?q8s!$ny%$EV;`v(d;~zQ3080N;+@o9vi71(oJaPMUUsM%PGRb@DC0iio|GV zcAVK_{7KIvJ<)t9nSH6^T;-v|(4x54yLI8qNc%bD{tyM0t zA2rm60IbM) zE~eq)I1F`=El)LFDQjbIiR?U10m5(yb*rxDljYx^sK-OJ7a(0yQ`CM_LzcTOP7Lob zZsu`*Re9eS9S%+yfyo_IO{Z;}j9;wY=otH@;$-02ym1 z3Nbl6RtM1Wje+h$;1J69IM-YCOgkFZ!m&o-k4$aP6e%!f&bmd8Z)+4KC$sj-8J_8XKsO3? zeC6S9ZzU+t+NEhSP`qGwRD?{=k-$K}Y|gg)36GS2V4%%lMAI!0q?u}qE?>SJ``cI@ z>!8z6JV^Cz>~0R&*FJKg;6mUPnQEB_k{k<4#Zff|snK7G)deUq91XdKjj{Nkp!UEo z4$Ffe1#T!~b(Z%(rh2|Cfe<0hPwyZ?t6que>aJTstd?g)LI;E^M#&s+|gT~zeqb8s~15FJ7Q2{XAm zsquoVhE?*JhU8x-O7+w|*9f}48H?*!6RlgyPb0LM1R*1?^oO^_<_;ZNbOc@8H98FY?X615?M@8_B;9 ze6^aJYrs(Xou~+&OBf|{Jn_!R+p7f+Pp{>hYJnXegT5b zS0q(Q&i`8x-0^5QzE#N`5k-pE$Hug&J(MTb@0U$sh=q2JGN#%HHXZ6xA-S%aBr0UMkSLTigbmd+bG zXtTh%x$TB!5I_m7{1=O(=|`_LUb;c6F#3^D#m!Y?1bA0uZ$LY@ZaIAS{hNWEtGP*` z1Brk2Ol-dw#XEz7)f`X6U3gkV^b-83fXM?v?HfZu^wk-!9#J-`m@I2LJ?`DLmV3;D zfmIF^-UAVYfNTIS69?@Idm=F4qIlZ!l8{CS9a=~%(InS1!6_?m+YiIGK zzdTJsSkUa#HVAjuV2&CaFx)LpMx=U@J3xFD$|j6?QfMi^5H$^uC*)XN zf@Q9cPE1lUmDy%gvPM&LP%o8g8!3hl5@Ac&Mba|y+ryccpS>Lu?y}5}LbzqYvz zp*sW-d& za#*Shse&b0U9SA*i*=NOvC{j4vd!6+QXK=G;pI_GfO7WgE0?l32s^f6swp3!fEXY= zMLD30#&8g|l37~(w@=BJJ;KfvES$(i6mE->)Am>j-QNQ8*C|;{(;?7TVi{=HL9=&6 zMX(Qn)ReS_dhwYdLxyx-ZmNag4~V#6S7o~t*t4mHylOfNR&o}83AIEF-CR&kz|WKb zRdeG^xJ$K|ok(cocY$uZVej6q@5XAD4JaY(UtkW^iZlh#cM}k}I6j2Rl2aDoq(bi< zl#>t04$N9Z*|`PgtWr7!4-gXlxE3JQpD;}7YCDCyM+o1fH2&?{x-KfCuGE^gl)a17 zKfS2pMGER5%uq`VZ?P8=DHoP3RN9o164P?oJv z-@dEF#8InaDaKxGZp_p-p#D(EGa;RHvn2D*TqdG5F59YD>h- zRa6&Pu0K*Cb&E!AswIbWgg%SPGN5D)QYnmN?|AEqaTCC151p9A2fw*W)XmiZcemJY zbA@Gi7J{#lmDSAU#E?hUcSH4)mjDD_zmF_{Ynw3O)>Jlxn$X=c98NT$G8Gd+GeQdemj82)vPs=hN&(vC_w3L&vid}))GrK> zRDs#qf>pW2ENdo~bmb~ceXtZYQqF77p{$UWyZQp`ln4L!CBwA=_ zcue0fjeB{EBhZ5rS@GXOsq1(Zqudr+G%58LOqBdWdr<$&Mb+57q0To}Fsz7{l9?r) zS~v)HrcUI?KKvx8sNFY?&IKaPs_;;rCp}?g&1mL#;es#@pilouO@b#|_Pfe^FyK4Y z12aiU_)4)kWMk*Q8W{5fwf`i7B9xDC)pQ7+gKj~UxmD#b9`4nZeth!tYp#GEG= z@du}>{|3t|9pM~epIm1OEF-2u;K8$ZO|%k&L~3Z4^h92grwff3bzxP2Nd?Dbb zIK<5bbsyqV$WcG0jn!X24hLqC1`vHCF5-lxUZ zOrX`0?3ES2qHA}hwzS(7#=&1h<}YD4Caa3Hrv5MIEX*DfpcEKAi?uiojhcJv&F;?2 zA3tN`U)ofP9?E_wd{aESu8P>Iu|a}VICNhiGof`9Dh#1VBT#rRQ(C6LVqNxz_W4Da zo@N@u*Dh73Pj0rLu^2|npN`0|5^ZQ`xF5CNMy0nx%ZP0Y*Uy^rwL70QsTj2qFO0g! z`(Hn4!AS{&7NoiA6K<4kzPo4E*O#Rn;cx@BYN%l{z*YA&=?Xb8J!%BjZ zeLNg-yW!27VF_wfT^-_m7i4w52k^sSYzc0sXgCa}_v4map(c0Uk!-{DA++zHPbWyI{R`-+vfFp(85cQ;*v4qazW<44MCO(65 z86oLRSWDnttepD`Sluavi=9Q^@6bIK=5)?G3v_Nb*ie z;KBbdRP0O;NW=*{z}N=go$&Dr4VU%?4UM)DCi1>kYZ8Hud`SmKg$so%|6(F=bwr0s z!QO>3&Rd4NyT8405j~W$&R`~lQ12ebh38!EjzD-GHeZ@Dg8WU% z=ES9&*PkBt)v9E7AL~=CD?L46UH0rmN0T}3d-om4$ndx|WX3C#8y_NP#U;&;=ryxZ zugIY7PA%J+JQ@`=xx(uM_MgX?{{7FED*x2AKc!!$R(#->ie-~#lt0y3Kl;s!^ZmM7 zeF^#WD`f4zXW#VLvl({+l7=CZFkJ>VUh!kH@U?WRr*BdGlWpDW+k>fRpNguze~2TH z)8TMhtw|jBLZ&C=^YXRp`W04-nGBO~(uIyv6-eBXKuaZk*2Vr=`-$fw09Tp9F`k;5 zYSFMWaa~$iw!$+e5q$@dKd@oo{u07*!kAuXQ^&xeyR3Z90j=(%l3)7HD||QlJ!wfX z&?v!Ln9`Bph(G2#w)6C^K@e3_$FhI_eixr#3#Aac&ZcWuuikqtUKiPB}Y?9py^A8|Tx85oAvk){i-fg*$N0+BDq8iV7(@9d1+x&5b5lFhoGa zB5KocKCz6M^xybgP+;7F@kL?hNOFiiN^O=$ej>(|%kQY1gzlcxBa6knXeiWH(w^lV zsri+t6v=1`+c6b4rVZ!g&`Xmi^l%H|zSKruy?OIKG^XS&cgs0* zK32IRUDQ;XDP`PC9yYD76*T2-ZV95!s2H0x;Za+X59VKwV>lZ%ux zN22)?(=M$P;=^Brxg17}sJRjau6TxId1jE5YvbscS;Z>zO?GxD$KTOo$L!(rUjrv? z$Wmq@j$^i)rKN-AYvPLcCzgD!d(wbJp<-?Vr#E_Q6k%#?uNJG%7nn^&xcK`ZoI+Bq zK}eJK0NRj_^*0vX+fx!oeDP^Pq1K`3_4x*K&hF*JttImidPJJ)fgdAvV(MA^lLQv7 zjnE7^f8gtl@RRRKU!b|qFIKriuT^()!oq*qAvyIAu-;2<7`RuElLhZ*RO7~t>uj=t z{0$2;iX&BMj_sUzOgP==j6VHyxR=+--QMq7OCm5?>#CigXkDLUTI}lVwuyM4X~R(` zO=>(US4O!LDv3le7QSb}GjDBdyCCTnJQ2YX1E zXV@_gmM!RwMgZGk$rbFTg}zf8HfkiH!a8;9#`IIT!J6}v z?uabGLpK1-V4Y1EWgmqddnjOngM(*V9wgf(@kO+W z>4g3@5RnKxV=>Y1Q6J4t79I8P%WZ`CnzD6x5cdyq4)7on3;yuogGIv^&!6w3V6Zg> zTVi%sP^_CtBCik#1m;HMg^qR2T!b!O;=+?e)%io%=0N(cf_}YFQX!9jRP(h_$Y9(jF`Lr#fFyYtRhmDLXt)m^l4g4*eaj++*_i}cq^m9FOlxD~&3IuK)I)lmkitI|D0=50B z+LeS;r*aX3G0^x(qat^-`!*r)qU!@%?XYIUwP|S-5@Wh`EhFOy^%ey{f=bx7KY#mn z?vp{yiWP;@m-C%!swAerQgub!onP9QRQ$?pSFfdB2ljj)j?RT5_9*#5bv&W2f++x9 z2=Ce$?`xA0kPitjs!Qt!soAqslo?0x6h)h|`J8hT#LXp|{PMe*9F}pA!$(jsM-{(y zKVSW==O-oPSklS}$6*}FP>JQqZ1e-PmqzZ7jOwVIdNElMNi^JY0(OK-;H==xK5a(;S+qjD0&w$jC=Up3>1aCi>bK*o`djAVg@UzgYcc)HAvlCFgSBg1Z>-O zui6z3-&_epVMi^b-GmobTXtRN2@?uGmX>_vSf0E#X^2T{Lgx~R?CSZzI3{bTMwxMu z0-ZTcDkyPM!vz2&oK@JqNzen*?Tx@#-?EDNQW0J%9AD<;jn7RGJ6rlCQKPn3?{FOu ziS{#FY_maxM^F_+Ntb<2g6M1r|5en9#80@%kP55&;LE7@dG%^^?gJb@l_T-$Rob@5 z3DR%w+~Z7z)Vbj+#$MRIzEQ)5!hI#J1%>>NJyqF2x#PKb$r2Cx42U1|GCP}}<3OEB zvdSsZyUX}uJ@m<>Ae@%3*x>FE9U-?-nqZ9a59fZ)Mv8_>{G5I&Pa1S~-5~Zh=jxd5 zABZ0~9hrZE@?`H5&`CJ+{uSMYl_fhs&|n{To>&I1ILWr4kY+CR=xC&PIsu_4Fm>SAv17LJ-#Z80 z5>wh`aZdRO=a!+P&0DQbO0wGCOgpe6Q5oS06$5sGGZIF-ld>RMcZ3kP=z58Xk~}!( zZ;oxt5eykXJm$037;QUX|2OtE}kQZO+uqODfJLT1@&Ed2Z?kaXE%jUjd zdC}LqLOput&Ydcm@vQ|&-OlCgSaDx;cT$2na5l@qNzQxWffphUbW#(VGF{^$>(%qU zyd(}6MQY{og6DHO1%7=vGg{Z6DfBKmRV7FoqDx{KGmW;I6W6}Ld*|J^>rE;FIT)R5$pWI?X0WMr z>KIbd&!5wv`xaV-Ckvj_g?w*PNn!NaJOfTz<>-Zb_eS|Z)rtM!b?-R4pB(N%LOKs@ zD=YT#W;?1?5GFw(gPmQ}v5O7ig!|-#+HbqoU)O1@`{hlI!lm=W)2B}@8ZD*efN*|G zg2_^`jug5`a5X15hBfz&LsO}yas)%Ewtza^+Q7g-a-Xy}xo&sG2$3WoBjAa#&1)$3 z%`jNRjUe)DGHB41piQNa&WnU$@P$Rlg`uWgMH%@!r-je9XPsFT&2~FTj`#v!cq^%3dRm0yRz6$M)-gzS zn6`pL$nEL!Y*_4))`^;!G;Fb=o!7p7dr>pw-OiiVxxrbEan(BSmZE;=m!4~fw-B%= z3VH65#fu*=SjKjc?xtWoDC<&ItaHa}_kJDdb~N^mC-$e%DS8lWEv_y{zOwNEXPE@H z#lSV)xOwA7=_)Ml&|>9|z9bHys&;^PFxagL-u%0StrhZ!VIbtHbbVc-k9D=iVaXrEu=-n*(Efk|r!%D8V6={rnM(u{77({WKr_kM9rc_l8m8;VXW!< zLQp$mNy#23Pt;SdjJDdB!ou{aG)-YEI(n>3x^SVdfT=`22w~fWVJA^0?j4;8L^@?yap>Y}n9lZvl=;zKz6e zyzL90l7HPK$<7%WaBUis?A~9p7PugV1e334Wu3B(|C>fgKEE=3TDNb%Nzr2@)-gYu zxOWg*b#ERoJhpFab2%``>pj$={VUg0>ce&&BpqA;G+a+lkF$*z4hmK)7V3j>ZO?uc zvIFJTF8p&4`3J!sTzm2)(Kh~+*ZW-(`)u4e_01r?(A|i+@UKFI>Al@&m>XUMMpPzW zp<`kHzZepO$}XMH%;H^lLD8B{9JvdkZO|IhqXX)MX8o1J{m@?-Ko})LPP!t}HokSM zR`#HEMBi6&Qn%N2&K!4KWa%Z+uwlca3xdv`J^Q(-agQEBHS|J_h(V0%{VDq0ffAJI zLmIIQM#X3r7=BbnW4xkvaQ=|rIh=NKy3IKj|joN3{e!irLCCR>J%NEmFjau0dDUN%b+*L*!1g-l1#@=t6NJ|)a z(vGIh0^fS>*SGPK_UgX8$h?W#ZT5Z$F?|pClk0bx;jn!@jgkd^WXD}lxG4H7Tl6tB@#>pF|3 zoZ`gNK5j(hp8e9zR#FDgKlUvrv*B(@I$d-u@z_zX>K^k`y$sGZ;b_0<+PO~|cO#A_ zTySaJ3}hktdVHIpA26so$xc!`G~ZcFK9e?9t7g>IW0oYoPbYxATx-}|IrH+}yQ9+A zk2RrjUS!5aAJ$pi18Lu|N_~i9jfiNDP80|<3T3UG4CWEr;JIO zj|kC03nl1vetrb|J`dVs=`4SA;Uge&zu>#RBRDm{yccwndm4jsA)9*!xHv%y#m%1C zDNsnLR3rMm-!UTq`v;$FfRV8a&`fX0>!DqidEJ}AOcJRY`77G?3#^9?7lAAFuZ$KFP z;P5?B2=I*M1IPG9xg;JX`IILSX2Knn46Rq=s;*uE)G?3r%l7#AMLc@fAZjoo*{qUa z>Y&QsE@2Y$kM?{2?w!;7y7%c2c~=0qB+{ZNse6M#xR)-1lFPhHnl^mG*w=KWpjt+h z!UF6ua`gzIHat9BmJR>)h_Hd3TMj{{0J|~Qj?FUCI-Plc@{wS&qE6QmU;;RC4?hvz)qd(^k?7DA#vbgLH(gwO7?bq33WoTl45N-pau7of$hu z+nnsD69py21lWE7m5h#c#@iYLY{ew_H?g>%x1 z34;1%38eedF-1f`!D}8iRc+UvWlqR@OM&y!))WfOn+ZZ(MIzxa@>^3zH+Ju%&Le zXE=BQe0Eq8|H`;RqFs7oN_QIaL2xr|jVr5d(4qcDffCU}#N6{i2jHF)5%;*>vq2rn zdLcfh@CtdGyrSHQ9AwP0s>dHj{9%82S|{m`DUpHd)L3Dz*EHW1NyN>AG({Df z%Mfp)eO8dupZB1VrP`hX)^+lb5U18KS1Ww&7vdW^5Ob8Nfk-;D=*yMqf{WoGe9HhK zT>VQpiyj;sPrwU^eWnChlp$8lE%C;_VhzFO5Y%o zSBD8t3HqIs@q|O)w{F=Iij2$ZcXc05 z=vQl#*^YVBMt^xGuo+q=2z3so1f{p8q*t)Dg3H~%HtiX=ql^J@7>S*5pQtu@(W9v! z!-@F`VJgaRAzd=0|K>7Mg0ef^y{~`k@+XeHbjM^v%kI3foYVF#RS&P$T2uZj=E8)e z6(NQzs}N9VWo#_{#9tYfAexy&=9<{>>yoj<{jUh0p*0#4Z#=s{upGwl?NWOBXk5#C z;_$OR)DfLY^{Sgt6Z;MsYDN5wmnat?c-zrOM0SS_?o1QTHW+sj&?I8DjdT@>g>*Dx z_oNM_0c714lJ>#t7)ypbjYv!D10))e@7Gt@S)38=%*shz&@5nF=?+XYkm=lhA+A4# zG6Id4{!oxHTXwYD86O`{joCus6lMA_z_#f+-nLqO-u~lv{*DH+xPAB!dXQf30doY$ zCI{a6^Rh5>Dwy-{^>@g1wN7)}Y=c!4O~J|I^5*uQOyD^SIcX;(X!;PDGHu`fb^k8= zuwD;yKOxZl*HQS)X=p=0SB(Gjjn`vo5}3MP_fSvD)!2oXoEVh+;Ea99`K#&H0<0on zdg{y>i|bQG#D))dWNq0TU-xSPj{;2nhb~ z5z_xu#``mKc0JFL_JRSX6$t_mtb{&HOM3%&kWfGmG{f-~7aByyfleGfqZRvNoJIr!_fc+I%gmK99R6 z-;>^?_@&n!=YM1__a}~b4!L05vgMnJ=P0D6ANzjnnIojm=v^jzX7c2{JP61wV42ON z@}OPPyX=5x0gbH8%s%>lfB*XRxA0}y+m9bVE_t+g5ORgzq_pEUu2^E&6I0Rm+LOgPpDV$FmE8 z-e*lN)EJ17a^D4u2^Q}Cq-Ba{EG#|;(&6QaNLPu#a`z;X)T$T+You zPatYV;V=3BI7tDxH*EJ88sV~A*C0;%X&m+hJ?~c?(?K3g_jvqQ%sF|j$CYYWQ~yHU>nUmHPGhNOZ9K<^3JxVO#y1~%6Hl{ zB5mP3_3z}Uz>R+MuF7gF${E*Aw%413s^FFHbb7={qi*WolQKJP^o#OiguJ}kJ!#c? z{hF>wXxkE zd&soBc3j$_m+C02w|zabaJJ9AGS;%Uc$tqYUAn(?EcY0mwxpA~5}`KT=7ijHJf$2P zT=dst^(yy~y-%d(hC4I%pQq2e>6Tk-*J()6o_|VCoG6nW5f<`N9hmjDW1~jSgCNDm zX~+uQFI4{M_$|PqjdIQ*w`8UIRDjl+Z8Wc(yp?<~acW44<5iMUJ~69f zN9TGgvtN?QLh^21+qNJ)?CbRke}rp7^=~T9l4%r!>#~IAw^n`kv>; ztnO|}M~)gPhfIF0)-mTDYh8LQH7hSd*%Ib>No5vbYOBPAWghLG(7k-Jjm@4dX6l!_ z<`~+1DjdNO_n6e#+EIOPaYQl-Drvx;|*U^hCosHiw$W zHJPLPB-m!8HY_~-)Yjt_7Wuc&wYu6s-q#L19(#J5&k?v%2K(&~v$W~+vbwx)z1n8W zea9|i_uL+v(xa{4*S4qB>Aw@YdsMZ$Z!9vN4{K(!eAqX+R5AZ+xXJR-_uv;@@@Bos zgcl9fckQD)Mb0m%A3jS@Ga{{OuuihxrO)?Es~@9mvHjlo@ugGhg`qC_{;}syRy?x4 zOmfrQ$)853?<(&ecCpz!_RZ6cBGlb%hHG5Z_YaR6?)2tyoNGi%#lo#&cERc>ly?`c z94ZEsWDe3ZwyA1jGJliq+U?V9zT|z@E}WoD8*+O1$lf{%8*Tk-@u`t9vraMX&HRk! zp3_~tbwI|cg(00X?ya8CGIv6%fbtb3{lvrWhoa_R_Fi^pxXr`cx>*Rd{T99;z0`Ze zp7Pdv!&>_dn_pesbBFJHjEZXY4bmtuhpE>eQ?KT zu+zgkiyqc1uWddc{A*10sg@trTe-e09amLbA#*Gryx-y9rnSQXM^)^VNzrZnb_c{p z9B*trl_A9v;Iyq>`LQ|!Ml#6B^szdb*$xDKUW*4Cl3rR zx;I<7tgT0ISlivYW$Llj#N%w3X8hs~0~=IvjSqWdV)CV-`X%$Z*D|`zj*aYTynkbP ze`AlGwwbz(9NN13q>x7~9;B`A^l*~Bqr>T5*%f>0gx&6Dcbg^|ry}h-K6IZ{-mmeF z*gHkNWK7D*2zU#HLN98EdEb$>ZkwpX-DrCvb;7f_R~0=x%k*jNXKtM~ zsOKT|OI=-8FHH5mn(^o1Uko^M_IzIe# zZO9JuK_ks96=m0ay@DZqOn*gOSzt5aFIDg4Unsvls&c%`$iDLp zR+q`n++dnmKik0X!`Azo2Fv$DZEPHK&lCqa6h&E8rH%Px|J7kN{SMlm9x`%KQ*{_Y z3!Ku%*i5v2*zU-h!L5`T%?781`1Li}xa0mV-5o|u3;+7$*Ly#&e{TG2t-Ra1I_#Wj zV&6$S!}j`}uBp!F{q>#ws@rxq&h23{_xXesRkQ=|JB^%Uv%Gm>Oi9*+kxTc<4{1$L zMWo&Mce73R8Na?H*gpGIvAp)yOp|NF(;_pXH~BrZ{k-Gl)L&22i(XAj+}QHCe8v6w zi3lGf+v_narVl=SG;M8Br{)K2yU+Y(yTgCDXW^UD3QE12x8~VJ%sL`NwHYw1e^lQ| GtNuS-7i$Or literal 0 HcmV?d00001 diff --git a/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/128.png b/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/128.png new file mode 100644 index 0000000000000000000000000000000000000000..1eab4a644ae82ce9f26f7f7140e6d8978aec3969 GIT binary patch literal 23576 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 literal 0 HcmV?d00001 diff --git a/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/16.png b/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/16.png new file mode 100644 index 0000000000000000000000000000000000000000..d8868afbe4f6d09fa2677e1398f3d0783a86462a GIT binary patch literal 19883 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 literal 0 HcmV?d00001 diff --git a/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/32.png b/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/32.png new file mode 100644 index 0000000000000000000000000000000000000000..36340595268870844caa4b184fa00274041d8abf GIT binary patch literal 20361 zcmeI43p7++`@oNQ-J&FyRBBu*$(V~V%*43ga%bcc)tH;fWu}=4=}i=&dXrQ{M1@dt zDJ3blQVG$k8&V;a@J7;2{%7b&z52fSzHfd1|N5^r)*8>)`+1&y_HRG?InO@UI&n@8 zR??CSB>@1Cwy`#M0VRz05f=r2bHc*jfkJ|1?a2WEZ8hFUC^X9`7yu+48D?fqPJT=- zljFx^!EDUTU@SJ1#t5JSK?$A>dT+KkP-&l9iCi2rKKHfhQE#D$D4|Mjg1)VIgdAWTw%;@xFt!wmNK0Ps z3S@`?8|%rwU4RoD*tlZHi+eys+J~dtgn)I2ROE#+5&+nIYOFcnw;DLpw04gL;DH3> zXtuRD;2|79+PKrKfx?SGWuwgOVnAF9Ksv`puLMN40UK|ssf7YjM*%s@A$Nnfs|sX# zH9=BGiw(-uaTby5#NnI8+}*X8Xf)a=u9Cx&W|2~iwX3%tRYFH%<~|+10{|Hb^5ATT z$3h$D6f`zs_m|Gu0DpZ=bX?Wfx9e+9Q$EWW0G@Hfo4;xyN)|?}7L5q}dScmth~N6z z8Cyp8(u(IAUjQ;*J$4^v@z_{o9w>YCsHeO8;hI|0b)?(w+rQGQH&nWh1$+!Q_%b^3 z^y+iR|Z=SMm z7@egWXL@ku^<^#Nl;@pVpM?pXx$*sXUGq^4;U1wqIQFX!Hk_Dr*thz3Q-Av2xC;wh6k{D3?7%n47io zkRf{(F2>vPa>DAH0D9+_-B+woha!ue4gZw7U{-coZ()?>iP?84TvSTDLPqLc_W6Z| z`>>h4ck}(`K8`1t)gdciE)dhH4M1w&s4*?l*OEvi*B7atk;=cZuyE}e;qtfBvsyiM**G)win0TG}1TVz`-TY_BFUTNi~VyqXcCEj{W@h=v` z9nylWx*6S_)?L%B)4ix$WoVsbny>NZQy*NPYq;Frv_`2%rU%m_N=-(axSdRK={TK9 zoTnS_WqLNV)a9IW%<1`p=t5ios>Y@6QdymdN%5?M4EYq_4I;TYFJqE{m)X*hh(6S={a&sQ$W#@Lmi zsNVj0N0N?s+l(y}Wo$~`|v&M~Q5v%-6Y6+OQ3x3pf@N3IJ?L7aiMVaO1A=iR(29ndSu8&B!W9B^BTG9Jy@pi-*aV+pt&WM$ihiHkEx@enJ z;{t>0x|^8>%80tQx6WohHO6LHq{F17XHf}d%?2l1E&s5byN_|hyGy+*@J8T`lgmYy zt1P#*e{DaI;$mNxy)t{X-D8txy}O*KS4K=-EhranmRytvUT)Jv=Mbm=9k zO>wtZw&y_Um7r)ZoM)DYo0m_C<=M2e%kGz-Ezg;kQ|6H9ke_~^UQ_tC^j2x^MWw=? zhoWr-rGcf}NpxRD`o-%7H3NwiiQ6x4|6|NhOgiS#oP1?3<#5hqs) z*WVp^g`j&h$uvFG=_;LHzp|E*=9+rXimpg6Lzz#45V%m@2!5m+i?y1AMTXWOwsdG=W(d^@gk^Y@$!X3>V zBk31<)evMvg8SJAg%`6z@}vSi?-;5Z!6E zLv5Tg9yZ<#RtRWXy?n3V(V3t{CYBX>U!q)QaesX!qSl`&qFb3!70%x*^T&W}Hs* zPv%F=pQO@Jj<|F1HM*LFJnc;ekM%BNE*ss@rg`3J^+@xu39wy^)7C7&1_fO0{L()h z^E~bO?5=H!$%vaitgV@i)$gKn6mqp?weUxb?P4AD5B+5#qj_3k-?E|kA;fuGmT2b)@3c6;gs>foMZ~ z1!~v9gaeyR^Hl5;OX;uaFKEH_XQM!dBP=2O|xGTy)+(Z ziWSqT?zC$Sakp_t^3zu}^xrAD-F86l*x>Q;e%Wf-X9r8OcH6qcl|5cmoY{mcHrTwi zO|nb=w^h5>ik>mJw5L=vu+=fY-#w`yykdEny?^BTs@prOE(rPe&32RQiQeAV{-EE- z(F5Vxd4cq4ciJL?eB7P_xi-Zl`5g~6+CzI5#V~JQJKBEed~SYi8KsHVLVNY%2|Rt> zoFjQjFOud2Nk4jgUb=Jb`Tmjj7Hx>62937zU8QDaC$AY?xkBOD*%& z1JA8%hKaWrk6-P)mq;IK+Lv}XZF{)($M%hFCrY>Vk{dfW&1DW=mf=2Yu^8XmyZXxN zM(?3Z+@a#Op84*V+*8isHw3=szBc%pc+at}{8)KPL7BII*+5vug>AIaSBuj18av)q zY<;URe!n#xXV_6O9L5~IK04B=&=JmFG1gdL{wQR{z}YK~S2nye?l*a4))CWcwC-#B z!@>3)n<_&xhMU{1Mn$7{HGNGOiJxosTl~@Z`rXpI`_lCZINWn1_Sma0Ic80irse61 zUr&6kFHlrKgnwx5d(haN+?<&-l$3Za@b|2-*Oh%r=h|*m-&k_>R;UhY{kyfF`>R6Q zLzD+kcFuL|{vEbMW8Cj!(TMBaoX?3$iHYMP!pXy5$U5*g05EZ95Iwja_I7wOGfF|5PbRM#*E zB00>TjH9R;5hM*l@t}i1DwhNc4Gak4;6n{nC;Z~U@4RM&Dr`c9>u;!P!W$6gVebSp zW3s6*U2QC!jMCAE>EX0dx;T9_Mhk{UqOb@g4uQhJktjS8hex7d-+ojHlHfN3Hid?F zF}M6S9Qc=^svnoj!XpqNAtBl!I@(M&9f88(a0nzCfkwkY4LE0O5SJ7R58|jzI)VI{ zQ#oWdgT-YqgJ3+rBwywhuA!h zg&i<)X%sSo8bA%C25~u{9co595UIWWlCZAgERO>WJXI4aVv|8aG`RT zTi9f(MKE|JYBOCthwDQ94wnyCp!$rCSkO^s=Ifg3{v}2(gZ7IH;r0B|j2g=Lg&D7B z(rhB8CYRa(q>eXZQ%PJVo5*Aa5GKR*`#}smhk@a#2h*@8kr_d})7eS`#Lq_GL+86c zsyT^EC4ja#I8qmm#u3p-ybcnN!mL7~@krz}CzF~#`LGAK5rxDh&EN%t#_Qmwd-*~4 zXFp5|gSM3~FW)t%`Jj;TG$uQc#3e8SNpvcL6+|~cd~cklIT62jn;;IC6hx-lm=nMT zZ3csa*QH`~s8~HR9P6uxfnzYfR5;039}Oo_kTe{Qrl;#mBTeA2x1VnQH`nG&@)q6} z0$opL8w!&Qx}ORqJPn1R>0!u7I2lc*!BHr1NPQfN1gGGzC|_MF8ciWlpn;}2``bW{ zYzCMNNdePzcypnEgJJctdN^HuU(hiYoQp074fmyDv2Yp=+_vPdd!KD9b=D!{z#E%;Ek2cDrs|l@NJK->C+z=9*YC;Di zguh)p>Gwy&p9e5N@NN+SjQ_$?a7e-b*+PI(jiS-eI5-K524hi=hev9eq6=j6Oymn%}>>c0b%F1Zy{y0+~U+m1GDL?El%E z|Kq&MU%fK9tb)A>RSc7N${(v1sMz{@mBXu(!E(=hGCnPNyNY+C{pUpuSeJlD4*WFk zP?^bZO8v?Fhu!$iJ6KpkmFB-z_)T8iH1nCfGyl`_a&nXz+xqaHjzXLpv~Xfe%ANkRk;CMCaPEzN*{$nA`#$+caoa0o!-_no!ux#d|`r=1h^m)d`ST=zA!;b0$dOY zzN7#bUzi{z0WOFHUs8aJFHDe<02f4pFDbyq7bZwafD0nQmlWXQ3lpRyzy*=uOA2uD zg$Ys;;DSi-B?Y+n!UQP^a6u&ak^)?OVS?wq zE{FtQQh6hZ?ZW$ zHaOF|WvL8YR_}eO=7Fe`{_{tbR^G8N%FCLkao%sOq0%(~ze*)-q9l zDTbxXOT5+FBaD%|Mh{^yR)$q9NppztI-7mE?HnCT z3JWWThK9;_6yBovvRE?tt)H$vwP2ThxtJui6Nc2&tLyGo_xJZ-dYNQpWffIJ%FfPy z`1rBvlK5-zS+a2=@pZfEx;`H0MOd83$q`GuWxhP|W0L)s7NL?ycN!Y(*VhWQ2kC(? zi~wJtq?P(1i&)~Jb?45VZrx|fbHo((Mjt$QupJ1iNWXW_wXv~rNRq{7SNHTR3#%aL zML6Wt^o=NVKN=3J;06c35OvCL71>p_6A+mtgjr}G1Z26`sLQStH`ZTlnd#Ims)0bP zNU)X@fu%X99bUr`HXsmOJUu;SfH?DmJ>Ck&>av-cnMirBESGtEud{_0FI{@Fb<^xw z8LgX2Hkm3^zJHIkJXr(-e0+S~ym`|t`q#(b#djKWIGpv@*Lit4o*wQ!iPoSJO(KvCFJ;?wwOSnU%F{)22-?`}*oar5Y99G1{#4y+Br8Zc4dMb5wb$R>vY%f@)t*w27f^P2Y zbX1qE>KiF8FRvdN(RFlmB)Yj}I%)VZnROeH8BQ9>X=&6gTSkU`-tIWwvVZ>^DN$js zvqvsp##7Krqobp>zNlG|Kx%60o54YP$9r#}laSI7-sSiHq_uX^_-_V6*MMTg;->zH cu|XjqNu4lj8~Elt-WyG9EF8=WOgHZQA5{tMZ~y=R literal 0 HcmV?d00001 diff --git a/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/512-1.png b/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/512-1.png new file mode 100644 index 0000000000000000000000000000000000000000..dcca52bcb766c40cc7ae67774b5b19b92c4af9e4 GIT binary patch literal 38712 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 literal 0 HcmV?d00001 diff --git a/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/512.png b/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/512.png new file mode 100644 index 0000000000000000000000000000000000000000..dcca52bcb766c40cc7ae67774b5b19b92c4af9e4 GIT binary patch literal 38712 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 literal 0 HcmV?d00001 diff --git a/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/64.png b/Mini Stats/Supporting Files/Assets.xcassets/AppIcon.appiconset/64.png new file mode 100644 index 0000000000000000000000000000000000000000..9592bff9e780c48a685493833e3b3475d89aaf3c GIT binary patch literal 21200 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 Tg!BxW1i;bO)uzzefAhZqVb6D+ literal 0 HcmV?d00001 diff --git a/Mini Stats/Supporting Files/Base.lproj/Main.storyboard b/Mini Stats/Supporting Files/Base.lproj/Main.storyboard new file mode 100755 index 00000000..6a3c2bcc --- /dev/null +++ b/Mini Stats/Supporting Files/Base.lproj/Main.storyboard @@ -0,0 +1,684 @@ + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + Default + + + + + + + Left to Right + + + + + + + Right to Left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Mini Stats/Supporting Files/Info.plist b/Mini Stats/Supporting Files/Info.plist new file mode 100755 index 00000000..d1fea60f --- /dev/null +++ b/Mini Stats/Supporting Files/Info.plist @@ -0,0 +1,36 @@ + + + + + LSUIElement + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + + diff --git a/Mini Stats/Supporting Files/Mini_Stats.entitlements b/Mini Stats/Supporting Files/Mini_Stats.entitlements new file mode 100755 index 00000000..f2ef3ae0 --- /dev/null +++ b/Mini Stats/Supporting Files/Mini_Stats.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/Mini Stats/libs/Extensions.swift b/Mini Stats/libs/Extensions.swift new file mode 100755 index 00000000..a2d75924 --- /dev/null +++ b/Mini Stats/libs/Extensions.swift @@ -0,0 +1,34 @@ +// +// Extensions.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 29/05/2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Foundation +import Cocoa + +extension Float { + func roundTo(decimalPlaces: Int) -> String { + return NSString(format: "%.\(decimalPlaces)f" as NSString, self) as String + } + + func usageColor() -> NSColor { + switch self { + case 0.6...0.8: + return NSColor.orange + case 0.8...1: + return NSColor.red + default: + return NSColor.green + } + } +} + +public enum Unit : Double { + case byte = 1 + case kilobyte = 1024 + case megabyte = 1048576 + case gigabyte = 1073741824 +} diff --git a/Mini Stats/libs/NilLoadable.swift b/Mini Stats/libs/NilLoadable.swift new file mode 100755 index 00000000..8fa3c854 --- /dev/null +++ b/Mini Stats/libs/NilLoadable.swift @@ -0,0 +1,30 @@ +// +// NilLoadable.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 29/05/2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Cocoa + +protocol NibLoadable { + static var nibName: String? { get } + static func createFromNib(in bundle: Bundle) -> Self? +} + +extension NibLoadable where Self: NSView { + + static var nibName: String? { + return String(describing: Self.self) + } + + static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? { + guard let nibName = nibName else { return nil } + var topLevelArray: NSArray? = nil + bundle.loadNibNamed(NSNib.Name(nibName), owner: self, topLevelObjects: &topLevelArray) + guard let results = topLevelArray else { return nil } + let views = Array(results).filter { $0 is Self } + return views.last as? Self + } +} diff --git a/Mini Stats/libs/Observable.swift b/Mini Stats/libs/Observable.swift new file mode 100755 index 00000000..3e3843f8 --- /dev/null +++ b/Mini Stats/libs/Observable.swift @@ -0,0 +1,54 @@ +// +// Observable.swift +// Mini Stats +// +// Created by Serhiy Mytrovtsiy on 29/05/2019. +// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved. +// + +import Foundation + +protocol ObservableProtocol { + associatedtype T + var value: T { get set } + func subscribe(observer: AnyObject, block: @escaping (_ newValue: T, _ oldValue: T) -> ()) + func unsubscribe(observer: AnyObject) +} + +public final class Observable: ObservableProtocol { + typealias ObserverBlock = (_ newValue: T, _ oldValue: T) -> () + typealias ObserversEntry = (observer: AnyObject, block: ObserverBlock) + private var observers: Array + + init(_ value: T) { + self.value = value + observers = [] + } + + var value: T { + didSet { + observers.forEach { (entry: ObserversEntry) in + let (_, block) = entry + block(value, oldValue) + } + } + } + + func subscribe(observer: AnyObject, block: @escaping ObserverBlock) { + let entry: ObserversEntry = (observer: observer, block: block) + observers.append(entry) + } + + func unsubscribe(observer: AnyObject) { + let filtered = observers.filter { entry in + let (owner, _) = entry + return owner !== observer + } + + observers = filtered + } +} + +func <<(observable: Observable, value: T) { + observable.value = value +}