diff --git a/Info.plist b/Info.plist index 588b107c..428ded21 100644 --- a/Info.plist +++ b/Info.plist @@ -22,6 +22,8 @@ #VERSION# FeedbackToken #FEEDBACK_TOKEN# + AppCenterSecret + #APPCENTER_SECRET# LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) LSUIElement diff --git a/Podfile b/Podfile index aa542b0b..bc3bda11 100644 --- a/Podfile +++ b/Podfile @@ -7,4 +7,5 @@ target 'alt-tab-macos' do pod 'ShortcutRecorder', :git => 'https://github.com/Kentzo/ShortcutRecorder.git', :commit => 'f718220854575bad86fa89dd2bb3decd0b14b2b0' pod 'SwiftyMarkdown', '1.1.0' pod 'Preferences', '1.0.1' + pod 'AppCenter/Crashes', '3.3.1' end diff --git a/Podfile.lock b/Podfile.lock index 17c41bb6..71e047f7 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,4 +1,7 @@ PODS: + - AppCenter/Core (3.3.1) + - AppCenter/Crashes (3.3.1): + - AppCenter/Core - LetsMove (1.24) - Preferences (1.0.1) - ShortcutRecorder (3.1) @@ -6,6 +9,7 @@ PODS: - SwiftyMarkdown (1.1.0) DEPENDENCIES: + - AppCenter/Crashes (= 3.3.1) - LetsMove (from `https://github.com/lwouis/LetsMove.git`, commit `7abf4daed1a25218f2b52f2dfd190aee5a50071c`) - Preferences (= 1.0.1) - ShortcutRecorder (from `https://github.com/Kentzo/ShortcutRecorder.git`, commit `f718220854575bad86fa89dd2bb3decd0b14b2b0`) @@ -14,6 +18,7 @@ DEPENDENCIES: SPEC REPOS: trunk: + - AppCenter - Preferences - SwiftyMarkdown @@ -36,12 +41,13 @@ CHECKOUT OPTIONS: :git: https://github.com/Kentzo/ShortcutRecorder.git SPEC CHECKSUMS: + AppCenter: 76ecf7e959a68e36b0fd314e8dc5897660214423 LetsMove: fefe56bc7bc7fb7d37049e28a14f297961229fc5 Preferences: a5afbe0ae3e6bd886328b1960f4998e65d58f2c4 ShortcutRecorder: fdf620aca34101b0cba3b10fca815e0459254189 Sparkle: ea073ba9c69cee3ebaab8685ba1e732e14d249f7 SwiftyMarkdown: 033abc9dad9a37903f81aec5188cade436f40520 -PODFILE CHECKSUM: ccd8822c0e64188b9aaf554188c72ef13a7c81f4 +PODFILE CHECKSUM: 356279aa09d4eac74abe0d828422386fe7345766 COCOAPODS: 1.9.1 diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/LICENSE b/Pods/AppCenter/AppCenter-SDK-Apple/LICENSE new file mode 100644 index 00000000..6a664157 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/LICENSE @@ -0,0 +1,25 @@ +Visual Studio App Center SDK for Apple platforms + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/AppCenter b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/AppCenter new file mode 120000 index 00000000..c6e14dc8 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/AppCenter @@ -0,0 +1 @@ +Versions/Current/AppCenter \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Headers b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Headers new file mode 120000 index 00000000..a177d2a6 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Modules b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Modules new file mode 120000 index 00000000..5736f318 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Modules @@ -0,0 +1 @@ +Versions/Current/Modules \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/PrivateHeaders b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/PrivateHeaders new file mode 120000 index 00000000..d8e56452 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/PrivateHeaders @@ -0,0 +1 @@ +Versions/Current/PrivateHeaders \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Resources b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Resources new file mode 120000 index 00000000..953ee36f --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/AppCenter b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/AppCenter new file mode 100644 index 00000000..4e7200a2 Binary files /dev/null and b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/AppCenter differ diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/AppCenter.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/AppCenter.h new file mode 100644 index 00000000..6ff9d888 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/AppCenter.h @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +#import "MSAbstractLog.h" +#import "MSAppCenter.h" +#import "MSAppCenterErrors.h" +#import "MSChannelGroupProtocol.h" +#import "MSChannelProtocol.h" +#import "MSConstants.h" +#import "MSCustomProperties.h" +#import "MSDevice.h" +#import "MSEnable.h" +#import "MSLog.h" +#import "MSLogWithProperties.h" +#import "MSLogger.h" +#import "MSService.h" +#import "MSServiceAbstract.h" +#import "MSWrapperLogger.h" +#import "MSWrapperSdk.h" diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAbstractLog.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAbstractLog.h new file mode 100644 index 00000000..76d02685 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAbstractLog.h @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_ABSTRACT_LOG_H +#define MS_ABSTRACT_LOG_H + +#import + +@interface MSAbstractLog : NSObject + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAppCenter.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAppCenter.h new file mode 100644 index 00000000..c6ceb9ca --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAppCenter.h @@ -0,0 +1,223 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +#import "MSConstants.h" + +@class MSWrapperSdk; + +#if !TARGET_OS_TV +@class MSCustomProperties; +#endif + +@interface MSAppCenter : NSObject + +/** + * Returns the singleton instance of MSAppCenter. + */ ++ (instancetype)sharedInstance; + +/** + * Configure the SDK with an application secret. + * + * @param appSecret A unique and secret key used to identify the application. + * + * @discussion This may be called only once per application process lifetime. + */ ++ (void)configureWithAppSecret:(NSString *)appSecret; + +/** + * Configure the SDK. + * + * @discussion This may be called only once per application process lifetime. + */ ++ (void)configure; + +/** + * Configure the SDK with an application secret and an array of services to start. + * + * @param appSecret A unique and secret key used to identify the application. + * @param services Array of services to start. + * + * @discussion This may be called only once per application process lifetime. + */ ++ (void)start:(NSString *)appSecret withServices:(NSArray *)services; + +/** + * Start the SDK with an array of services. + * + * @param services Array of services to start. + * + * @discussion This may be called only once per application process lifetime. + */ ++ (void)startWithServices:(NSArray *)services; + +/** + * Start a service. + * + * @param service A service to start. + * + * @discussion This may be called only once per service per application process lifetime. + */ ++ (void)startService:(Class)service; + +/** + * Configure the SDK with an array of services to start from a library. This will not start the service at application level, it will enable + * the service only for the library. + * + * @param services Array of services to start. + */ ++ (void)startFromLibraryWithServices:(NSArray *)services; + +/** + * Check whether the SDK has already been configured or not. + * + * @return YES if configured, NO otherwise. + */ ++ (BOOL)isConfigured; + +/** + * Check whether app is running in App Center Test Cloud. + * + * @return true if running in App Center Test Cloud, false otherwise. + */ ++ (BOOL)isRunningInAppCenterTestCloud; + +/** + * Change the base URL (schema + authority + port only) used to communicate with the backend. + * + * @param logUrl Base URL to use for backend communication. + */ ++ (void)setLogUrl:(NSString *)logUrl; + +/** + * Enable or disable the SDK as a whole. In addition to AppCenter resources, it will also enable or disable all registered services. + * The state is persisted in the device's storage across application launches. + * + * @param isEnabled YES to enable, NO to disable. + * + * @see isEnabled + */ ++ (void)setEnabled:(BOOL)isEnabled; + +/** + * Check whether the SDK is enabled or not as a whole. + * + * @return YES if enabled, NO otherwise. + * + * @see setEnabled: + */ ++ (BOOL)isEnabled; + +/** + * Get log level. + * + * @return Log level. + */ ++ (MSLogLevel)logLevel; + +/** + * Set log level. + * + * @param logLevel The log level. + */ ++ (void)setLogLevel:(MSLogLevel)logLevel; + +/** + * Set log level handler. + * + * @param logHandler Handler. + */ ++ (void)setLogHandler:(MSLogHandler)logHandler; + +/** + * Set wrapper SDK information to use when building device properties. This is intended in case you are building a SDK that uses the App + * Center SDK under the hood, e.g. our Xamarin SDK or ReactNative SDk. + * + * @param wrapperSdk Wrapper SDK information. + */ ++ (void)setWrapperSdk:(MSWrapperSdk *)wrapperSdk; + +#if !TARGET_OS_TV +/** + * Set the custom properties. + * + * @param customProperties Custom properties object. + */ ++ (void)setCustomProperties:(MSCustomProperties *)customProperties; +#endif + +/** + * Check whether the application delegate forwarder is enabled or not. + * + * @return YES if enabled, NO otherwise. + * + * @discussion The application delegate forwarder forwards messages that target your application delegate methods via swizzling to the SDK. + * It simplifies the SDK integration but may not be suitable to any situations. For + * instance it should be disabled if you or one of your third party SDK is doing message forwarding on the application delegate. Message + * forwarding usually implies the implementation of @see NSObject#forwardingTargetForSelector: or @see NSObject#forwardInvocation: methods. + * To disable the application delegate forwarder just add the `AppCenterAppDelegateForwarderEnabled` tag to your Info .plist file and set it + * to `0`. Then you will have to forward any application delegate needed by the SDK manually. + */ ++ (BOOL)isAppDelegateForwarderEnabled; + +/** + * Get unique installation identifier. + * + * @return Unique installation identifier. + */ ++ (NSUUID *)installId; + +/** + * Detect if a debugger is attached to the app process. This is only invoked once on app startup and can not detect + * if the debugger is being attached during runtime! + * + * @return BOOL if the debugger is attached. + */ ++ (BOOL)isDebuggerAttached; + +/** + * Get the current version of AppCenter SDK. + * + * @return The current version of AppCenter SDK. + */ ++ (NSString *)sdkVersion; + +/** + * Set the maximum size of the internal storage. This method must be called before App Center is started. This method is only intended for + * applications. + * + * @param sizeInBytes Maximum size of the internal storage in bytes. This will be rounded up to the nearest multiple of a SQLite page size + * (default is 4096 bytes). Values below 20,480 bytes (20 KiB) will be ignored. + * + * @param completionHandler Callback that is invoked when the database size has been set. The `BOOL` parameter is `YES` if changing the size + * is successful, and `NO` otherwise. This parameter can be null. + * + * @discussion This only sets the maximum size of the database, but App Center modules might store additional data. + * The value passed to this method is not persisted on disk. The default maximum database size is 10485760 bytes (10 MiB). + */ ++ (void)setMaxStorageSize:(long)sizeInBytes completionHandler:(void (^)(BOOL))completionHandler; + +/** + * Set the user identifier. + * + * @param userId User identifier. + * + * @discussion Set the user identifier for logs sent for the default target token when the secret passed in @c + * MSAppCenter:start:withServices: contains "target={targetToken}". + * + * For App Center backend the user identifier maximum length is 256 characters. + * + * AppCenter must be configured or started before this API can be used. + */ ++ (void)setUserId:(NSString *)userId; + +/** + * Set country code to use when building device properties. + * + * @param countryCode The two-letter ISO country code. @see https://www.iso.org/obp/ui/#search for more information. + */ ++ (void)setCountryCode:(NSString *)countryCode; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAppCenterErrors.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAppCenterErrors.h new file mode 100644 index 00000000..e57cf921 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSAppCenterErrors.h @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_APP_CENTER_ERRORS_H +#define MS_APP_CENTER_ERRORS_H + +#import + +#define MS_APP_CENTER_BASE_DOMAIN @"com.Microsoft.AppCenter." + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - Domain + +static NSString *const kMSACErrorDomain = MS_APP_CENTER_BASE_DOMAIN @"ErrorDomain"; + +#pragma mark - General + +// Error codes. +NS_ENUM(NSInteger){MSACLogInvalidContainerErrorCode = 1, MSACCanceledErrorCode = 2, MSACDisabledErrorCode = 3}; + +// Error descriptions. +static NSString const *kMSACLogInvalidContainerErrorDesc = @"Invalid log container."; +static NSString const *kMSACCanceledErrorDesc = @"The operation was canceled."; +static NSString const *kMSACDisabledErrorDesc = @"The service is disabled."; + +#pragma mark - Connection + +// Error codes. +NS_ENUM(NSInteger){MSACConnectionPausedErrorCode = 100, MSACConnectionHttpErrorCode = 101}; + +// Error descriptions. +static NSString const *kMSACConnectionHttpErrorDesc = @"An HTTP error occured."; +static NSString const *kMSACConnectionPausedErrorDesc = @"Canceled, connection paused with log deletion."; + +// Error user info keys. +static NSString const *kMSACConnectionHttpCodeErrorKey = @"MSACConnectionHttpCode"; + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSChannelGroupProtocol.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSChannelGroupProtocol.h new file mode 100644 index 00000000..8f459f01 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSChannelGroupProtocol.h @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_CHANNEL_GROUP_PROTOCOL_H +#define MS_CHANNEL_GROUP_PROTOCOL_H + +#import + +#import "MSChannelProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@class MSChannelUnitConfiguration; + +@protocol MSIngestionProtocol; +@protocol MSChannelUnitProtocol; + +/** + * `MSChannelGroupProtocol` represents a kind of channel that contains constituent MSChannelUnit objects. When an operation from the + * `MSChannelProtocol` is performed on the group, that operation should be propagated to its constituent MSChannelUnit objects. + */ +@protocol MSChannelGroupProtocol + +/** + * Initialize a channel unit with the given configuration. + * + * @param configuration channel configuration. + * + * @return The added `MSChannelUnitProtocol`. Use this object to enqueue logs. + */ +- (id)addChannelUnitWithConfiguration:(MSChannelUnitConfiguration *)configuration; + +/** + * Initialize a channel unit with the given configuration. + * + * @param configuration channel configuration. + * @param ingestion The alternative ingestion object + * + * @return The added `MSChannelUnitProtocol`. Use this object to enqueue logs. + */ +- (id)addChannelUnitWithConfiguration:(MSChannelUnitConfiguration *)configuration + withIngestion:(nullable id)ingestion; + +/** + * Change the base URL (schema + authority + port only) used to communicate with the backend. + * + * @param logUrl base URL to use for backend communication. + */ +- (void)setLogUrl:(NSString *)logUrl; + +/** + * Set the app secret. + * + * @param appSecret The app secret. + */ +- (void)setAppSecret:(NSString *)appSecret; + +/** + * Set the maximum size of the internal storage. This method must be called before App Center is started. + * + * @discussion The default maximum database size is 10485760 bytes (10 MiB). + * + * @param sizeInBytes Maximum size of the internal storage in bytes. This will be rounded up to the nearest multiple of a SQLite page size + * (default is 4096 bytes). Values below 24576 bytes (24 KiB) will be ignored. + * @param completionHandler Callback that is invoked when the database size has been set. The `BOOL` parameter is `YES` if changing the size + * is successful, and `NO` otherwise. + */ +- (void)setMaxStorageSize:(long)sizeInBytes completionHandler:(nullable void (^)(BOOL))completionHandler; + +/** + * Return a channel unit instance for the given groupId. + * + * @param groupId The group ID for a channel unit. + * + * @return A channel unit instance or `nil`. + */ +- (nullable id)channelUnitForGroupId:(NSString *)groupId; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSChannelProtocol.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSChannelProtocol.h new file mode 100644 index 00000000..4c50baab --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSChannelProtocol.h @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_CHANNEL_PROTOCOL_H +#define MS_CHANNEL_PROTOCOL_H + +#import + +#import "MSEnable.h" + +NS_ASSUME_NONNULL_BEGIN + +@protocol MSChannelDelegate; + +/** + * `MSChannelProtocol` contains the essential operations of a channel. Channels are broadly responsible for enqueuing logs to be sent to the + * backend and/or stored on disk. + */ +@protocol MSChannelProtocol + +/** + * Add delegate. + * + * @param delegate delegate. + */ +- (void)addDelegate:(id)delegate; + +/** + * Remove delegate. + * + * @param delegate delegate. + */ +- (void)removeDelegate:(id)delegate; + +/** + * Pause operations, logs will be stored but not sent. + * + * @param identifyingObject Object used to identify the pause request. + * + * @discussion A paused channel doesn't forward logs to the ingestion. The identifying object used to pause the channel can be any unique + * object. The same identifying object must be used to call resume. For simplicity if the caller is the one owning the channel then @c self + * can be used as identifying object. + * + * @see resumeWithIdentifyingObject: + */ +- (void)pauseWithIdentifyingObject:(id)identifyingObject; + +/** + * Resume operations, logs can be sent again. + * + * @param identifyingObject Object used to passed to the pause method. + * + * @discussion The channel only resume when all the outstanding identifying objects have been resumed. + * + * @see pauseWithIdentifyingObject: + */ +- (void)resumeWithIdentifyingObject:(id)identifyingObject; + +@end + +NS_ASSUME_NONNULL_END + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSConstants.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSConstants.h new file mode 100644 index 00000000..047c9f71 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSConstants.h @@ -0,0 +1,170 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +/** + * Log Levels + */ +typedef NS_ENUM(NSUInteger, MSLogLevel) { + + /** + * Logging will be very chatty + */ + MSLogLevelVerbose = 2, + + /** + * Debug information will be logged + */ + MSLogLevelDebug = 3, + + /** + * Information will be logged + */ + MSLogLevelInfo = 4, + + /** + * Errors and warnings will be logged + */ + MSLogLevelWarning = 5, + + /** + * Errors will be logged + */ + MSLogLevelError = 6, + + /** + * Only critical errors will be logged + */ + MSLogLevelAssert = 7, + + /** + * Logging is disabled + */ + MSLogLevelNone = 99 +}; + +typedef NSString * (^MSLogMessageProvider)(void); +typedef void (^MSLogHandler)(MSLogMessageProvider messageProvider, MSLogLevel logLevel, NSString *tag, const char *file, + const char *function, uint line); + +/** + * Channel priorities, check the kMSPriorityCount if you add a new value. + * The order matters here! Values NEED to range from low priority to high priority. + */ +typedef NS_ENUM(NSInteger, MSPriority) { MSPriorityBackground, MSPriorityDefault, MSPriorityHigh }; +static short const kMSPriorityCount = MSPriorityHigh + 1; + +/** + * The priority by which the modules are initialized. + * MSPriorityMax is reserved for only 1 module and this needs to be Crashes. + * Crashes needs to be initialized first to catch crashes in our other SDK Modules (which will hopefully never happen) and to avoid losing + * any log at crash time. + */ +typedef NS_ENUM(NSInteger, MSInitializationPriority) { + MSInitializationPriorityDefault = 500, + MSInitializationPriorityHigh = 750, + MSInitializationPriorityMax = 999 +}; + +/** + * Enum with the different HTTP status codes. + */ +typedef NS_ENUM(NSInteger, MSHTTPCodesNo) { + + // Invalid + MSHTTPCodesNo0XXInvalidUnknown = 0, + + // Informational + MSHTTPCodesNo1XXInformationalUnknown = 1, + MSHTTPCodesNo100Continue = 100, + MSHTTPCodesNo101SwitchingProtocols = 101, + MSHTTPCodesNo102Processing = 102, + + // Success + MSHTTPCodesNo2XXSuccessUnknown = 2, + MSHTTPCodesNo200OK = 200, + MSHTTPCodesNo201Created = 201, + MSHTTPCodesNo202Accepted = 202, + MSHTTPCodesNo203NonAuthoritativeInformation = 203, + MSHTTPCodesNo204NoContent = 204, + MSHTTPCodesNo205ResetContent = 205, + MSHTTPCodesNo206PartialContent = 206, + MSHTTPCodesNo207MultiStatus = 207, + MSHTTPCodesNo208AlreadyReported = 208, + MSHTTPCodesNo209IMUsed = 209, + + // Redirection + MSHTTPCodesNo3XXSuccessUnknown = 3, + MSHTTPCodesNo300MultipleChoices = 300, + MSHTTPCodesNo301MovedPermanently = 301, + MSHTTPCodesNo302Found = 302, + MSHTTPCodesNo303SeeOther = 303, + MSHTTPCodesNo304NotModified = 304, + MSHTTPCodesNo305UseProxy = 305, + MSHTTPCodesNo306SwitchProxy = 306, + MSHTTPCodesNo307TemporaryRedirect = 307, + MSHTTPCodesNo308PermanentRedirect = 308, + + // Client error + MSHTTPCodesNo4XXSuccessUnknown = 4, + MSHTTPCodesNo400BadRequest = 400, + MSHTTPCodesNo401Unauthorised = 401, + MSHTTPCodesNo402PaymentRequired = 402, + MSHTTPCodesNo403Forbidden = 403, + MSHTTPCodesNo404NotFound = 404, + MSHTTPCodesNo405MethodNotAllowed = 405, + MSHTTPCodesNo406NotAcceptable = 406, + MSHTTPCodesNo407ProxyAuthenticationRequired = 407, + MSHTTPCodesNo408RequestTimeout = 408, + MSHTTPCodesNo409Conflict = 409, + MSHTTPCodesNo410Gone = 410, + MSHTTPCodesNo411LengthRequired = 411, + MSHTTPCodesNo412PreconditionFailed = 412, + MSHTTPCodesNo413RequestEntityTooLarge = 413, + MSHTTPCodesNo414RequestURITooLong = 414, + MSHTTPCodesNo415UnsupportedMediaType = 415, + MSHTTPCodesNo416RequestedRangeNotSatisfiable = 416, + MSHTTPCodesNo417ExpectationFailed = 417, + MSHTTPCodesNo418IamATeapot = 418, + MSHTTPCodesNo419AuthenticationTimeout = 419, + MSHTTPCodesNo420MethodFailureSpringFramework = 420, + MSHTTPCodesNo420EnhanceYourCalmTwitter = 4200, + MSHTTPCodesNo422UnprocessableEntity = 422, + MSHTTPCodesNo423Locked = 423, + MSHTTPCodesNo424FailedDependency = 424, + MSHTTPCodesNo424MethodFailureWebDaw = 4240, + MSHTTPCodesNo425UnorderedCollection = 425, + MSHTTPCodesNo426UpgradeRequired = 426, + MSHTTPCodesNo428PreconditionRequired = 428, + MSHTTPCodesNo429TooManyRequests = 429, + MSHTTPCodesNo431RequestHeaderFieldsTooLarge = 431, + MSHTTPCodesNo444NoResponseNginx = 444, + MSHTTPCodesNo449RetryWithMicrosoft = 449, + MSHTTPCodesNo450BlockedByWindowsParentalControls = 450, + MSHTTPCodesNo451RedirectMicrosoft = 451, + MSHTTPCodesNo451UnavailableForLegalReasons = 4510, + MSHTTPCodesNo494RequestHeaderTooLargeNginx = 494, + MSHTTPCodesNo495CertErrorNginx = 495, + MSHTTPCodesNo496NoCertNginx = 496, + MSHTTPCodesNo497HTTPToHTTPSNginx = 497, + MSHTTPCodesNo499ClientClosedRequestNginx = 499, + + // Server error + MSHTTPCodesNo5XXSuccessUnknown = 5, + MSHTTPCodesNo500InternalServerError = 500, + MSHTTPCodesNo501NotImplemented = 501, + MSHTTPCodesNo502BadGateway = 502, + MSHTTPCodesNo503ServiceUnavailable = 503, + MSHTTPCodesNo504GatewayTimeout = 504, + MSHTTPCodesNo505HTTPVersionNotSupported = 505, + MSHTTPCodesNo506VariantAlsoNegotiates = 506, + MSHTTPCodesNo507InsufficientStorage = 507, + MSHTTPCodesNo508LoopDetected = 508, + MSHTTPCodesNo509BandwidthLimitExceeded = 509, + MSHTTPCodesNo510NotExtended = 510, + MSHTTPCodesNo511NetworkAuthenticationRequired = 511, + MSHTTPCodesNo522ConnectionTimedOut = 522, + MSHTTPCodesNo598NetworkReadTimeoutErrorUnknown = 598, + MSHTTPCodesNo599NetworkConnectTimeoutErrorUnknown = 599 +}; diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSCustomProperties.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSCustomProperties.h new file mode 100644 index 00000000..34b202e2 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSCustomProperties.h @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_CUSTOM_PROPERTIES_H +#define MS_CUSTOM_PROPERTIES_H + +#import + +/** + * Custom properties builder. + * Collects multiple properties to send in one log. + */ +@interface MSCustomProperties : NSObject + +/** + * Set the specified property value with the specified key. + * If the properties previously contained a property for the key, the old value is replaced. + * + * @param key Key with which the specified value is to be set. + * @param value Value to be set with the specified key. + * + * @return This instance. + */ +- (instancetype)setString:(NSString *)value forKey:(NSString *)key; + +/** + * Set the specified property value with the specified key. + * If the properties previously contained a property for the key, the old value is replaced. + * + * @param key Key with which the specified value is to be set. + * @param value Value to be set with the specified key. + * + * @return This instance. + */ +- (instancetype)setNumber:(NSNumber *)value forKey:(NSString *)key; + +/** + * Set the specified property value with the specified key. + * If the properties previously contained a property for the key, the old value is replaced. + * + * @param key Key with which the specified value is to be set. + * @param value Value to be set with the specified key. + * + * @return This instance. + */ +- (instancetype)setBool:(BOOL)value forKey:(NSString *)key; + +/** + * Set the specified property value with the specified key. + * If the properties previously contained a property for the key, the old value is replaced. + * + * @param key Key with which the specified value is to be set. + * @param value Value to be set with the specified key. + * + * @return This instance. + */ +- (instancetype)setDate:(NSDate *)value forKey:(NSString *)key; + +/** + * Clear the property for the specified key. + * + * @param key Key whose mapping is to be cleared. + * + * @return This instance. + */ +- (instancetype)clearPropertyForKey:(NSString *)key; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSDevice.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSDevice.h new file mode 100644 index 00000000..bca52140 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSDevice.h @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_DEVICE_H +#define MS_DEVICE_H + +#import + +#import "MSWrapperSdk.h" + +@interface MSDevice : MSWrapperSdk + +/* + * Name of the SDK. Consists of the name of the SDK and the platform, e.g. "appcenter.ios", "appcenter.android" + */ +@property(nonatomic, copy, readonly) NSString *sdkName; + +/* + * Version of the SDK in semver format, e.g. "1.2.0" or "0.12.3-alpha.1". + */ +@property(nonatomic, copy, readonly) NSString *sdkVersion; + +/* + * Device model (example: iPad2,3). + */ +@property(nonatomic, copy, readonly) NSString *model; + +/* + * Device manufacturer (example: HTC). + */ +@property(nonatomic, copy, readonly) NSString *oemName; + +/* + * OS name (example: iOS). + */ +@property(nonatomic, copy, readonly) NSString *osName; + +/* + * OS version (example: 9.3.0). + */ +@property(nonatomic, copy, readonly) NSString *osVersion; + +/* + * OS build code (example: LMY47X). [optional] + */ +@property(nonatomic, copy, readonly) NSString *osBuild; + +/* + * API level when applicable like in Android (example: 15). [optional] + */ +@property(nonatomic, copy, readonly) NSNumber *osApiLevel; + +/* + * Language code (example: en_US). + */ +@property(nonatomic, copy, readonly) NSString *locale; + +/* + * The offset in minutes from UTC for the device time zone, including daylight savings time. + */ +@property(nonatomic, readonly, strong) NSNumber *timeZoneOffset; + +/* + * Screen size of the device in pixels (example: 640x480). + */ +@property(nonatomic, copy, readonly) NSString *screenSize; + +/* + * Application version name, e.g. 1.1.0 + */ +@property(nonatomic, copy, readonly) NSString *appVersion; + +/* + * Carrier name (for mobile devices). [optional] + */ +@property(nonatomic, copy, readonly) NSString *carrierName; + +/* + * Carrier country code (for mobile devices). [optional] + */ +@property(nonatomic, copy, readonly) NSString *carrierCountry; + +/* + * The app's build number, e.g. 42. + */ +@property(nonatomic, copy, readonly) NSString *appBuild; + +/* + * The bundle identifier, package identifier, or namespace, depending on what the individual plattforms use, .e.g com.microsoft.example. + * [optional] + */ +@property(nonatomic, copy, readonly) NSString *appNamespace; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSEnable.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSEnable.h new file mode 100644 index 00000000..11e2f605 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSEnable.h @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_ENABLE_H +#define MS_ENABLE_H + +#import + +/** + * Protocol to define an instance that can be enabled/disabled. + */ +@protocol MSEnable + +@required + +/** + * Enable/disable this instance and delete data on disabled state. + * + * @param isEnabled A boolean value set to YES to enable the instance or NO to disable it. + * @param deleteData A boolean value set to YES to delete data or NO to keep it. + */ +- (void)setEnabled:(BOOL)isEnabled andDeleteDataOnDisabled:(BOOL)deleteData; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLog.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLog.h new file mode 100644 index 00000000..07f1e574 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLog.h @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_LOG_H +#define MS_LOG_H + +#import + +@class MSDevice; + +@protocol MSLog + +/** + * Log type. + */ +@property(nonatomic, copy) NSString *type; + +/** + * Log timestamp. + */ +@property(nonatomic, strong) NSDate *timestamp; + +/** + * A session identifier is used to correlate logs together. A session is an abstract concept in the API and is not necessarily an analytics + * session, it can be used to only track crashes. + */ +@property(nonatomic, copy) NSString *sid; + +/** + * Optional distribution group ID value. + */ +@property(nonatomic, copy) NSString *distributionGroupId; + +/** + * Optional user identifier. + */ +@property(nonatomic, copy) NSString *userId; + +/** + * Device properties associated to this log. + */ +@property(nonatomic, strong) MSDevice *device; + +/** + * Transient object tag. For example, a log can be tagged with a transmission target. We do this currently to prevent properties being + * applied retroactively to previous logs by comparing their tags. + */ +@property(nonatomic, strong) NSObject *tag; + +/** + * Checks if the object's values are valid. + * + * @return YES, if the object is valid. + */ +- (BOOL)isValid; + +/** + * Adds a transmission target token that this log should be sent to. + * + * @param token The transmission target token. + */ +- (void)addTransmissionTargetToken:(NSString *)token; + +/** + * Gets all transmission target tokens that this log should be sent to. + * + * @returns Collection of transmission target tokens that this log should be sent to. + */ +- (NSSet *)transmissionTargetTokens; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLogWithProperties.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLogWithProperties.h new file mode 100644 index 00000000..7a3b372d --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLogWithProperties.h @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_LOG_WITH_PROPERTIES_H +#define MS_LOG_WITH_PROPERTIES_H + +#import + +#import "MSAbstractLog.h" + +@interface MSLogWithProperties : MSAbstractLog + +/** + * Additional key/value pair parameters. [optional] + */ +@property(nonatomic, strong) NSDictionary *properties; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLogger.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLogger.h new file mode 100644 index 00000000..7eb5c3be --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSLogger.h @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +#import "MSConstants.h" + +#define MSLog(_level, _tag, _message) \ + [MSLogger logMessage:_message level:_level tag:_tag file:__FILE__ function:__PRETTY_FUNCTION__ line:__LINE__] +#define MSLogAssert(tag, format, ...) \ + MSLog(MSLogLevelAssert, tag, (^{ \ + return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \ + })) +#define MSLogError(tag, format, ...) \ + MSLog(MSLogLevelError, tag, (^{ \ + return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \ + })) +#define MSLogWarning(tag, format, ...) \ + MSLog(MSLogLevelWarning, tag, (^{ \ + return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \ + })) +#define MSLogInfo(tag, format, ...) \ + MSLog(MSLogLevelInfo, tag, (^{ \ + return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \ + })) +#define MSLogDebug(tag, format, ...) \ + MSLog(MSLogLevelDebug, tag, (^{ \ + return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \ + })) +#define MSLogVerbose(tag, format, ...) \ + MSLog(MSLogLevelVerbose, tag, (^{ \ + return [NSString stringWithFormat:(format), ##__VA_ARGS__]; \ + })) + +@interface MSLogger : NSObject + ++ (void)logMessage:(MSLogMessageProvider)messageProvider + level:(MSLogLevel)loglevel + tag:(NSString *)tag + file:(const char *)file + function:(const char *)function + line:(uint)line; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSService.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSService.h new file mode 100644 index 00000000..59997b82 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSService.h @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_SERVICE_H +#define MS_SERVICE_H + +#import + +/** + * Protocol declaring service logic. + */ +@protocol MSService + +/** + * Enable or disable this service. + * The state is persisted in the device's storage across application launches. + * + * @param isEnabled Whether this service is enabled or not. + * + * @see isEnabled + */ ++ (void)setEnabled:(BOOL)isEnabled; + +/** + * Indicates whether this service is enabled. + * + * @return `YES` if this service is enabled, `NO` if it is not. + * + * @see setEnabled: + */ ++ (BOOL)isEnabled; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSServiceAbstract.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSServiceAbstract.h new file mode 100644 index 00000000..3e5e8dec --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSServiceAbstract.h @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_SERVICE_ABSTRACT_H +#define MS_SERVICE_ABSTRACT_H + +#import + +#import "MSService.h" + +@protocol MSChannelGroupProtocol; + +/** + * Abstraction of services common logic. + * This class is intended to be subclassed only not instantiated directly. + */ +@interface MSServiceAbstract : NSObject + +/** + * The flag indicates whether the service is started from application or not. + */ +@property(nonatomic, assign) BOOL startedFromApplication; + +/** + * Start this service with a channel group. Also sets the flag that indicates that a service has been started. + * + * @param channelGroup channel group used to persist and send logs. + * @param appSecret app secret for the SDK. + * @param token default transmission target token for this service. + * @param fromApplication indicates whether the service started from an application or not. + */ +- (void)startWithChannelGroup:(id)channelGroup + appSecret:(NSString *)appSecret + transmissionTargetToken:(NSString *)token + fromApplication:(BOOL)fromApplication; + +/** + * Update configuration when the service requires to start again. This method should only be called if the service is started from libraries + * and then is being started from an application. + * + * @param appSecret app secret for the SDK. + * @param token default transmission target token for this service. + */ +- (void)updateConfigurationWithAppSecret:(NSString *)appSecret transmissionTargetToken:(NSString *)token; + +/** + * Checks if the service needs the application secret. + * + * @return `YES` if the application secret is required, `NO` otherwise. + */ +- (BOOL)isAppSecretRequired; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSWrapperLogger.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSWrapperLogger.h new file mode 100644 index 00000000..1e17ff13 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSWrapperLogger.h @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +#import "MSConstants.h" + +/** + * This is a utility for producing App Center style log messages. It is only intended for use by App Center services and wrapper SDKs of App + * Center. + */ +@interface MSWrapperLogger : NSObject + ++ (void)MSWrapperLog:(MSLogMessageProvider)message tag:(NSString *)tag level:(MSLogLevel)level; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSWrapperSdk.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSWrapperSdk.h new file mode 100644 index 00000000..647ba7b0 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Headers/MSWrapperSdk.h @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_WRAPPER_SDK_H +#define MS_WRAPPER_SDK_H + +#import + +@interface MSWrapperSdk : NSObject + +/* + * Version of the wrapper SDK. When the SDK is embedding another base SDK (for example Xamarin.Android wraps Android), the Xamarin specific + * version is populated into this field while sdkVersion refers to the original Android SDK. [optional] + */ +@property(nonatomic, copy, readonly) NSString *wrapperSdkVersion; + +/* + * Name of the wrapper SDK (examples: Xamarin, Cordova). [optional] + */ +@property(nonatomic, copy, readonly) NSString *wrapperSdkName; + +/* + * Version of the wrapper technology framework (Xamarin runtime version or ReactNative or Cordova etc...). [optional] + */ +@property(nonatomic, copy, readonly) NSString *wrapperRuntimeVersion; + +/* + * Label that is used to identify application code 'version' released via Live Update beacon running on device. + */ +@property(nonatomic, copy, readonly) NSString *liveUpdateReleaseLabel; + +/* + * Identifier of environment that current application release belongs to, deployment key then maps to environment like Production, Staging. + */ +@property(nonatomic, copy, readonly) NSString *liveUpdateDeploymentKey; + +/* + * Hash of all files (ReactNative or Cordova) deployed to device via LiveUpdate beacon. Helps identify the Release version on device or need + * to download updates in future + */ +@property(nonatomic, copy, readonly) NSString *liveUpdatePackageHash; + +- (instancetype)initWithWrapperSdkVersion:(NSString *)wrapperSdkVersion + wrapperSdkName:(NSString *)wrapperSdkName + wrapperRuntimeVersion:(NSString *)wrapperRuntimeVersion + liveUpdateReleaseLabel:(NSString *)liveUpdateReleaseLabel + liveUpdateDeploymentKey:(NSString *)liveUpdateDeploymentKey + liveUpdatePackageHash:(NSString *)liveUpdatePackageHash; + +/** + * Checks if the object's values are valid. + * + * @return YES, if the object is valid. + */ +- (BOOL)isValid; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Modules/module.modulemap b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Modules/module.modulemap new file mode 100644 index 00000000..32c35bdb --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Modules/module.modulemap @@ -0,0 +1,12 @@ +framework module AppCenter { + umbrella header "AppCenter.h" + + export * + module * { export * } + + link framework "Foundation" + link framework "SystemConfiguration" + link framework "AppKit" + link "sqlite3" + link "z" +} diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/PrivateHeaders/MSChannelDelegate.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/PrivateHeaders/MSChannelDelegate.h new file mode 100644 index 00000000..f1985b23 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/PrivateHeaders/MSChannelDelegate.h @@ -0,0 +1,110 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +#import "MSConstants+Flags.h" + +@protocol MSChannelUnitProtocol; +@protocol MSChannelGroupProtocol; +@protocol MSChannelProtocol; +@protocol MSLog; + +@protocol MSChannelDelegate + +@optional + +/** + * A callback that is called when a channel unit is added to the channel group. + * + * @param channelGroup The channel group. + * @param channel The newly added channel. + */ +- (void)channelGroup:(id)channelGroup didAddChannelUnit:(id)channel; + +/** + * A callback that is called when a log is just enqueued. Delegates may want to prepare the log a little more before further processing. + * + * @param log The log to prepare. + */ +- (void)channel:(id)channel prepareLog:(id)log; + +/** + * A callback that is called after a log is definitely prepared. + * + * @param log The log. + * @param internalId An internal Id to keep track of logs. + * @param flags Options for the log. + */ +- (void)channel:(id)channel didPrepareLog:(id)log internalId:(NSString *)internalId flags:(MSFlags)flags; + +/** + * A callback that is called after a log completed the enqueueing process whether it was successful or not. + * + * @param log The log. + * @param internalId An internal Id to keep track of logs. + */ +- (void)channel:(id)channel didCompleteEnqueueingLog:(id)log internalId:(NSString *)internalId; + +/** + * Callback method that will be called before each log will be send to the server. + * + * @param channel The channel object. + * @param log The log to be sent. + */ +- (void)channel:(id)channel willSendLog:(id)log; + +/** + * Callback method that will be called in case the SDK was able to send a log. + * + * @param channel The channel object. + * @param log The log to be sent. + */ +- (void)channel:(id)channel didSucceedSendingLog:(id)log; + +/** + * Callback method that will be called in case the SDK was unable to send a log. + * + * @param channel The channel object. + * @param log The log to be sent. + * @param error The error that occured. + */ +- (void)channel:(id)channel didFailSendingLog:(id)log withError:(NSError *)error; + +/** + * A callback that is called when setEnabled has been invoked. + * + * @param channel The channel. + * @param isEnabled The boolean that indicates enabled. + * @param deletedData The boolean that indicates deleting data on disabled. + */ +- (void)channel:(id)channel didSetEnabled:(BOOL)isEnabled andDeleteDataOnDisabled:(BOOL)deletedData; + +/** + * A callback that is called when pause has been invoked. + * + * @param channel The channel. + * @param identifyingObject The identifying object used to pause the channel. + */ +- (void)channel:(id)channel didPauseWithIdentifyingObject:(id)identifyingObject; + +/** + * A callback that is called when resume has been invoked. + * + * @param channel The channel. + * @param identifyingObject The identifying object used to resume the channel. + */ +- (void)channel:(id)channel didResumeWithIdentifyingObject:(id)identifyingObject; + +/** + * Callback method that will determine if a log should be filtered out from the usual processing pipeline. If any delegate returns true, the + * log is filtered. + * + * @param channelUnit The channel unit that is going to send the log. + * @param log The log to be filtered or not. + * + * @return `true` if the log should be filtered out. + */ +- (BOOL)channelUnit:(id)channelUnit shouldFilterLog:(id)log; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/PrivateHeaders/MSConstants+Flags.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/PrivateHeaders/MSConstants+Flags.h new file mode 100644 index 00000000..b4d9a1ba --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/PrivateHeaders/MSConstants+Flags.h @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_CONSTANTS_FLAGS_H +#define MS_CONSTANTS_FLAGS_H + +#import + +typedef NS_OPTIONS(NSUInteger, MSFlags) { + MSFlagsNone = (0 << 0), // => 00000000 + MSFlagsNormal = (1 << 0), // => 00000001 + MSFlagsCritical = (1 << 1), // => 00000010 + MSFlagsPersistenceNormal DEPRECATED_MSG_ATTRIBUTE("please use MSFlagsNormal") = MSFlagsNormal, + MSFlagsPersistenceCritical DEPRECATED_MSG_ATTRIBUTE("please use MSFlagsCritical") = MSFlagsCritical, + MSFlagsDefault = MSFlagsNormal +}; + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Resources/Info.plist b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Resources/Info.plist new file mode 100644 index 00000000..b15eb793 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,44 @@ + + + + + BuildMachineOSBuild + 19F101 + CFBundleDevelopmentRegion + English + CFBundleExecutable + AppCenter + CFBundleIdentifier + com.microsoft.appcenter + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + AppCenter + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1 + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 1.0 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 11C505 + DTPlatformVersion + GM + DTSDKBuild + 19B90 + DTSDKName + macosx10.15 + DTXcode + 1130 + DTXcodeBuild + 11C505 + LSMinimumSystemVersion + 10.9 + + diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/Current b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/Current new file mode 120000 index 00000000..8c7e5a66 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenter.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/AppCenterCrashes b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/AppCenterCrashes new file mode 120000 index 00000000..3ee22749 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/AppCenterCrashes @@ -0,0 +1 @@ +Versions/Current/AppCenterCrashes \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Headers b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Headers new file mode 120000 index 00000000..a177d2a6 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Modules b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Modules new file mode 120000 index 00000000..5736f318 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Modules @@ -0,0 +1 @@ +Versions/Current/Modules \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Resources b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Resources new file mode 120000 index 00000000..953ee36f --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/AppCenterCrashes b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/AppCenterCrashes new file mode 100644 index 00000000..5beb915a Binary files /dev/null and b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/AppCenterCrashes differ diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/AppCenterCrashes.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/AppCenterCrashes.h new file mode 100644 index 00000000..d2920b3f --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/AppCenterCrashes.h @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +#import "MSCrashHandlerSetupDelegate.h" +#import "MSCrashes.h" +#import "MSCrashesDelegate.h" +#import "MSErrorAttachmentLog+Utility.h" +#import "MSErrorAttachmentLog.h" +#import "MSWrapperCrashesHelper.h" diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSAbstractLog.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSAbstractLog.h new file mode 100644 index 00000000..76d02685 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSAbstractLog.h @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_ABSTRACT_LOG_H +#define MS_ABSTRACT_LOG_H + +#import + +@interface MSAbstractLog : NSObject + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashHandlerSetupDelegate.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashHandlerSetupDelegate.h new file mode 100644 index 00000000..0a214be0 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashHandlerSetupDelegate.h @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +/** + * This is required for Wrapper SDKs that need to provide custom behavior surrounding the setup of crash handlers. + */ +@protocol MSCrashHandlerSetupDelegate + +@optional + +/** + * Callback method that will be called immediately before crash handlers are set up. + */ +- (void)willSetUpCrashHandlers; + +/** + * Callback method that will be called immediately after crash handlers are set up. + */ +- (void)didSetUpCrashHandlers; + +/** + * Callback method that gets a value indicating whether the SDK should enable an uncaught exception handler. + * + * @return YES if SDK should enable uncaught exception handler, otherwise NO. + * + * @discussion Do not register an UncaughtExceptionHandler for Xamarin as we rely on the Xamarin runtime to report NSExceptions. Registering + * our own UncaughtExceptionHandler will cause the Xamarin debugger to not work properly (it will not stop for NSExceptions). + */ +- (BOOL)shouldEnableUncaughtExceptionHandler; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashes.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashes.h new file mode 100644 index 00000000..56757928 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashes.h @@ -0,0 +1,171 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import "MSErrorReport.h" +#import "MSServiceAbstract.h" + +@class MSCrashesDelegate; + +/** + * Custom block that handles the alert that prompts the user whether crash reports need to be processed or not. + * + * @return Returns YES to discard crash reports, otherwise NO. + */ +typedef BOOL (^MSUserConfirmationHandler)(NSArray *_Nonnull errorReports); + +/** + * Error Logging status. + */ +typedef NS_ENUM(NSUInteger, MSErrorLogSetting) { + + /** + * Crash reporting is disabled. + */ + MSErrorLogSettingDisabled = 0, + + /** + * User is asked each time before sending error logs. + */ + MSErrorLogSettingAlwaysAsk = 1, + + /** + * Each error log is send automatically. + */ + MSErrorLogSettingAutoSend = 2 +}; + +/** + * Crash Manager alert user input. + */ +typedef NS_ENUM(NSUInteger, MSUserConfirmation) { + + /** + * User chose not to send the crash report. + */ + MSUserConfirmationDontSend = 0, + + /** + * User wants the crash report to be sent. + */ + MSUserConfirmationSend = 1, + + /** + * User wants to send all error logs. + */ + MSUserConfirmationAlways = 2 +}; + +@protocol MSCrashesDelegate; + +@interface MSCrashes : MSServiceAbstract + +///----------------------------------------------------------------------------- +/// @name Testing Crashes Feature +///----------------------------------------------------------------------------- + +/** + * Lets the app crash for easy testing of the SDK. + * + * The best way to use this is to trigger the crash with a button action. + * + * Make sure not to let the app crash in `applicationDidFinishLaunching` or any other startup method! Since otherwise the app would crash + * before the SDK could process it. + * + * Note that our SDK provides support for handling crashes that happen early on startup. Check the documentation for more information on how + * to use this. + * + * If the SDK detects an App Store environment, it will _NOT_ cause the app to crash! + */ ++ (void)generateTestCrash; + +///----------------------------------------------------------------------------- +/// @name Helpers +///----------------------------------------------------------------------------- + +/** + * Check if the app has crashed in the last session. + * + * @return Returns YES is the app has crashed in the last session. + */ ++ (BOOL)hasCrashedInLastSession; + +/** + * Check if the app received memory warning in the last session. + * + * @return Returns YES is the app received memory warning in the last session. + */ ++ (BOOL)hasReceivedMemoryWarningInLastSession; + +/** + * Provides details about the crash that occurred in the last app session + */ ++ (nullable MSErrorReport *)lastSessionCrashReport; + +#if TARGET_OS_OSX || TARGET_OS_MACCATALYST +/** + * Callback for report exception. + * + * NOTE: This method should be called only if you explicitly disabled swizzling for it. + * + * On OS X runtime, not all uncaught exceptions end in a custom `NSUncaughtExceptionHandler`. + * Forward exception from overrided `[NSApplication reportException:]` to catch additional exceptions. + */ ++ (void)applicationDidReportException:(NSException *_Nonnull)exception; +#endif + +///----------------------------------------------------------------------------- +/// @name Configuration +///----------------------------------------------------------------------------- + +#if !TARGET_OS_TV +/** + * Disable the Mach exception server. + * + * By default, the SDK uses the Mach exception handler to catch fatal signals, e.g. stack overflows, via a Mach exception server. If you + * want to disable the Mach exception handler, you should call this method _BEFORE_ starting the SDK. Your typical setup code would look + * like this: + * + * `[MSCrashes disableMachExceptionHandler]`; + * `[MSAppCenter start:@"YOUR_APP_ID" withServices:@[[MSCrashes class]]];` + * + * or if you are using Swift: + * + * `MSCrashes.disableMachExceptionHandler()` + * `MSAppCenter.start("YOUR_APP_ID", withServices: [MSAnalytics.self, MSCrashes.self])` + * + * tvOS does not support the Mach exception handler, thus crashes that are caused by stack overflows cannot be detected. As a result, + * disabling the Mach exception server is not available in the tvOS SDK. + * + * @discussion It can be useful to disable the Mach exception handler when you are debugging the Crashes service while developing, + * especially when you attach the debugger to your application after launch. + */ ++ (void)disableMachExceptionHandler; +#endif + +/** + * Set the delegate + * Defines the class that implements the optional protocol `MSCrashesDelegate`. + * + * @see MSCrashesDelegate + */ ++ (void)setDelegate:(_Nullable id)delegate; + +/** + * Set a user confirmation handler that is invoked right before processing crash reports to determine whether sending crash reports or not. + * + * @param userConfirmationHandler A handler for user confirmation. + * + * @see MSUserConfirmationHandler + */ ++ (void)setUserConfirmationHandler:(_Nullable MSUserConfirmationHandler)userConfirmationHandler; + +/** + * Notify SDK with a confirmation to handle the crash report. + * + * @param userConfirmation A user confirmation. + * + * @see MSUserConfirmation. + */ ++ (void)notifyWithUserConfirmation:(MSUserConfirmation)userConfirmation; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashesDelegate.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashesDelegate.h new file mode 100644 index 00000000..ecc249f0 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSCrashesDelegate.h @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +@class MSCrashes; +@class MSErrorReport; +@class MSErrorAttachmentLog; + +@protocol MSCrashesDelegate + +@optional + +/** + * Callback method that will be called before processing errors. + * + * @param crashes The instance of MSCrashes. + * @param errorReport The errorReport that will be sent. + * + * @discussion Crashes will send logs to the server or discard/delete logs based on this method's return value. + */ +- (BOOL)crashes:(MSCrashes *)crashes shouldProcessErrorReport:(MSErrorReport *)errorReport; + +/** + * Callback method that will be called before each error will be send to the server. + * + * @param crashes The instance of MSCrashes. + * @param errorReport The errorReport that will be sent. + * + * @discussion Use this callback to display custom UI while crashes are sent to the server. + */ +- (void)crashes:(MSCrashes *)crashes willSendErrorReport:(MSErrorReport *)errorReport; + +/** + * Callback method that will be called in case the SDK was unable to send an error report to the server. + * + * @param crashes The instance of MSCrashes. + * @param errorReport The errorReport that App Center sent. + * + * @discussion Use this method to hide your custom UI. + */ +- (void)crashes:(MSCrashes *)crashes didSucceedSendingErrorReport:(MSErrorReport *)errorReport; + +/** + * Callback method that will be called in case the SDK was unable to send an error report to the server. + * + * @param crashes The instance of MSCrashes. + * @param errorReport The errorReport that App Center tried to send. + * @param error The error that occurred. + */ +- (void)crashes:(MSCrashes *)crashes didFailSendingErrorReport:(MSErrorReport *)errorReport withError:(NSError *)error; + +/** + * Method to get the attachments associated to an error report. + * + * @param crashes The instance of MSCrashes. + * @param errorReport The errorReport associated with the returned attachments. + * + * @return The attachments associated with the given error report or nil if the error report doesn't have any attachments. + * + * @discussion Implement this method if you want attachments to the given error report. + */ +- (NSArray *)attachmentsWithCrashes:(MSCrashes *)crashes forErrorReport:(MSErrorReport *)errorReport; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorAttachmentLog+Utility.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorAttachmentLog+Utility.h new file mode 100644 index 00000000..585c353c --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorAttachmentLog+Utility.h @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import "MSErrorAttachmentLog.h" + +// Exporting symbols for category. +extern NSString *MSMSErrorLogAttachmentLogUtilityCategory; + +@interface MSErrorAttachmentLog (Utility) + +/** + * Create an attachment with a given filename and text. + * + * @param filename The filename the attachment should get. If nil will get an automatically generated filename. + * @param text The attachment text. + * + * @return An instance of `MSErrorAttachmentLog`. + */ ++ (MSErrorAttachmentLog *)attachmentWithText:(NSString *)text filename:(NSString *)filename; + +/** + * Create an attachment with a given filename and `NSData` object. + * + * @param filename The filename the attachment should get. If nil will get an automatically generated filename. + * @param data The attachment data as NSData. + * @param contentType The content type of your data as MIME type. + * + * @return An instance of `MSErrorAttachmentLog`. + */ ++ (MSErrorAttachmentLog *)attachmentWithBinary:(NSData *)data filename:(NSString *)filename contentType:(NSString *)contentType; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorAttachmentLog.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorAttachmentLog.h new file mode 100644 index 00000000..3ffc3c71 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorAttachmentLog.h @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +#import "MSAbstractLog.h" + +/** + * Error attachment log. + */ +@interface MSErrorAttachmentLog : MSAbstractLog + +/** + * Content type (text/plain for text). + */ +@property(nonatomic, copy) NSString *contentType; + +/** + * File name. + */ +@property(nonatomic, copy) NSString *filename; + +/** + * The attachment data. + */ +@property(nonatomic, copy) NSData *data; + +/** + * Initialize an attachment with a given filename and `NSData` object. + * + * @param filename The filename the attachment should get. If nil will get an automatically generated filename. + * @param data The attachment data as `NSData`. + * @param contentType The content type of your data as MIME type. + * + * @return An instance of `MSErrorAttachmentLog`. + */ +- (instancetype)initWithFilename:(NSString *)filename attachmentBinary:(NSData *)data contentType:(NSString *)contentType; + +/** + * Initialize an attachment with a given filename and text. + * + * @param filename The filename the attachment should get. If nil will get an automatically generated filename. + * @param text The attachment text. + * + * @return An instance of `MSErrorAttachmentLog`. + */ +- (instancetype)initWithFilename:(NSString *)filename attachmentText:(NSString *)text; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorReport.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorReport.h new file mode 100644 index 00000000..cf524a26 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSErrorReport.h @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +@class MSDevice; + +@interface MSErrorReport : NSObject + +/** + * UUID for the crash report. + */ +@property(nonatomic, copy, readonly) NSString *incidentIdentifier; + +/** + * UUID for the app installation on the device. + */ +@property(nonatomic, copy, readonly) NSString *reporterKey; + +/** + * Signal that caused the crash. + */ +@property(nonatomic, copy, readonly) NSString *signal; + +/** + * Exception name that triggered the crash, nil if the crash was not caused by an exception. + */ +@property(nonatomic, copy, readonly) NSString *exceptionName; + +/** + * Exception reason, nil if the crash was not caused by an exception. + */ +@property(nonatomic, copy, readonly) NSString *exceptionReason; + +/** + * Date and time the app started, nil if unknown. + */ +@property(nonatomic, readonly, strong) NSDate *appStartTime; + +/** + * Date and time the error occurred, nil if unknown + */ +@property(nonatomic, readonly, strong) NSDate *appErrorTime; + +/** + * Device information of the app when it crashed. + */ +@property(nonatomic, readonly, strong) MSDevice *device; + +/** + * Identifier of the app process that crashed. + */ +@property(nonatomic, readonly, assign) NSUInteger appProcessIdentifier; + +/** + * Indicates if the app was killed while being in foreground from the iOS. + * + * This can happen if it consumed too much memory or the watchdog killed the app because it took too long to startup or blocks the main + * thread for too long, or other reasons. See Apple documentation: + * https://developer.apple.com/library/ios/qa/qa1693/_index.html. + * + * @return YES if the details represent an app kill instead of a crash. + * + * @see `[MSCrashes didReceiveMemoryWarningInLastSession]` + */ +- (BOOL)isAppKill; + +@end diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSService.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSService.h new file mode 100644 index 00000000..59997b82 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSService.h @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_SERVICE_H +#define MS_SERVICE_H + +#import + +/** + * Protocol declaring service logic. + */ +@protocol MSService + +/** + * Enable or disable this service. + * The state is persisted in the device's storage across application launches. + * + * @param isEnabled Whether this service is enabled or not. + * + * @see isEnabled + */ ++ (void)setEnabled:(BOOL)isEnabled; + +/** + * Indicates whether this service is enabled. + * + * @return `YES` if this service is enabled, `NO` if it is not. + * + * @see setEnabled: + */ ++ (BOOL)isEnabled; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSServiceAbstract.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSServiceAbstract.h new file mode 100644 index 00000000..3e5e8dec --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSServiceAbstract.h @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#ifndef MS_SERVICE_ABSTRACT_H +#define MS_SERVICE_ABSTRACT_H + +#import + +#import "MSService.h" + +@protocol MSChannelGroupProtocol; + +/** + * Abstraction of services common logic. + * This class is intended to be subclassed only not instantiated directly. + */ +@interface MSServiceAbstract : NSObject + +/** + * The flag indicates whether the service is started from application or not. + */ +@property(nonatomic, assign) BOOL startedFromApplication; + +/** + * Start this service with a channel group. Also sets the flag that indicates that a service has been started. + * + * @param channelGroup channel group used to persist and send logs. + * @param appSecret app secret for the SDK. + * @param token default transmission target token for this service. + * @param fromApplication indicates whether the service started from an application or not. + */ +- (void)startWithChannelGroup:(id)channelGroup + appSecret:(NSString *)appSecret + transmissionTargetToken:(NSString *)token + fromApplication:(BOOL)fromApplication; + +/** + * Update configuration when the service requires to start again. This method should only be called if the service is started from libraries + * and then is being started from an application. + * + * @param appSecret app secret for the SDK. + * @param token default transmission target token for this service. + */ +- (void)updateConfigurationWithAppSecret:(NSString *)appSecret transmissionTargetToken:(NSString *)token; + +/** + * Checks if the service needs the application secret. + * + * @return `YES` if the application secret is required, `NO` otherwise. + */ +- (BOOL)isAppSecretRequired; + +@end + +#endif diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSWrapperCrashesHelper.h b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSWrapperCrashesHelper.h new file mode 100644 index 00000000..d08ed294 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Headers/MSWrapperCrashesHelper.h @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#import + +#import "MSCrashHandlerSetupDelegate.h" + +NS_ASSUME_NONNULL_BEGIN + +@class MSErrorReport; +@class MSErrorAttachmentLog; +@class MSException; + +/** + * This general class allows wrappers to supplement the Crashes SDK with their own behavior. + */ +@interface MSWrapperCrashesHelper : NSObject + +/** + * Sets the crash handler setup delegate. + * + * @param delegate The delegate to set. + */ ++ (void)setCrashHandlerSetupDelegate:(id)delegate; + +/** + * Gets the crash handler setup delegate. + * + * @return The delegate being used by Crashes. + */ ++ (id)getCrashHandlerSetupDelegate; + +/** + * Enables or disables automatic crash processing. + * + * @param automaticProcessing Passing NO causes SDK not to send reports immediately, even if "Always Send" is true. + */ ++ (void)setAutomaticProcessing:(BOOL)automaticProcessing; + +/** + * Gets a list of unprocessed crash reports. Will block until the service starts. + * + * @return An array of unprocessed error reports. + */ ++ (NSArray *)unprocessedCrashReports; + +/** + * Resumes processing for a given subset of the unprocessed reports. + * + * @param filteredIds An array containing the errorId/incidentIdentifier of each report that should be sent. + * + * @return YES if should "Always Send" is true. + */ ++ (BOOL)sendCrashReportsOrAwaitUserConfirmationForFilteredIds:(NSArray *)filteredIds; + +/** + * Sends error attachments for a particular error report. + * + * @param errorAttachments An array of error attachments that should be sent. + * @param incidentIdentifier The identifier of the error report that the attachments will be associated with. + */ ++ (void)sendErrorAttachments:(NSArray *)errorAttachments withIncidentIdentifier:(NSString *)incidentIdentifier; + +/** + * Track handled exception directly as model form. + * This API is used by wrapper SDKs. + * + * @param exception model form exception. + * @param properties dictionary of properties. + * @param attachments a list of attachments. + * + * @return handled error ID. + */ ++ (nullable NSString *)trackModelException:(MSException *)exception + withProperties:(nullable NSDictionary *)properties + withAttachments:(nullable NSArray *)attachments; + +/** + * Get a generic error report representation for an handled exception. + * This API is used by wrapper SDKs. + * + * @param errorID handled error ID. + * + * @return an error report. + */ ++ (MSErrorReport *)buildHandledErrorReportWithErrorID:(NSString *)errorID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Modules/module.modulemap b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Modules/module.modulemap new file mode 100644 index 00000000..58d5076e --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module AppCenterCrashes { + umbrella header "AppCenterCrashes.h" + + export * + module * { export * } + + link framework "Foundation" + link "c++" + link "z" +} diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Resources/Info.plist b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Resources/Info.plist new file mode 100644 index 00000000..048598a5 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,44 @@ + + + + + BuildMachineOSBuild + 19F101 + CFBundleDevelopmentRegion + English + CFBundleExecutable + AppCenterCrashes + CFBundleIdentifier + com.microsoft.appcenter.crashes + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + AppCenterCrashes + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1 + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 1.0 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 11C505 + DTPlatformVersion + GM + DTSDKBuild + 19B90 + DTSDKName + macosx10.15 + DTXcode + 1130 + DTXcodeBuild + 11C505 + LSMinimumSystemVersion + 10.9 + + diff --git a/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/Current b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/Current new file mode 120000 index 00000000..8c7e5a66 --- /dev/null +++ b/Pods/AppCenter/AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 17c41bb6..71e047f7 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,4 +1,7 @@ PODS: + - AppCenter/Core (3.3.1) + - AppCenter/Crashes (3.3.1): + - AppCenter/Core - LetsMove (1.24) - Preferences (1.0.1) - ShortcutRecorder (3.1) @@ -6,6 +9,7 @@ PODS: - SwiftyMarkdown (1.1.0) DEPENDENCIES: + - AppCenter/Crashes (= 3.3.1) - LetsMove (from `https://github.com/lwouis/LetsMove.git`, commit `7abf4daed1a25218f2b52f2dfd190aee5a50071c`) - Preferences (= 1.0.1) - ShortcutRecorder (from `https://github.com/Kentzo/ShortcutRecorder.git`, commit `f718220854575bad86fa89dd2bb3decd0b14b2b0`) @@ -14,6 +18,7 @@ DEPENDENCIES: SPEC REPOS: trunk: + - AppCenter - Preferences - SwiftyMarkdown @@ -36,12 +41,13 @@ CHECKOUT OPTIONS: :git: https://github.com/Kentzo/ShortcutRecorder.git SPEC CHECKSUMS: + AppCenter: 76ecf7e959a68e36b0fd314e8dc5897660214423 LetsMove: fefe56bc7bc7fb7d37049e28a14f297961229fc5 Preferences: a5afbe0ae3e6bd886328b1960f4998e65d58f2c4 ShortcutRecorder: fdf620aca34101b0cba3b10fca815e0459254189 Sparkle: ea073ba9c69cee3ebaab8685ba1e732e14d249f7 SwiftyMarkdown: 033abc9dad9a37903f81aec5188cade436f40520 -PODFILE CHECKSUM: ccd8822c0e64188b9aaf554188c72ef13a7c81f4 +PODFILE CHECKSUM: 356279aa09d4eac74abe0d828422386fe7345766 COCOAPODS: 1.9.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index e112f18c..5d470c2f 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,6 +7,15 @@ objects = { /* Begin PBXAggregateTarget section */ + A3282A5B2437E609EEB85861D7ECE717 /* AppCenter */ = { + isa = PBXAggregateTarget; + buildConfigurationList = D0944D0DEFF9CDF0CBE6D4A41B195020 /* Build configuration list for PBXAggregateTarget "AppCenter" */; + buildPhases = ( + ); + dependencies = ( + ); + name = AppCenter; + }; ED77B4B88587C894E85C361023D67C53 /* Sparkle */ = { isa = PBXAggregateTarget; buildConfigurationList = 2C8D06A2289713323892B3638F08AC0B /* Build configuration list for PBXAggregateTarget "Sparkle" */; @@ -19,315 +28,326 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 00A7403C910B228BC60CE384D22DD116 /* SRKeyEquivalentModifierMaskTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 80849E177BE72C32FDABBD20A67CFBD4 /* SRKeyEquivalentModifierMaskTransformer.m */; }; - 020E098C253F02CF5A2F89A505CA37EE /* nl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = B21676942A82066A5F890982D52AF601 /* nl.lproj */; }; - 052DFF48B54864D445EC884543F61EA8 /* Preferences-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BEECA2C7DA4B21D9E8EDAC9D1A93589 /* Preferences-dummy.m */; }; - 056DD70A6AF75515312A3B0F3D08A6A7 /* ru.lproj in Resources */ = {isa = PBXBuildFile; fileRef = C53D764C43A51376171AD41E99B8ABE2 /* ru.lproj */; }; - 09F6953D0A355AEEDD4DE40E8FD483B6 /* PFMoveApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2F3145B49D9DB3BAE51E8B7A3930F8 /* PFMoveApplication.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A1237C0C6C64DAE78E6F4CD771CA4B0 /* da.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 70A6FDD9C55154B728466D71B09FA6C8 /* da.lproj */; }; - 0EC5CD27183E62F0F15E6A3F73BA4E78 /* pt.lproj in Resources */ = {isa = PBXBuildFile; fileRef = A26EF044A853930BC884BE7CA27C0709 /* pt.lproj */; }; - 0F8E3C25F030CA95F52DCF21F516E66A /* SRShortcutAction.h in Headers */ = {isa = PBXBuildFile; fileRef = CEC77DC6041965487A3D514C234927D2 /* SRShortcutAction.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1072B15890EA4B05629A311A9CB011F1 /* ca.lproj in Resources */ = {isa = PBXBuildFile; fileRef = F2B661DB781A79D318F3CC07F5435C8F /* ca.lproj */; }; - 10F338979909A45B2DEB7AA8892046F4 /* tr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 39E244726490309AE7A83515492E543F /* tr.lproj */; }; - 11AD8D91EE9831FF03509804F70A1623 /* nb.lproj in Resources */ = {isa = PBXBuildFile; fileRef = EE79D0583628F279ADD796C9A83BE80E /* nb.lproj */; }; - 13D1860FD3212789A193B0BDCE8CBBB5 /* SwiftyMarkdown+macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7C13E18AAFD27EA81E698E02DA73A66 /* SwiftyMarkdown+macOS.swift */; }; - 19C57F8B6328BE9F770A07F168426903 /* PFMoveApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = AEE608F7ACB94C5F356E15148F080C37 /* PFMoveApplication.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 00A7403C910B228BC60CE384D22DD116 /* SRKeyEquivalentModifierMaskTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 61588722256C7D5213D1D634C987975C /* SRKeyEquivalentModifierMaskTransformer.m */; }; + 020E098C253F02CF5A2F89A505CA37EE /* nl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = BE1F886A7666419789347236A3CC30A1 /* nl.lproj */; }; + 052DFF48B54864D445EC884543F61EA8 /* Preferences-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0342F3DB3D1C4AFBF800919AD26A7CFA /* Preferences-dummy.m */; }; + 056DD70A6AF75515312A3B0F3D08A6A7 /* ru.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 89DE81C3C03F619A343BD35C093E5413 /* ru.lproj */; }; + 09F6953D0A355AEEDD4DE40E8FD483B6 /* PFMoveApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 319CDA7BDD38A19BFE18B28E1C16A6BA /* PFMoveApplication.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A1237C0C6C64DAE78E6F4CD771CA4B0 /* da.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 71387DF044CF4930981758E67D5298C6 /* da.lproj */; }; + 0EC5CD27183E62F0F15E6A3F73BA4E78 /* pt.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 15C09E116B4392386E70AB55734D3774 /* pt.lproj */; }; + 0F8E3C25F030CA95F52DCF21F516E66A /* SRShortcutAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 10969276117E1256B7C78110A8A29395 /* SRShortcutAction.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1072B15890EA4B05629A311A9CB011F1 /* ca.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 5139D59E558567E92066E4DF0B96FA71 /* ca.lproj */; }; + 10F338979909A45B2DEB7AA8892046F4 /* tr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = ED4D57137FC82AE40E8E84556CC4D814 /* tr.lproj */; }; + 11AD8D91EE9831FF03509804F70A1623 /* nb.lproj in Resources */ = {isa = PBXBuildFile; fileRef = BB31755D2FE9551F95AFC4D6FCE4C340 /* nb.lproj */; }; + 13D1860FD3212789A193B0BDCE8CBBB5 /* SwiftyMarkdown+macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF2B28AD283E3F2F7CFD870E16C72351 /* SwiftyMarkdown+macOS.swift */; }; + 19C57F8B6328BE9F770A07F168426903 /* PFMoveApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = F44F70E9C6F1F3A51D6309CFB670BECE /* PFMoveApplication.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 1C1D780655719138B6DD8328F5D71741 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A5CD5AFD55E86C5D69812AE01A9770 /* Cocoa.framework */; }; - 1F20EA886DD6BF2EE1017F54FF5BB295 /* SRShortcutFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E52FE8EE16AB23687F2DDB5B82CF57E /* SRShortcutFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1F20FB330787775FB0E9F0CE37EFE52F /* SRShortcutValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 662E5FFCDBDE2567B26349BCE7AE0426 /* SRShortcutValidator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2042A55FF7A1761CB25D0D86A254C442 /* hu.lproj in Resources */ = {isa = PBXBuildFile; fileRef = BA2813DF3B2085938C375DF45DBDDBEF /* hu.lproj */; }; - 20F20DA2B30091851980ED6F99A6F700 /* SRCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7478E0A2FD299724C1ACF90FF3696EB8 /* SRCommon.m */; }; - 213B07126B15B2E4F5FD1A26D8334D25 /* SRRecorderControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 972CC2B8C0757D32A4E04B11EC5E843B /* SRRecorderControl.m */; }; - 24861984927BBA000705C74347889BB5 /* SRRecorderControlStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 70E800F0EC8C3C4121F7AD5C9410EFE5 /* SRRecorderControlStyle.m */; }; - 259277CEED53CBF04C1C40ACF7E834E9 /* ja.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 33F831F9EB850C9E4D970D22A9DE5F58 /* ja.lproj */; }; - 2E15CAB0A52B69D3FA0D70119BBE8E53 /* LetsMove-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AB76A00742E47BBCE180CAF5EE223ECF /* LetsMove-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2E94FD46CBC3E5D0224C95A723D7C3F6 /* SRKeyBindingTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 30C88EEDE19AB759F200A3B1A738E8C5 /* SRKeyBindingTransformer.m */; }; - 31194073C810A8C763DB8B070D931BE2 /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 1D50037F82D3616F05DDF23C7C4DEF25 /* es.lproj */; }; - 318290C1F3C1A2EC2FD576E215621EBB /* SRShortcutAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C702E5C682552F77DB84CEF052DAFA4 /* SRShortcutAction.m */; }; - 37C40ADF03583366ED05A7392F44D253 /* SRRecorderControlStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 928AFF417E86B199D2E9B007ACAAB4E7 /* SRRecorderControlStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3CF2CD18FB573A30174F95AD6BA563C4 /* ja.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 324A18FF751B7B1DDB4E6C657BEB37C6 /* ja.lproj */; }; + 1F20EA886DD6BF2EE1017F54FF5BB295 /* SRShortcutFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 73B9D35E00213BE801F0EFA72C8CBE98 /* SRShortcutFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1F20FB330787775FB0E9F0CE37EFE52F /* SRShortcutValidator.h in Headers */ = {isa = PBXBuildFile; fileRef = 082A0E00373C623A45DEB59C01C7FF9B /* SRShortcutValidator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2042A55FF7A1761CB25D0D86A254C442 /* hu.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 656D16926B6906C38A7C53C29211C691 /* hu.lproj */; }; + 20F20DA2B30091851980ED6F99A6F700 /* SRCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = E007B81FDB12CD80FC731515B7B8758F /* SRCommon.m */; }; + 213B07126B15B2E4F5FD1A26D8334D25 /* SRRecorderControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5306D3E890920B2B8C77FB13B05C99 /* SRRecorderControl.m */; }; + 23F2B9243095A9EB5F4FEBE106673121 /* Pods-alt-tab-macos-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9398EB710E40217E35064D9686CCAD21 /* Pods-alt-tab-macos-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 24861984927BBA000705C74347889BB5 /* SRRecorderControlStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F0127670A14E03D0703B558424F0E36 /* SRRecorderControlStyle.m */; }; + 259277CEED53CBF04C1C40ACF7E834E9 /* ja.lproj in Resources */ = {isa = PBXBuildFile; fileRef = ACE36A5A4B495CD996036644C83A67ED /* ja.lproj */; }; + 2E15CAB0A52B69D3FA0D70119BBE8E53 /* LetsMove-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DE480A6F7C010852FEEDDB220263870D /* LetsMove-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2E94FD46CBC3E5D0224C95A723D7C3F6 /* SRKeyBindingTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 288C82B6FFF955CF055E443690DCAC21 /* SRKeyBindingTransformer.m */; }; + 31194073C810A8C763DB8B070D931BE2 /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = F5A7D97E3CE4ADC900E3CF42BECC8CCB /* es.lproj */; }; + 318290C1F3C1A2EC2FD576E215621EBB /* SRShortcutAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 0741A4F5AA695E6959A412E55707C588 /* SRShortcutAction.m */; }; + 37C40ADF03583366ED05A7392F44D253 /* SRRecorderControlStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 820682A23CECDA05F4F32C1F77C5A7ED /* SRRecorderControlStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CF2CD18FB573A30174F95AD6BA563C4 /* ja.lproj in Resources */ = {isa = PBXBuildFile; fileRef = FEB4D1E78729A1E1ADB06252A3FF8050 /* ja.lproj */; }; 3F947146B2A0BCDA6F394E852604BE80 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8361FDCE534C28CE8EACD6B796A834DB /* Carbon.framework */; }; - 49F0E59AADFB6E9B91E5AF2CD00E7F3F /* util.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8147D026D72FE164E16D4AE2AFD6808 /* util.swift */; }; - 4BFE0CF9902E3C8141E725AB16276440 /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 56FA438195E701402987ADE7D32DBC3B /* en.lproj */; }; - 4CB8337198FDE1993480CE70C221FABB /* sr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = A57748384CD9843F2EB228A401DE5944 /* sr.lproj */; }; - 500A10E28FCAAFB0A968CCED417B3275 /* pt_BR.lproj in Resources */ = {isa = PBXBuildFile; fileRef = C9C45730F9EB9F5D8FA6191C6BE61F9B /* pt_BR.lproj */; }; - 568560CA36FE09111F664C6BBA404742 /* zh_TW.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 60EF6FF60A94EF54E652E091F59466F8 /* zh_TW.lproj */; }; - 5B317668F69ADABCAD5AE47A1CE39D69 /* sk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = CEFC61EA791D4A6418CCFBE1787D6659 /* sk.lproj */; }; - 5B56114FA0E0C817FA294C155CB4E20D /* Pods-alt-tab-macos-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A50F71AC7B7C29C8922102AA39EFE0C /* Pods-alt-tab-macos-dummy.m */; }; - 5C51919BE3EF096A7D986B57A51AB0D0 /* SRKeyEquivalentTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = E3FC5D75A84499105F55009A04A10DD7 /* SRKeyEquivalentTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E615985AE6C7D5B9238F364549E9677 /* LetsMove-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CFCC52DA333A8C35C6991FC1CD3DF26E /* LetsMove-dummy.m */; }; - 5EC2F2D2F2DF932A3F9E94B95287E797 /* SRShortcut.m in Sources */ = {isa = PBXBuildFile; fileRef = 9315798BAC6D65C43AF979A33F184D6B /* SRShortcut.m */; }; - 60D6AC3B99212F040A4BD045B1B7DCE3 /* PreferencesStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BF349E8E070A81986C2D8DB5FB9BF3F /* PreferencesStyle.swift */; }; - 624A88E7083E922D1E7A468628EF6763 /* SRKeyBindingTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = D5556CA390CFFD665D6FF530DA0D91B7 /* SRKeyBindingTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 646512A9E87882737F42741DF820A248 /* SRKeyEquivalentModifierMaskTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE7A8E29FBC46A9DC0414F3FA56900F /* SRKeyEquivalentModifierMaskTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 66197FFF0B0D9B0F40D4EB34B2F0B15B /* SRKeyCodeTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C25347426FB8281EC7C10000B645110 /* SRKeyCodeTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 67DCED0B71E2F604884589FD8415F43C /* th.lproj in Resources */ = {isa = PBXBuildFile; fileRef = D5683EEA745922A2D28A0305E506B8E7 /* th.lproj */; }; - 69D5B8B43F71C91C15DE6A606B791F5D /* mk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 09622939675F4EE31BBE83E19E72DEEB /* mk.lproj */; }; - 6C7847B5EE79878D537FF196B7F0ECFD /* pl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 0F3CEF0AA17857166E37EA9AF4E1434D /* pl.lproj */; }; - 71662F5F1E7D06EE352DAD05FEA3D54C /* SRRecorderControl.h in Headers */ = {isa = PBXBuildFile; fileRef = B6A13407B53E94994BC9C320535D29A3 /* SRRecorderControl.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 729B7AE3AE6C35966D88D0C140BFE6B3 /* ca.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3C1345C5BF8561E71A2D26F0C2A1CDFC /* ca.lproj */; }; - 73D8666B795CEA8E4C14717D8F8A963B /* SegmentedControlStyleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B0A57CA6E83EF929BA22189DC6023E0 /* SegmentedControlStyleViewController.swift */; }; - 74082A600D2E1D2A7D6082B305F25731 /* sk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 66E66FA2D985FDA3D5737872F7011F2A /* sk.lproj */; }; - 74A325B54E70CDB34367DF5ACE33D146 /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F0B03D26498F9C489E7B11F301D844 /* Localization.swift */; }; - 7865590A2BE59243B14AA920CB802D16 /* SRCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E0A1823A158947EDEAD09D136889AB2 /* SRCommon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7CB7460CEF50FA8AE32305B967DF611A /* pl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 276F9532825685CAED56EFAB4A9536A9 /* pl.lproj */; }; - 7FD23DD8147E1586EF1B121F368855F2 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F37624E4A3C1F285523C7F618E51B07 /* PreferencesWindowController.swift */; }; - 826C126D2445D0F2586B6B3B671B40A1 /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 8A1476336B2A08A494AF955FC91C66CA /* it.lproj */; }; - 837BD56009CE3487ED907F825D51F478 /* SwiftyMarkdown-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F694A0EB56716B4A0C509AC2185C2B3E /* SwiftyMarkdown-dummy.m */; }; - 84DA043E377D11D7E4BA94DF9CF0E60A /* nb.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 6A9B406A74D0B3CDED2DACA57648AD7D /* nb.lproj */; }; - 8558903ED5DF4CF7C139032314286244 /* SRKeyEquivalentTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 50A0AF0D11EA81595B52AC846BAADCDA /* SRKeyEquivalentTransformer.m */; }; - 86FEB1A2826393B1B6F3650EE778C5EC /* PreferencesTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF6C4472F2059963947D0EF3897F901 /* PreferencesTabViewController.swift */; }; - 88044B1C761CA2BD4F17ADE1CFEAE3CD /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 148BB5019759347EBD8283EB7841FF50 /* en.lproj */; }; - 890BDCB72A2DE7D73FE21F8DCDE993B1 /* String+SwiftyMarkdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3CF45DBF333E311734EDC683223961D /* String+SwiftyMarkdown.swift */; }; - 8999CEBAA3A313F1C8544DC1D581B339 /* cs.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E0FB4CDE9491FC1C156B7325AE1D8857 /* cs.lproj */; }; - 8C500482DF0DA821FBFD71A84CD466AD /* ko.lproj in Resources */ = {isa = PBXBuildFile; fileRef = EC118EC31AD795CC3304602F21EF2540 /* ko.lproj */; }; - 8F1D782BD8C586C96505E49EEC60BA36 /* Pods-alt-tab-macos-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9398EB710E40217E35064D9686CCAD21 /* Pods-alt-tab-macos-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8FA35CBA2D53AA65111A9BB84328D8EA /* ShortcutRecorder-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 389D17F51E74ECE6DD3DD97BB7BFC5EC /* ShortcutRecorder-dummy.m */; }; - 9620CFD7DD4876E61B96B0159377215C /* ToolbarItemStyleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD9C32777111FCAC14F8E11E1CA40BBB /* ToolbarItemStyleViewController.swift */; }; - 985F94722BB2E4A7E884FC402B0B449E /* zh-Hant.lproj in Resources */ = {isa = PBXBuildFile; fileRef = DDCD54AC8BC1D62563C3CB60675A4D26 /* zh-Hant.lproj */; }; - 995FF511BD514AC60699AF6D02149A1F /* ro.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E3DE9B5897A7E9369DB09018EA1D199F /* ro.lproj */; }; + 49F0E59AADFB6E9B91E5AF2CD00E7F3F /* util.swift in Sources */ = {isa = PBXBuildFile; fileRef = 332D4357367A02FCC59B72B641F7F7F0 /* util.swift */; }; + 4BFE0CF9902E3C8141E725AB16276440 /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E4982267AB80949CCA40853FC2B30266 /* en.lproj */; }; + 4CB8337198FDE1993480CE70C221FABB /* sr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 8B0C77CE14DC0476C374C2E9CF78848F /* sr.lproj */; }; + 500A10E28FCAAFB0A968CCED417B3275 /* pt_BR.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3A7B85983E13701082563CD57CB38C47 /* pt_BR.lproj */; }; + 568560CA36FE09111F664C6BBA404742 /* zh_TW.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 15F57D026F2DFA8FA1E4A7ACA1639BCB /* zh_TW.lproj */; }; + 5B317668F69ADABCAD5AE47A1CE39D69 /* sk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 5A2869C464EF9925368A3BE3206B85C6 /* sk.lproj */; }; + 5C51919BE3EF096A7D986B57A51AB0D0 /* SRKeyEquivalentTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = F1B545B7425D9FC19CD03190DAF2EBB9 /* SRKeyEquivalentTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E615985AE6C7D5B9238F364549E9677 /* LetsMove-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 437FA3EB9DCE5271C46D873B8B9DB858 /* LetsMove-dummy.m */; }; + 5EC2F2D2F2DF932A3F9E94B95287E797 /* SRShortcut.m in Sources */ = {isa = PBXBuildFile; fileRef = EEBA571B2DE5FEE6EC76C2CC0DFBAF08 /* SRShortcut.m */; }; + 60D6AC3B99212F040A4BD045B1B7DCE3 /* PreferencesStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34C582D8EE2767CF77DB606A96D4AD6 /* PreferencesStyle.swift */; }; + 624A88E7083E922D1E7A468628EF6763 /* SRKeyBindingTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 811AF957C8F98810F829A6819A743DCA /* SRKeyBindingTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 646512A9E87882737F42741DF820A248 /* SRKeyEquivalentModifierMaskTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 81DE77E3ABD1A29BD2713A4D11F67CE9 /* SRKeyEquivalentModifierMaskTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 66197FFF0B0D9B0F40D4EB34B2F0B15B /* SRKeyCodeTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B24D18BE572CB16C5CF79E2DCF21B04 /* SRKeyCodeTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 67DCED0B71E2F604884589FD8415F43C /* th.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 29E58BA20BBAC57A39F480EB23E1021A /* th.lproj */; }; + 69D5B8B43F71C91C15DE6A606B791F5D /* mk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = C6180A0EBF570BF69216297CE251E8F0 /* mk.lproj */; }; + 6C7847B5EE79878D537FF196B7F0ECFD /* pl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 7F145D505D7230B79E24DEECC6028B79 /* pl.lproj */; }; + 71662F5F1E7D06EE352DAD05FEA3D54C /* SRRecorderControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1969017D600BE626851CD806952E2D13 /* SRRecorderControl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 729B7AE3AE6C35966D88D0C140BFE6B3 /* ca.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E0A129DF839F952D338F5A89955C42FC /* ca.lproj */; }; + 73D8666B795CEA8E4C14717D8F8A963B /* SegmentedControlStyleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24DDA8269F802300DFD0499698DB26AC /* SegmentedControlStyleViewController.swift */; }; + 74082A600D2E1D2A7D6082B305F25731 /* sk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 28D5AE036BF46C20B791DC5852B80EBD /* sk.lproj */; }; + 74A325B54E70CDB34367DF5ACE33D146 /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F03A58BDB8C59710E73EEB876AA054 /* Localization.swift */; }; + 7865590A2BE59243B14AA920CB802D16 /* SRCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 1585C889C66C1758F09C157FD01DEC56 /* SRCommon.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7CB7460CEF50FA8AE32305B967DF611A /* pl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 1E0D8BBF7C9B018CC89820F932AFA5BC /* pl.lproj */; }; + 7FD23DD8147E1586EF1B121F368855F2 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DB64C0E8ED28C89750CA91E26927FBD /* PreferencesWindowController.swift */; }; + 826C126D2445D0F2586B6B3B671B40A1 /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 4DA48074D2DC92D27D85F526ABC448BE /* it.lproj */; }; + 837BD56009CE3487ED907F825D51F478 /* SwiftyMarkdown-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CDDE9C7FFB0BF5AE15119B44012F895E /* SwiftyMarkdown-dummy.m */; }; + 84DA043E377D11D7E4BA94DF9CF0E60A /* nb.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 017FEC1832C48DD0EC0133AFE9E7F064 /* nb.lproj */; }; + 8558903ED5DF4CF7C139032314286244 /* SRKeyEquivalentTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = AA85C06212529EE5384E1421038B038E /* SRKeyEquivalentTransformer.m */; }; + 86FEB1A2826393B1B6F3650EE778C5EC /* PreferencesTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C379EC135B54091AD213CEC2969A554C /* PreferencesTabViewController.swift */; }; + 88044B1C761CA2BD4F17ADE1CFEAE3CD /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = AC0E1E7F042DF68BABF37F2EF0A5DBF9 /* en.lproj */; }; + 890BDCB72A2DE7D73FE21F8DCDE993B1 /* String+SwiftyMarkdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A1CB113E8DA8EBF59C124568F02FAAA /* String+SwiftyMarkdown.swift */; }; + 8999CEBAA3A313F1C8544DC1D581B339 /* cs.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 937F8245E409BF02E2D0F6FB08B3DBDF /* cs.lproj */; }; + 8C500482DF0DA821FBFD71A84CD466AD /* ko.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 5D4A3A483810F2B5AA9B45A8580DF9E3 /* ko.lproj */; }; + 8FA35CBA2D53AA65111A9BB84328D8EA /* ShortcutRecorder-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E2DF7AD91DAD281DCE7D0C35AC369394 /* ShortcutRecorder-dummy.m */; }; + 9620CFD7DD4876E61B96B0159377215C /* ToolbarItemStyleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D255C3E9B9B3F38F1063FCBE38481E56 /* ToolbarItemStyleViewController.swift */; }; + 985F94722BB2E4A7E884FC402B0B449E /* zh-Hant.lproj in Resources */ = {isa = PBXBuildFile; fileRef = ED52501281260567C10634577079217F /* zh-Hant.lproj */; }; + 995FF511BD514AC60699AF6D02149A1F /* ro.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 6C5CC2D4785234C184406001C6340B1E /* ro.lproj */; }; 9B1015EC076147887BA26E2AE160FEF9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A5CD5AFD55E86C5D69812AE01A9770 /* Cocoa.framework */; }; - 9C725C84B6B0BD6649A2D7CCA3E08FAA /* SwiftyTokeniser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F88F8E80B146D48943BB77C74278C42 /* SwiftyTokeniser.swift */; }; - 9D07D75F7C84943BDCE3ABC491CD59D1 /* LetsMove.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DCA1A0D659A7387F595FB5B43D5372C /* LetsMove.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A2CC1A84A9C146A91EF5B68270D0F06C /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = DD6AFCD8B457CF70372B8514509C413F /* de.lproj */; }; - A2FCC58CB9470201B66FE93E38C2EEBC /* ShortcutRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 873F3E775BAC8098A237A45C06412D91 /* ShortcutRecorder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C725C84B6B0BD6649A2D7CCA3E08FAA /* SwiftyTokeniser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A8C95E879BED34DCD192CD70676176F /* SwiftyTokeniser.swift */; }; + 9D07D75F7C84943BDCE3ABC491CD59D1 /* LetsMove.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B534AB7FBC0832E46A58B81EC404D41 /* LetsMove.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A2CC1A84A9C146A91EF5B68270D0F06C /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = CCBF2A83B0C3430729A53DF2A0BCF723 /* de.lproj */; }; + A2FCC58CB9470201B66FE93E38C2EEBC /* ShortcutRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = D471658D32EDC44AACCCF959A8F73422 /* ShortcutRecorder.h */; settings = {ATTRIBUTES = (Public, ); }; }; A46ABA2611D41C8A890D2DF31B4B2504 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A5CD5AFD55E86C5D69812AE01A9770 /* Cocoa.framework */; }; - A4E39AAA30EF40466757270F0F736814 /* SRShortcutController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9037168CA94D092844678390BF36F285 /* SRShortcutController.m */; }; - A515F0D69E74E71489364F47E1A5513E /* SRModifierFlagsTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 95829DA5F921A137F1F6E2628BA30082 /* SRModifierFlagsTransformer.m */; }; - A6543098065FB7C29E24719462ED3CD1 /* UserInteractionPausableWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF2FDF50A2FD567398771682B97B897 /* UserInteractionPausableWindow.swift */; }; - A6C76F2FFFDCF82636C355053430B94D /* ShortcutRecorder-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DD1EDE447D15CF5739FA2D077648FC9 /* ShortcutRecorder-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AB986179D17EE4638FF869F4B77A08CC /* SRShortcutController.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8BCD816EFD85C046AE89262528583B /* SRShortcutController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AECE89CE5364011E4C71F28D0F0531E6 /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = D3F6CAE71B6E9F84B78E07936CBB97C1 /* de.lproj */; }; - B125766C333F5D75F1B730C08219F4D9 /* SwiftyMarkdown-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 724F9C6739A2F8BA2CAF538B928201E0 /* SwiftyMarkdown-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B456576A96AF747CDD54551DE86B6E8D /* cs.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 692F0B76CE2E434B3CAC9AD45BF2F741 /* cs.lproj */; }; - B6073B7D340523A56B48E26BD7E72D4A /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = DF048614E5FA4445186715688D540199 /* fr.lproj */; }; - B62D71062B028DC6005EBE8F3A30F83D /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 346A5D15DC41603659A7D13CE2B4D51C /* it.lproj */; }; - B96E7AF6A6260FA5D1E1ED99FC7F22C6 /* nl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E2209A3A1C69B3211F9C75C6913872FF /* nl.lproj */; }; - C1720CEFBCDF891D229E2933A25FB21F /* zh_CN.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 4F78EA3AC4DCBE64892D0152597D1020 /* zh_CN.lproj */; }; - CBF6B269E6C670E063CB93B2A021214E /* SRShortcutFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = ECBC7817C024B1CF45EBFDF10B46BDDB /* SRShortcutFormatter.m */; }; - CECE32B1DBF797B058EB51E7D22C990B /* el.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 5D1F88302E4058298C4246BA8CBEB80C /* el.lproj */; }; - D16D912F8C268F6BA1AAB01B40145A74 /* ru.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 31FAB4EB6BCFE1750B9DDCCF85C3295D /* ru.lproj */; }; - D4C5685605AAB571B346E92AA982E4AD /* Preferences-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C73A36C8B4A5AF2B6DF35A63C89387 /* Preferences-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D94A6C0B6D81E2D9D99B3E5BFE9C74E0 /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = D2033B6F8F980197C76D40AAB302B91C /* es.lproj */; }; - DE3998CDB1667994B70CD3DAC2858695 /* SwiftyLineProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F136ABB8AEC278F9838A207E7CA20B1 /* SwiftyLineProcessor.swift */; }; - DE7DCF5ADAE503201E2D92397107F29B /* sv.lproj in Resources */ = {isa = PBXBuildFile; fileRef = C047F1BCAEC597694D74B4F85EB9DB77 /* sv.lproj */; }; - DF2207C5FFA3D5B05AD7B0A03B4A01CD /* SRShortcut.h in Headers */ = {isa = PBXBuildFile; fileRef = C130A2E80C95B66B87A0B7AE22A295F2 /* SRShortcut.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DF5FE8A4C33449686EE10BE7DFB3EF3D /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 646BB82EA40B8DF1A4AAE13B681E58B5 /* fr.lproj */; }; - E0E3CE66468295446E31F28372866456 /* PreferencePane.swift in Sources */ = {isa = PBXBuildFile; fileRef = D10556F1A37F2213EF692DEF40887397 /* PreferencePane.swift */; }; - E2969FEA71F76C65EE303B90300C38D3 /* SRModifierFlagsTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5413F1AC1964915DDD1D77E76CDC8A5A /* SRModifierFlagsTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E5542ECF452E571B2DBB14284E7D6232 /* zh-Hans.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 81766405980DCB967785BDDE23361C33 /* zh-Hans.lproj */; }; - E641BD12CF3AD3888CF543C07EAC8333 /* pt.lproj in Resources */ = {isa = PBXBuildFile; fileRef = ABAFF6389D638175EE468A4B6BCF3602 /* pt.lproj */; }; - E8B7C953BE74D33A20E34A5374C690CE /* SwiftyMarkdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D16DE36F2395A1FD9867B13883D0968 /* SwiftyMarkdown.swift */; }; - EDA2462B04685D2BBC46D91BE7564B9C /* PreferencesStyleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8438DB082182E152B16A702D9BEB815F /* PreferencesStyleController.swift */; }; - EEB1634EB172198229B0DA244C349A1A /* SRKeyCodeTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0392E1D982316B122CA0B2D4E9B96C31 /* SRKeyCodeTransformer.m */; }; - EF4D2B47722794AED41E79F194547935 /* pt-BR.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 0551EABC34245F5F70AC78BDFFCF8896 /* pt-BR.lproj */; }; - EF6C113655CD1DAC81605D79B575A2B8 /* SRShortcutValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C36ABB90A94BE79B663593081366292 /* SRShortcutValidator.m */; }; - F1BF56FD4BD59ACE35F969146554BAA8 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3DC3E8BA77B5B3168B3187E687E43A47 /* Images.xcassets */; }; + A4E39AAA30EF40466757270F0F736814 /* SRShortcutController.m in Sources */ = {isa = PBXBuildFile; fileRef = 64EF0614B68FD8FCDFC27A334131DC5C /* SRShortcutController.m */; }; + A515F0D69E74E71489364F47E1A5513E /* SRModifierFlagsTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A1BDCD10CC1A9F22EE03E006FFE1FCE /* SRModifierFlagsTransformer.m */; }; + A6543098065FB7C29E24719462ED3CD1 /* UserInteractionPausableWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C5738E5AE3E1FA4482AC852ED2B1114 /* UserInteractionPausableWindow.swift */; }; + A6C76F2FFFDCF82636C355053430B94D /* ShortcutRecorder-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BE7CB05B47C07532F41DF8689E690AD6 /* ShortcutRecorder-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AB986179D17EE4638FF869F4B77A08CC /* SRShortcutController.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB84886802306F850919F9E30383534 /* SRShortcutController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AECE89CE5364011E4C71F28D0F0531E6 /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 807DFAC9DCB5FF7DD080DC6F903EF48E /* de.lproj */; }; + B125766C333F5D75F1B730C08219F4D9 /* SwiftyMarkdown-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C06A33D1E26AA4DC30125DCB455CF77 /* SwiftyMarkdown-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B456576A96AF747CDD54551DE86B6E8D /* cs.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 8C98E9D2E30A810B29580212F87D88C7 /* cs.lproj */; }; + B6073B7D340523A56B48E26BD7E72D4A /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 1C547440E6EB9C1D244231AD3C4272C0 /* fr.lproj */; }; + B62D71062B028DC6005EBE8F3A30F83D /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 4E1624AA6232DF8818FE2A7C47CE7E53 /* it.lproj */; }; + B96E7AF6A6260FA5D1E1ED99FC7F22C6 /* nl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 5D234F0532C4F337EFA9A6921B1B2945 /* nl.lproj */; }; + C1720CEFBCDF891D229E2933A25FB21F /* zh_CN.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 6F4E9DA8B6C0E4F1FACF79B333D3A541 /* zh_CN.lproj */; }; + C4EEB9D0B2592D8EE5A9ED342AC557CE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A5CD5AFD55E86C5D69812AE01A9770 /* Cocoa.framework */; }; + CBF6B269E6C670E063CB93B2A021214E /* SRShortcutFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DD2CFA154D289267DD415910482035AD /* SRShortcutFormatter.m */; }; + CECE32B1DBF797B058EB51E7D22C990B /* el.lproj in Resources */ = {isa = PBXBuildFile; fileRef = F71FF684F5878B18DCD5CFCDFBDA6088 /* el.lproj */; }; + D16D912F8C268F6BA1AAB01B40145A74 /* ru.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 152BB8E948C6D969A6292789CDC41A18 /* ru.lproj */; }; + D4C5685605AAB571B346E92AA982E4AD /* Preferences-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D3F00FECBAC395E72886441C418BC4F7 /* Preferences-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D94A6C0B6D81E2D9D99B3E5BFE9C74E0 /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 6CDF0F496FDE79042B5332838314A69E /* es.lproj */; }; + DE3998CDB1667994B70CD3DAC2858695 /* SwiftyLineProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FE169ECDCBFF2F038121ABB5E39F1E /* SwiftyLineProcessor.swift */; }; + DE7DCF5ADAE503201E2D92397107F29B /* sv.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 302C16081F7540E9F80D5AF9E0B64739 /* sv.lproj */; }; + DF2207C5FFA3D5B05AD7B0A03B4A01CD /* SRShortcut.h in Headers */ = {isa = PBXBuildFile; fileRef = FC2DEDF38F8C0D8F09B15C4D2DE839A4 /* SRShortcut.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DF5FE8A4C33449686EE10BE7DFB3EF3D /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 4F4ED31F44FCC2F9F15187A441B1A56A /* fr.lproj */; }; + E0E3CE66468295446E31F28372866456 /* PreferencePane.swift in Sources */ = {isa = PBXBuildFile; fileRef = E813715DCA3ECCBF7A50A72C29AE1EFB /* PreferencePane.swift */; }; + E2969FEA71F76C65EE303B90300C38D3 /* SRModifierFlagsTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = ED297791AE45F263F0D523B7C54B0B92 /* SRModifierFlagsTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E5542ECF452E571B2DBB14284E7D6232 /* zh-Hans.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 2D3978C24BD23D0C261459F679314DD4 /* zh-Hans.lproj */; }; + E641BD12CF3AD3888CF543C07EAC8333 /* pt.lproj in Resources */ = {isa = PBXBuildFile; fileRef = A13EC9E9AE071EB90EE3F665D00973BF /* pt.lproj */; }; + E8B7C953BE74D33A20E34A5374C690CE /* SwiftyMarkdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1BF61A44688CBA35C1732F2C6D888BD /* SwiftyMarkdown.swift */; }; + EDA2462B04685D2BBC46D91BE7564B9C /* PreferencesStyleController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D6B2900BE1DDBA86A8075F626DF819 /* PreferencesStyleController.swift */; }; + EEB1634EB172198229B0DA244C349A1A /* SRKeyCodeTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = D1758E19F93FA2577732F67C9BA6F2FA /* SRKeyCodeTransformer.m */; }; + EF4D2B47722794AED41E79F194547935 /* pt-BR.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 6AD1D2F597E3330CABA6245068FBADE3 /* pt-BR.lproj */; }; + EF6C113655CD1DAC81605D79B575A2B8 /* SRShortcutValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 550BCA7368F04AA330E970BDDDBD5A00 /* SRShortcutValidator.m */; }; + F1BF56FD4BD59ACE35F969146554BAA8 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 68E366B8139CC0764E969E2594211529 /* Images.xcassets */; }; F459DB6DE5B5170EC4648779C99574FE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A5CD5AFD55E86C5D69812AE01A9770 /* Cocoa.framework */; }; - F87380A0F9BFC6970A7E72F4F7A2209D /* ko.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E624C4D4700EB7DE413A83FBB83B005E /* ko.lproj */; }; - F8DD35F2A601BAF61B1EA1EA92531663 /* SwiftyMarkdown+iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = D66B2E269BB4DE600FF5BD4EE9C0AA41 /* SwiftyMarkdown+iOS.swift */; }; - FD50D88AF2AB7692F630B7E45B38603E /* sv.lproj in Resources */ = {isa = PBXBuildFile; fileRef = BD8644D140BA89A0A856EC194645F193 /* sv.lproj */; }; - FE5376EB3549F3491ABE070761324AD9 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3A5CD5AFD55E86C5D69812AE01A9770 /* Cocoa.framework */; }; + F87380A0F9BFC6970A7E72F4F7A2209D /* ko.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E38B03F37D95A00F61C6C22F1BA9E143 /* ko.lproj */; }; + F8DD35F2A601BAF61B1EA1EA92531663 /* SwiftyMarkdown+iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = D865AD1F2A3B4CDDF253E9C4015C23BD /* SwiftyMarkdown+iOS.swift */; }; + F94581D089BA9737E8529184FD9F48C9 /* Pods-alt-tab-macos-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A50F71AC7B7C29C8922102AA39EFE0C /* Pods-alt-tab-macos-dummy.m */; }; + FD50D88AF2AB7692F630B7E45B38603E /* sv.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 4BD7C1DBE9E9EF0C43C6F17C9E9B9851 /* sv.lproj */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0CCA584C587AEA50E28D24E7599DE7BC /* PBXContainerItemProxy */ = { + 115420BAE7F6E1FD3C8F239329C90799 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F83960005EA88D0C24A1D277DD0E8667; remoteInfo = LetsMove; }; - 6CE1104FD951FBFE360AB3895E710ABB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 93523582DEC251A9E59F621510B882C3; - remoteInfo = SwiftyMarkdown; - }; - C09E3715D3ED68E8A130C3E458C69ADF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D94AE99BF0C9025247C40F440DC9DB50; - remoteInfo = ShortcutRecorder; - }; - CDD5E7DB19D441ACE862E1D07C47EFFA /* PBXContainerItemProxy */ = { + 3CB2A7F668104E855DCDE9FA0FE15ECE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 080990A33C8E049DC557762B0B4240DB; remoteInfo = Preferences; }; - E63A1D71551B560E3990A4EA6424D7C9 /* PBXContainerItemProxy */ = { + AAE081B017B87D625307A03A1201CDFF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 93523582DEC251A9E59F621510B882C3; + remoteInfo = SwiftyMarkdown; + }; + BB806852C3CB124A4C8BE1A713F2385F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A3282A5B2437E609EEB85861D7ECE717; + remoteInfo = AppCenter; + }; + C87FDBA73C07008C3B575D8E96E1484F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = ED77B4B88587C894E85C361023D67C53; remoteInfo = Sparkle; }; + DB2F4A926219B303EEEADDA72B7B71CD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D94AE99BF0C9025247C40F440DC9DB50; + remoteInfo = ShortcutRecorder; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0392E1D982316B122CA0B2D4E9B96C31 /* SRKeyCodeTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRKeyCodeTransformer.m; path = Library/SRKeyCodeTransformer.m; sourceTree = ""; }; - 0551EABC34245F5F70AC78BDFFCF8896 /* pt-BR.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "pt-BR.lproj"; path = "Resources/pt-BR.lproj"; sourceTree = ""; }; - 09622939675F4EE31BBE83E19E72DEEB /* mk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = mk.lproj; sourceTree = ""; }; - 0BF349E8E070A81986C2D8DB5FB9BF3F /* PreferencesStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencesStyle.swift; path = Sources/Preferences/PreferencesStyle.swift; sourceTree = ""; }; - 0C5A519EA7A7545CE1AF9360B4DC4370 /* SUExport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUExport.h; path = Sparkle.framework/Versions/A/Headers/SUExport.h; sourceTree = ""; }; - 0DCA1A0D659A7387F595FB5B43D5372C /* LetsMove.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = LetsMove.h; sourceTree = ""; }; - 0E0A1823A158947EDEAD09D136889AB2 /* SRCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRCommon.h; path = Library/SRCommon.h; sourceTree = ""; }; - 0F37624E4A3C1F285523C7F618E51B07 /* PreferencesWindowController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencesWindowController.swift; path = Sources/Preferences/PreferencesWindowController.swift; sourceTree = ""; }; - 0F3CEF0AA17857166E37EA9AF4E1434D /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = pl.lproj; sourceTree = ""; }; - 115FD2032F5112342281368206C32500 /* SPUDownloaderDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderDelegate.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h; sourceTree = ""; }; - 14436BE32E82DF766B28D678DC76D1C7 /* SUAppcastItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcastItem.h; path = Sparkle.framework/Versions/A/Headers/SUAppcastItem.h; sourceTree = ""; }; - 148BB5019759347EBD8283EB7841FF50 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = en.lproj; sourceTree = ""; }; - 1A933110C77603F7C964996B2DC21C6C /* Preferences.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Preferences.debug.xcconfig; sourceTree = ""; }; + 017FEC1832C48DD0EC0133AFE9E7F064 /* nb.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = nb.lproj; sourceTree = ""; }; + 0342F3DB3D1C4AFBF800919AD26A7CFA /* Preferences-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Preferences-dummy.m"; sourceTree = ""; }; + 072215C654E9492C93C950E3B738A730 /* SUCodeSigningVerifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUCodeSigningVerifier.h; path = Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h; sourceTree = ""; }; + 0741A4F5AA695E6959A412E55707C588 /* SRShortcutAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcutAction.m; path = Library/SRShortcutAction.m; sourceTree = ""; }; + 082A0E00373C623A45DEB59C01C7FF9B /* SRShortcutValidator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcutValidator.h; path = Library/SRShortcutValidator.h; sourceTree = ""; }; + 0DB64C0E8ED28C89750CA91E26927FBD /* PreferencesWindowController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencesWindowController.swift; path = Sources/Preferences/PreferencesWindowController.swift; sourceTree = ""; }; + 10969276117E1256B7C78110A8A29395 /* SRShortcutAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcutAction.h; path = Library/SRShortcutAction.h; sourceTree = ""; }; + 140A9D054701045C2CD9880B5F11FE04 /* SPUDownloadData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloadData.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloadData.h; sourceTree = ""; }; + 152BB8E948C6D969A6292789CDC41A18 /* ru.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = ru.lproj; sourceTree = ""; }; + 1585C889C66C1758F09C157FD01DEC56 /* SRCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRCommon.h; path = Library/SRCommon.h; sourceTree = ""; }; + 15C09E116B4392386E70AB55734D3774 /* pt.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pt.lproj; path = Resources/pt.lproj; sourceTree = ""; }; + 15F57D026F2DFA8FA1E4A7ACA1639BCB /* zh_TW.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = zh_TW.lproj; sourceTree = ""; }; + 1969017D600BE626851CD806952E2D13 /* SRRecorderControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRRecorderControl.h; path = Library/SRRecorderControl.h; sourceTree = ""; }; + 1B9091F57396DA795DCF54E8B3FAFAB9 /* Sparkle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sparkle.h; path = Sparkle.framework/Versions/A/Headers/Sparkle.h; sourceTree = ""; }; + 1C547440E6EB9C1D244231AD3C4272C0 /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = fr.lproj; sourceTree = ""; }; 1D34F54FDD063F2C6A35284EA34D77AB /* Pods-alt-tab-macos.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-alt-tab-macos.modulemap"; sourceTree = ""; }; - 1D50037F82D3616F05DDF23C7C4DEF25 /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = es.lproj; sourceTree = ""; }; - 1DB0C0E3A1C3091DC0FFBA070D92245D /* SPUDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloader.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloader.h; sourceTree = ""; }; - 1F136ABB8AEC278F9838A207E7CA20B1 /* SwiftyLineProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyLineProcessor.swift; path = Sources/SwiftyMarkdown/SwiftyLineProcessor.swift; sourceTree = ""; }; - 1F2980045E298C0F09548BED9F200223 /* SPUURLRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUURLRequest.h; path = Sparkle.framework/Versions/A/Headers/SPUURLRequest.h; sourceTree = ""; }; - 1F2F3145B49D9DB3BAE51E8B7A3930F8 /* PFMoveApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PFMoveApplication.h; sourceTree = ""; }; - 1FCD1042D51D3FD6F5D42BA414DAAD58 /* SUStandardVersionComparator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUStandardVersionComparator.h; path = Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h; sourceTree = ""; }; + 1E0D8BBF7C9B018CC89820F932AFA5BC /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pl.lproj; path = Resources/pl.lproj; sourceTree = ""; }; + 21D730249C10BEF6B45E5DC7AFF669B7 /* SPUDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloader.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloader.h; sourceTree = ""; }; 22695B85D27AA84F0EA8EC8F1CF1C01C /* Pods-alt-tab-macos-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-alt-tab-macos-acknowledgements.markdown"; sourceTree = ""; }; + 24DDA8269F802300DFD0499698DB26AC /* SegmentedControlStyleViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SegmentedControlStyleViewController.swift; path = Sources/Preferences/SegmentedControlStyleViewController.swift; sourceTree = ""; }; 25071237EE84E6AFD3B12FE9A0664CB9 /* Pods_alt_tab_macos.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_alt_tab_macos.framework; path = "Pods-alt-tab-macos.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 276F9532825685CAED56EFAB4A9536A9 /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pl.lproj; path = Resources/pl.lproj; sourceTree = ""; }; - 28859F748A541603AB300DBDFA62E87D /* LetsMove.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LetsMove.modulemap; sourceTree = ""; }; - 2C36ABB90A94BE79B663593081366292 /* SRShortcutValidator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcutValidator.m; path = Library/SRShortcutValidator.m; sourceTree = ""; }; - 2F88F8E80B146D48943BB77C74278C42 /* SwiftyTokeniser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyTokeniser.swift; path = Sources/SwiftyMarkdown/SwiftyTokeniser.swift; sourceTree = ""; }; - 30C88EEDE19AB759F200A3B1A738E8C5 /* SRKeyBindingTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRKeyBindingTransformer.m; path = Library/SRKeyBindingTransformer.m; sourceTree = ""; }; - 31FAB4EB6BCFE1750B9DDCCF85C3295D /* ru.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = ru.lproj; sourceTree = ""; }; - 324A18FF751B7B1DDB4E6C657BEB37C6 /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = ja.lproj; sourceTree = ""; }; - 33F831F9EB850C9E4D970D22A9DE5F58 /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ja.lproj; path = Resources/ja.lproj; sourceTree = ""; }; - 346A5D15DC41603659A7D13CE2B4D51C /* it.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = it.lproj; path = Resources/it.lproj; sourceTree = ""; }; - 35CCDCDDE22CA0027C314DB6DA58315E /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; - 38879F3D4B5660107B31D0C1897CFCC2 /* ShortcutRecorder-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ShortcutRecorder-Info.plist"; sourceTree = ""; }; - 389D17F51E74ECE6DD3DD97BB7BFC5EC /* ShortcutRecorder-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ShortcutRecorder-dummy.m"; sourceTree = ""; }; - 38A562291179B45B7433BCBF01C4797D /* SPUDownloaderProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderProtocol.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h; sourceTree = ""; }; - 39E244726490309AE7A83515492E543F /* tr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = tr.lproj; sourceTree = ""; }; + 288C82B6FFF955CF055E443690DCAC21 /* SRKeyBindingTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRKeyBindingTransformer.m; path = Library/SRKeyBindingTransformer.m; sourceTree = ""; }; + 28D5AE036BF46C20B791DC5852B80EBD /* sk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = sk.lproj; path = Resources/sk.lproj; sourceTree = ""; }; + 29E58BA20BBAC57A39F480EB23E1021A /* th.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = th.lproj; path = Resources/th.lproj; sourceTree = ""; }; + 2D3978C24BD23D0C261459F679314DD4 /* zh-Hans.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "zh-Hans.lproj"; path = "Resources/zh-Hans.lproj"; sourceTree = ""; }; + 2DAF08CCADE62CC180BC5F92CC802D4E /* SUVersionDisplayProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionDisplayProtocol.h; path = Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h; sourceTree = ""; }; + 2F0127670A14E03D0703B558424F0E36 /* SRRecorderControlStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRRecorderControlStyle.m; path = Library/SRRecorderControlStyle.m; sourceTree = ""; }; + 302C16081F7540E9F80D5AF9E0B64739 /* sv.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = sv.lproj; path = Resources/sv.lproj; sourceTree = ""; }; + 309FFC33B7622B6E0524298D7666E417 /* SUVersionComparisonProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionComparisonProtocol.h; path = Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h; sourceTree = ""; }; + 319CDA7BDD38A19BFE18B28E1C16A6BA /* PFMoveApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PFMoveApplication.h; sourceTree = ""; }; + 31A027918B604B7C90381399709AE9EC /* LetsMove-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LetsMove-prefix.pch"; sourceTree = ""; }; + 3310186DFBD5148E9D5D5CF0233AD4A7 /* ShortcutRecorder.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ShortcutRecorder.release.xcconfig; sourceTree = ""; }; + 332D4357367A02FCC59B72B641F7F7F0 /* util.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = util.swift; path = Sources/Preferences/util.swift; sourceTree = ""; }; + 343ECA0C4E9A0034C3A8190AB9F5A17C /* AppCenter.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AppCenter.release.xcconfig; sourceTree = ""; }; + 36D28B8AD1E3345EEBE28540F375E3C3 /* SUExport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUExport.h; path = Sparkle.framework/Versions/A/Headers/SUExport.h; sourceTree = ""; }; + 39A81B4043FB47C841A425FCBB24C3BE /* Preferences-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Preferences-prefix.pch"; sourceTree = ""; }; 3A50F71AC7B7C29C8922102AA39EFE0C /* Pods-alt-tab-macos-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-alt-tab-macos-dummy.m"; sourceTree = ""; }; - 3C1345C5BF8561E71A2D26F0C2A1CDFC /* ca.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = ca.lproj; sourceTree = ""; }; - 3C232D47ECC282432B8AA9D362AE8C0D /* SwiftyMarkdown.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyMarkdown.debug.xcconfig; sourceTree = ""; }; - 3DC3E8BA77B5B3168B3187E687E43A47 /* Images.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Resources/Images.xcassets; sourceTree = ""; }; - 3DF0840EA08DD59E1A3E6702B6C2CC2A /* LetsMove.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LetsMove.release.xcconfig; sourceTree = ""; }; - 3E52FE8EE16AB23687F2DDB5B82CF57E /* SRShortcutFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcutFormatter.h; path = Library/SRShortcutFormatter.h; sourceTree = ""; }; - 488C43320C54DFB64D0019FAE2FF4C62 /* SUAppcast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcast.h; path = Sparkle.framework/Versions/A/Headers/SUAppcast.h; sourceTree = ""; }; - 4BEECA2C7DA4B21D9E8EDAC9D1A93589 /* Preferences-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Preferences-dummy.m"; sourceTree = ""; }; - 4C25347426FB8281EC7C10000B645110 /* SRKeyCodeTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRKeyCodeTransformer.h; path = Library/SRKeyCodeTransformer.h; sourceTree = ""; }; - 4CF6C4472F2059963947D0EF3897F901 /* PreferencesTabViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencesTabViewController.swift; path = Sources/Preferences/PreferencesTabViewController.swift; sourceTree = ""; }; - 4F78EA3AC4DCBE64892D0152597D1020 /* zh_CN.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = zh_CN.lproj; sourceTree = ""; }; - 50A0AF0D11EA81595B52AC846BAADCDA /* SRKeyEquivalentTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRKeyEquivalentTransformer.m; path = Library/SRKeyEquivalentTransformer.m; sourceTree = ""; }; - 5413F1AC1964915DDD1D77E76CDC8A5A /* SRModifierFlagsTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRModifierFlagsTransformer.h; path = Library/SRModifierFlagsTransformer.h; sourceTree = ""; }; - 552F72C385AC286419406DC92B203A9B /* ShortcutRecorder-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ShortcutRecorder-prefix.pch"; sourceTree = ""; }; - 55F0B03D26498F9C489E7B11F301D844 /* Localization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Localization.swift; path = Sources/Preferences/Localization.swift; sourceTree = ""; }; - 56FA438195E701402987ADE7D32DBC3B /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = en.lproj; path = Resources/en.lproj; sourceTree = ""; }; - 57A95C4E1753FF848CA0FF201FF1645D /* Sparkle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Sparkle.h; path = Sparkle.framework/Versions/A/Headers/Sparkle.h; sourceTree = ""; }; - 586BCAA7BF1939389EDB6D6642E2425A /* Preferences.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Preferences.release.xcconfig; sourceTree = ""; }; - 599999469ADC4AF62F32805A35319209 /* SPUDownloaderSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderSession.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h; sourceTree = ""; }; - 5C2151969666D5447B77FC0B6C7DBAB2 /* ShortcutRecorder.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ShortcutRecorder.debug.xcconfig; sourceTree = ""; }; - 5C702E5C682552F77DB84CEF052DAFA4 /* SRShortcutAction.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcutAction.m; path = Library/SRShortcutAction.m; sourceTree = ""; }; - 5D1F88302E4058298C4246BA8CBEB80C /* el.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = el.lproj; path = Resources/el.lproj; sourceTree = ""; }; - 5E28B2887654BC73BC996A11B383ECC0 /* SUUpdaterDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdaterDelegate.h; path = Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h; sourceTree = ""; }; - 5FF2FDF50A2FD567398771682B97B897 /* UserInteractionPausableWindow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserInteractionPausableWindow.swift; path = Sources/Preferences/UserInteractionPausableWindow.swift; sourceTree = ""; }; - 60EF6FF60A94EF54E652E091F59466F8 /* zh_TW.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = zh_TW.lproj; sourceTree = ""; }; - 646BB82EA40B8DF1A4AAE13B681E58B5 /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = fr.lproj; path = Resources/fr.lproj; sourceTree = ""; }; - 662E5FFCDBDE2567B26349BCE7AE0426 /* SRShortcutValidator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcutValidator.h; path = Library/SRShortcutValidator.h; sourceTree = ""; }; - 66E66FA2D985FDA3D5737872F7011F2A /* sk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = sk.lproj; path = Resources/sk.lproj; sourceTree = ""; }; - 692F0B76CE2E434B3CAC9AD45BF2F741 /* cs.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = cs.lproj; path = Resources/cs.lproj; sourceTree = ""; }; + 3A7B85983E13701082563CD57CB38C47 /* pt_BR.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = pt_BR.lproj; sourceTree = ""; }; + 3A8C95E879BED34DCD192CD70676176F /* SwiftyTokeniser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyTokeniser.swift; path = Sources/SwiftyMarkdown/SwiftyTokeniser.swift; sourceTree = ""; }; + 437FA3EB9DCE5271C46D873B8B9DB858 /* LetsMove-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LetsMove-dummy.m"; sourceTree = ""; }; + 44FDCC58CCD668E0A47D342661973F63 /* LetsMove.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LetsMove.release.xcconfig; sourceTree = ""; }; + 4837783F508C28E1A39D0C99859C5552 /* Preferences-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Preferences-Info.plist"; sourceTree = ""; }; + 4A1BDCD10CC1A9F22EE03E006FFE1FCE /* SRModifierFlagsTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRModifierFlagsTransformer.m; path = Library/SRModifierFlagsTransformer.m; sourceTree = ""; }; + 4BD7C1DBE9E9EF0C43C6F17C9E9B9851 /* sv.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = sv.lproj; sourceTree = ""; }; + 4D162B37F6C57E31F2CC90722108A87E /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; + 4DA48074D2DC92D27D85F526ABC448BE /* it.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = it.lproj; sourceTree = ""; }; + 4E1624AA6232DF8818FE2A7C47CE7E53 /* it.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = it.lproj; path = Resources/it.lproj; sourceTree = ""; }; + 4F4ED31F44FCC2F9F15187A441B1A56A /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = fr.lproj; path = Resources/fr.lproj; sourceTree = ""; }; + 5139D59E558567E92066E4DF0B96FA71 /* ca.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ca.lproj; path = Resources/ca.lproj; sourceTree = ""; }; + 550BCA7368F04AA330E970BDDDBD5A00 /* SRShortcutValidator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcutValidator.m; path = Library/SRShortcutValidator.m; sourceTree = ""; }; + 5A2869C464EF9925368A3BE3206B85C6 /* sk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = sk.lproj; sourceTree = ""; }; + 5B534AB7FBC0832E46A58B81EC404D41 /* LetsMove.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = LetsMove.h; sourceTree = ""; }; + 5D234F0532C4F337EFA9A6921B1B2945 /* nl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = nl.lproj; path = Resources/nl.lproj; sourceTree = ""; }; + 5D4A3A483810F2B5AA9B45A8580DF9E3 /* ko.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = ko.lproj; sourceTree = ""; }; + 61588722256C7D5213D1D634C987975C /* SRKeyEquivalentModifierMaskTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRKeyEquivalentModifierMaskTransformer.m; path = Library/SRKeyEquivalentModifierMaskTransformer.m; sourceTree = ""; }; + 64EF0614B68FD8FCDFC27A334131DC5C /* SRShortcutController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcutController.m; path = Library/SRShortcutController.m; sourceTree = ""; }; + 656D16926B6906C38A7C53C29211C691 /* hu.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = hu.lproj; sourceTree = ""; }; + 65F03A58BDB8C59710E73EEB876AA054 /* Localization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Localization.swift; path = Sources/Preferences/Localization.swift; sourceTree = ""; }; + 685C7F3E853FA71DB7D5078622B60996 /* SwiftyMarkdown.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyMarkdown.modulemap; sourceTree = ""; }; + 68D6B2900BE1DDBA86A8075F626DF819 /* PreferencesStyleController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencesStyleController.swift; path = Sources/Preferences/PreferencesStyleController.swift; sourceTree = ""; }; + 68E366B8139CC0764E969E2594211529 /* Images.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Resources/Images.xcassets; sourceTree = ""; }; 6A115D5F73B04DD7F1B7818EDD9B2EF3 /* Preferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Preferences.framework; path = Preferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6A62C708622A3ECB9ED597AD909FA362 /* SwiftyMarkdown.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyMarkdown.release.xcconfig; sourceTree = ""; }; - 6A9B406A74D0B3CDED2DACA57648AD7D /* nb.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = nb.lproj; sourceTree = ""; }; - 6B0A57CA6E83EF929BA22189DC6023E0 /* SegmentedControlStyleViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SegmentedControlStyleViewController.swift; path = Sources/Preferences/SegmentedControlStyleViewController.swift; sourceTree = ""; }; - 6DD1EDE447D15CF5739FA2D077648FC9 /* ShortcutRecorder-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ShortcutRecorder-umbrella.h"; sourceTree = ""; }; - 70A6FDD9C55154B728466D71B09FA6C8 /* da.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = da.lproj; sourceTree = ""; }; - 70E800F0EC8C3C4121F7AD5C9410EFE5 /* SRRecorderControlStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRRecorderControlStyle.m; path = Library/SRRecorderControlStyle.m; sourceTree = ""; }; - 724F9C6739A2F8BA2CAF538B928201E0 /* SwiftyMarkdown-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyMarkdown-umbrella.h"; sourceTree = ""; }; - 7264B6FA7F58F1EA59E465DC88C250D3 /* SwiftyMarkdown.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyMarkdown.modulemap; sourceTree = ""; }; - 73FB426CEB2A10C50A4DEEED7CB5BFFC /* ShortcutRecorder.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ShortcutRecorder.release.xcconfig; sourceTree = ""; }; + 6AD1D2F597E3330CABA6245068FBADE3 /* pt-BR.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "pt-BR.lproj"; path = "Resources/pt-BR.lproj"; sourceTree = ""; }; + 6B24D18BE572CB16C5CF79E2DCF21B04 /* SRKeyCodeTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRKeyCodeTransformer.h; path = Library/SRKeyCodeTransformer.h; sourceTree = ""; }; + 6B269AA67858AF55801096FC2A23F6FA /* LetsMove.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LetsMove.modulemap; sourceTree = ""; }; + 6B5306D3E890920B2B8C77FB13B05C99 /* SRRecorderControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRRecorderControl.m; path = Library/SRRecorderControl.m; sourceTree = ""; }; + 6C5CC2D4785234C184406001C6340B1E /* ro.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ro.lproj; path = Resources/ro.lproj; sourceTree = ""; }; + 6CDF0F496FDE79042B5332838314A69E /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = es.lproj; path = Resources/es.lproj; sourceTree = ""; }; + 6D0E4139CAD01F3FCF3F3B7BCD56E848 /* SUAppcastItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcastItem.h; path = Sparkle.framework/Versions/A/Headers/SUAppcastItem.h; sourceTree = ""; }; + 6F4E9DA8B6C0E4F1FACF79B333D3A541 /* zh_CN.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = zh_CN.lproj; sourceTree = ""; }; + 71387DF044CF4930981758E67D5298C6 /* da.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = da.lproj; sourceTree = ""; }; + 73B9D35E00213BE801F0EFA72C8CBE98 /* SRShortcutFormatter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcutFormatter.h; path = Library/SRShortcutFormatter.h; sourceTree = ""; }; + 73F3C164FA18F80749438077ACACA9B8 /* SPUURLRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUURLRequest.h; path = Sparkle.framework/Versions/A/Headers/SPUURLRequest.h; sourceTree = ""; }; 7475BBC3CE1397DCE052D215F2D73234 /* Pods-alt-tab-macos.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-alt-tab-macos.release.xcconfig"; sourceTree = ""; }; - 7478E0A2FD299724C1ACF90FF3696EB8 /* SRCommon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRCommon.m; path = Library/SRCommon.m; sourceTree = ""; }; - 78F8A65ECC4BBD605AE95236F130001F /* SUVersionComparisonProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionComparisonProtocol.h; path = Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h; sourceTree = ""; }; + 778B2BF12DD5E0788128824056C32A8E /* LetsMove-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LetsMove-Info.plist"; sourceTree = ""; }; + 77B1E378A12C3AAF7D8ED014EFD25E00 /* SPUDownloaderDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderDelegate.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h; sourceTree = ""; }; + 791F5DDFC42405D0412D0F752DE068D2 /* AppCenter.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AppCenter.debug.xcconfig; sourceTree = ""; }; 7A3DD740894FE73E66768ABB17B36265 /* ShortcutRecorder.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ShortcutRecorder.framework; path = ShortcutRecorder.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7D16DE36F2395A1FD9867B13883D0968 /* SwiftyMarkdown.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyMarkdown.swift; path = Sources/SwiftyMarkdown/SwiftyMarkdown.swift; sourceTree = ""; }; - 80849E177BE72C32FDABBD20A67CFBD4 /* SRKeyEquivalentModifierMaskTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRKeyEquivalentModifierMaskTransformer.m; path = Library/SRKeyEquivalentModifierMaskTransformer.m; sourceTree = ""; }; - 81766405980DCB967785BDDE23361C33 /* zh-Hans.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "zh-Hans.lproj"; path = "Resources/zh-Hans.lproj"; sourceTree = ""; }; - 818C7832AF2DA5EB83EE78D7ECEBEE14 /* SwiftyMarkdown-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftyMarkdown-Info.plist"; sourceTree = ""; }; - 81E9C71410FB0E4B648381EFD4A3519B /* Preferences-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Preferences-prefix.pch"; sourceTree = ""; }; + 7B619C6D4C1E14B45E8AAA0CA3A95B30 /* ShortcutRecorder-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ShortcutRecorder-prefix.pch"; sourceTree = ""; }; + 7B793BDD893A79F03361B4D541CF3F98 /* Preferences.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Preferences.modulemap; sourceTree = ""; }; + 7C569DF566632B468E9BD405EA14FFB0 /* SwiftyMarkdown-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SwiftyMarkdown-Info.plist"; sourceTree = ""; }; + 7F145D505D7230B79E24DEECC6028B79 /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = pl.lproj; sourceTree = ""; }; + 807DFAC9DCB5FF7DD080DC6F903EF48E /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = de.lproj; sourceTree = ""; }; + 811AF957C8F98810F829A6819A743DCA /* SRKeyBindingTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRKeyBindingTransformer.h; path = Library/SRKeyBindingTransformer.h; sourceTree = ""; }; + 81DE77E3ABD1A29BD2713A4D11F67CE9 /* SRKeyEquivalentModifierMaskTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRKeyEquivalentModifierMaskTransformer.h; path = Library/SRKeyEquivalentModifierMaskTransformer.h; sourceTree = ""; }; + 820682A23CECDA05F4F32C1F77C5A7ED /* SRRecorderControlStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRRecorderControlStyle.h; path = Library/SRRecorderControlStyle.h; sourceTree = ""; }; + 8270D55A808D6A03B100843A0EB1A95B /* Preferences.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Preferences.debug.xcconfig; sourceTree = ""; }; 8361FDCE534C28CE8EACD6B796A834DB /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Carbon.framework; sourceTree = DEVELOPER_DIR; }; - 8438DB082182E152B16A702D9BEB815F /* PreferencesStyleController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencesStyleController.swift; path = Sources/Preferences/PreferencesStyleController.swift; sourceTree = ""; }; - 8739A8055945A33E7B30CD82A6A5AC5C /* SUUpdater.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdater.h; path = Sparkle.framework/Versions/A/Headers/SUUpdater.h; sourceTree = ""; }; - 873F3E775BAC8098A237A45C06412D91 /* ShortcutRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShortcutRecorder.h; path = Library/ShortcutRecorder.h; sourceTree = ""; }; - 87FA1323D56196D4BF155B200B6E30D6 /* LetsMove.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LetsMove.debug.xcconfig; sourceTree = ""; }; - 896820E4978C3E39B3BC8C8B74633576 /* SUCodeSigningVerifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUCodeSigningVerifier.h; path = Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h; sourceTree = ""; }; - 8A1476336B2A08A494AF955FC91C66CA /* it.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = it.lproj; sourceTree = ""; }; - 8C2A36A34EAD27EDE998993AA2C3C889 /* Preferences.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Preferences.modulemap; sourceTree = ""; }; - 8EDBDD9B567FFC2665AAB4ACD89E9378 /* SPUDownloadData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloadData.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloadData.h; sourceTree = ""; }; - 8F914EB1CB4B6EEF6D0B48B2405E9039 /* Sparkle.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sparkle.release.xcconfig; sourceTree = ""; }; - 9037168CA94D092844678390BF36F285 /* SRShortcutController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcutController.m; path = Library/SRShortcutController.m; sourceTree = ""; }; - 928AFF417E86B199D2E9B007ACAAB4E7 /* SRRecorderControlStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRRecorderControlStyle.h; path = Library/SRRecorderControlStyle.h; sourceTree = ""; }; - 9315798BAC6D65C43AF979A33F184D6B /* SRShortcut.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcut.m; path = Library/SRShortcut.m; sourceTree = ""; }; + 89DE81C3C03F619A343BD35C093E5413 /* ru.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ru.lproj; path = Resources/ru.lproj; sourceTree = ""; }; + 8A1CB113E8DA8EBF59C124568F02FAAA /* String+SwiftyMarkdown.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+SwiftyMarkdown.swift"; path = "Sources/SwiftyMarkdown/String+SwiftyMarkdown.swift"; sourceTree = ""; }; + 8B0C77CE14DC0476C374C2E9CF78848F /* sr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = sr.lproj; sourceTree = ""; }; + 8B5308C1460B3102C5410DCE311AA7ED /* Sparkle.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sparkle.debug.xcconfig; sourceTree = ""; }; + 8C06A33D1E26AA4DC30125DCB455CF77 /* SwiftyMarkdown-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyMarkdown-umbrella.h"; sourceTree = ""; }; + 8C98E9D2E30A810B29580212F87D88C7 /* cs.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = cs.lproj; path = Resources/cs.lproj; sourceTree = ""; }; + 92644AFF8E5B852251CBD3030D2C991B /* SUUpdater.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdater.h; path = Sparkle.framework/Versions/A/Headers/SUUpdater.h; sourceTree = ""; }; + 937F8245E409BF02E2D0F6FB08B3DBDF /* cs.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = cs.lproj; sourceTree = ""; }; 9398EB710E40217E35064D9686CCAD21 /* Pods-alt-tab-macos-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-alt-tab-macos-umbrella.h"; sourceTree = ""; }; - 95829DA5F921A137F1F6E2628BA30082 /* SRModifierFlagsTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRModifierFlagsTransformer.m; path = Library/SRModifierFlagsTransformer.m; sourceTree = ""; }; - 972CC2B8C0757D32A4E04B11EC5E843B /* SRRecorderControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRRecorderControl.m; path = Library/SRRecorderControl.m; sourceTree = ""; }; + 946D0F90B82D5B036139C0DB871540C6 /* Preferences.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Preferences.release.xcconfig; sourceTree = ""; }; + 9C5738E5AE3E1FA4482AC852ED2B1114 /* UserInteractionPausableWindow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserInteractionPausableWindow.swift; path = Sources/Preferences/UserInteractionPausableWindow.swift; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9FB04F8E6EA6C9AA881502D663521947 /* Preferences-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Preferences-Info.plist"; sourceTree = ""; }; - A01B99E47310DD17DD571C6ADC7A2063 /* ShortcutRecorder.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ShortcutRecorder.modulemap; sourceTree = ""; }; - A26EF044A853930BC884BE7CA27C0709 /* pt.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pt.lproj; path = Resources/pt.lproj; sourceTree = ""; }; - A3CF45DBF333E311734EDC683223961D /* String+SwiftyMarkdown.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+SwiftyMarkdown.swift"; path = "Sources/SwiftyMarkdown/String+SwiftyMarkdown.swift"; sourceTree = ""; }; - A57748384CD9843F2EB228A401DE5944 /* sr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = sr.lproj; sourceTree = ""; }; - A5E9F532A3241F5331E6FB45BE8AC4C4 /* LetsMove-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LetsMove-Info.plist"; sourceTree = ""; }; - AB76A00742E47BBCE180CAF5EE223ECF /* LetsMove-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LetsMove-umbrella.h"; sourceTree = ""; }; - ABAFF6389D638175EE468A4B6BCF3602 /* pt.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = pt.lproj; sourceTree = ""; }; + 9EBF561488A8F207BF7B37235A95E0B4 /* Sparkle.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sparkle.release.xcconfig; sourceTree = ""; }; + 9FC0F355CAF353E5A179706FD0CA5F02 /* SwiftyMarkdown.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyMarkdown.release.xcconfig; sourceTree = ""; }; + A11F9E8C30D104E4711E0DB76B5C19D6 /* SUUpdaterDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUUpdaterDelegate.h; path = Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h; sourceTree = ""; }; + A13EC9E9AE071EB90EE3F665D00973BF /* pt.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = pt.lproj; sourceTree = ""; }; + A186EA94DF719F23CC99A3D06C805E0F /* ShortcutRecorder-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ShortcutRecorder-Info.plist"; sourceTree = ""; }; + A3E6F6A282E2E71D1E7551FCAA2FD4A4 /* SUStandardVersionComparator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUStandardVersionComparator.h; path = Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h; sourceTree = ""; }; + A5159F1082073C248E88F5F7166B2B87 /* SUErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUErrors.h; path = Sparkle.framework/Versions/A/Headers/SUErrors.h; sourceTree = ""; }; + AA85C06212529EE5384E1421038B038E /* SRKeyEquivalentTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRKeyEquivalentTransformer.m; path = Library/SRKeyEquivalentTransformer.m; sourceTree = ""; }; + AC0E1E7F042DF68BABF37F2EF0A5DBF9 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = en.lproj; sourceTree = ""; }; AC17564D0F58DCA6B3280EDA07C2876D /* SwiftyMarkdown.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwiftyMarkdown.framework; path = SwiftyMarkdown.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AD9C32777111FCAC14F8E11E1CA40BBB /* ToolbarItemStyleViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToolbarItemStyleViewController.swift; path = Sources/Preferences/ToolbarItemStyleViewController.swift; sourceTree = ""; }; - AEE608F7ACB94C5F356E15148F080C37 /* PFMoveApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PFMoveApplication.m; sourceTree = ""; }; - B21676942A82066A5F890982D52AF601 /* nl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = nl.lproj; sourceTree = ""; }; - B6A13407B53E94994BC9C320535D29A3 /* SRRecorderControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRRecorderControl.h; path = Library/SRRecorderControl.h; sourceTree = ""; }; - B7C13E18AAFD27EA81E698E02DA73A66 /* SwiftyMarkdown+macOS.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SwiftyMarkdown+macOS.swift"; path = "Sources/SwiftyMarkdown/SwiftyMarkdown+macOS.swift"; sourceTree = ""; }; - B8147D026D72FE164E16D4AE2AFD6808 /* util.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = util.swift; path = Sources/Preferences/util.swift; sourceTree = ""; }; + ACE36A5A4B495CD996036644C83A67ED /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ja.lproj; path = Resources/ja.lproj; sourceTree = ""; }; + B0CC6CD6232E24316689F98D0F8D22E5 /* SPUDownloaderProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderProtocol.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h; sourceTree = ""; }; + B114B448784E65EEB129CE10E3E46A5C /* LetsMove.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LetsMove.debug.xcconfig; sourceTree = ""; }; + B34C582D8EE2767CF77DB606A96D4AD6 /* PreferencesStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencesStyle.swift; path = Sources/Preferences/PreferencesStyle.swift; sourceTree = ""; }; B8E37B919891F60149AC5703A01BD88B /* Pods-alt-tab-macos-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-alt-tab-macos-Info.plist"; sourceTree = ""; }; - BA2813DF3B2085938C375DF45DBDDBEF /* hu.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = hu.lproj; sourceTree = ""; }; - BAE7A8E29FBC46A9DC0414F3FA56900F /* SRKeyEquivalentModifierMaskTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRKeyEquivalentModifierMaskTransformer.h; path = Library/SRKeyEquivalentModifierMaskTransformer.h; sourceTree = ""; }; - BD8644D140BA89A0A856EC194645F193 /* sv.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = sv.lproj; sourceTree = ""; }; - C047F1BCAEC597694D74B4F85EB9DB77 /* sv.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = sv.lproj; path = Resources/sv.lproj; sourceTree = ""; }; - C130A2E80C95B66B87A0B7AE22A295F2 /* SRShortcut.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcut.h; path = Library/SRShortcut.h; sourceTree = ""; }; - C53D764C43A51376171AD41E99B8ABE2 /* ru.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ru.lproj; path = Resources/ru.lproj; sourceTree = ""; }; - C9C45730F9EB9F5D8FA6191C6BE61F9B /* pt_BR.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = pt_BR.lproj; sourceTree = ""; }; - CD15970D076904394254DEFDAB0A55ED /* SPUDownloaderDeprecated.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderDeprecated.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h; sourceTree = ""; }; - CEC77DC6041965487A3D514C234927D2 /* SRShortcutAction.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcutAction.h; path = Library/SRShortcutAction.h; sourceTree = ""; }; - CEFC61EA791D4A6418CCFBE1787D6659 /* sk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = sk.lproj; sourceTree = ""; }; - CFCC52DA333A8C35C6991FC1CD3DF26E /* LetsMove-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LetsMove-dummy.m"; sourceTree = ""; }; - D10556F1A37F2213EF692DEF40887397 /* PreferencePane.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencePane.swift; path = Sources/Preferences/PreferencePane.swift; sourceTree = ""; }; - D2033B6F8F980197C76D40AAB302B91C /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = es.lproj; path = Resources/es.lproj; sourceTree = ""; }; - D3F6CAE71B6E9F84B78E07936CBB97C1 /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = de.lproj; sourceTree = ""; }; - D5556CA390CFFD665D6FF530DA0D91B7 /* SRKeyBindingTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRKeyBindingTransformer.h; path = Library/SRKeyBindingTransformer.h; sourceTree = ""; }; - D5683EEA745922A2D28A0305E506B8E7 /* th.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = th.lproj; path = Resources/th.lproj; sourceTree = ""; }; - D66B2E269BB4DE600FF5BD4EE9C0AA41 /* SwiftyMarkdown+iOS.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SwiftyMarkdown+iOS.swift"; path = "Sources/SwiftyMarkdown/SwiftyMarkdown+iOS.swift"; sourceTree = ""; }; - D6BB26D071E36D7F9011C63F8E3B2863 /* LetsMove-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LetsMove-prefix.pch"; sourceTree = ""; }; + BB31755D2FE9551F95AFC4D6FCE4C340 /* nb.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = nb.lproj; path = Resources/nb.lproj; sourceTree = ""; }; + BB4FB265A80DD57183591823B0EE5280 /* AppCenterCrashes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppCenterCrashes.framework; path = "AppCenter-SDK-Apple/macOS/AppCenterCrashes.framework"; sourceTree = ""; }; + BE1F886A7666419789347236A3CC30A1 /* nl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = nl.lproj; sourceTree = ""; }; + BE7CB05B47C07532F41DF8689E690AD6 /* ShortcutRecorder-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ShortcutRecorder-umbrella.h"; sourceTree = ""; }; + C379EC135B54091AD213CEC2969A554C /* PreferencesTabViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencesTabViewController.swift; path = Sources/Preferences/PreferencesTabViewController.swift; sourceTree = ""; }; + C61765C901CC5F727736C30D81C8D91D /* AppCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppCenter.framework; path = "AppCenter-SDK-Apple/macOS/AppCenter.framework"; sourceTree = ""; }; + C6180A0EBF570BF69216297CE251E8F0 /* mk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = mk.lproj; sourceTree = ""; }; + CCBF2A83B0C3430729A53DF2A0BCF723 /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = de.lproj; path = Resources/de.lproj; sourceTree = ""; }; + CDDE9C7FFB0BF5AE15119B44012F895E /* SwiftyMarkdown-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyMarkdown-dummy.m"; sourceTree = ""; }; + D1758E19F93FA2577732F67C9BA6F2FA /* SRKeyCodeTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRKeyCodeTransformer.m; path = Library/SRKeyCodeTransformer.m; sourceTree = ""; }; + D255C3E9B9B3F38F1063FCBE38481E56 /* ToolbarItemStyleViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToolbarItemStyleViewController.swift; path = Sources/Preferences/ToolbarItemStyleViewController.swift; sourceTree = ""; }; + D3F00FECBAC395E72886441C418BC4F7 /* Preferences-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Preferences-umbrella.h"; sourceTree = ""; }; + D471658D32EDC44AACCCF959A8F73422 /* ShortcutRecorder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ShortcutRecorder.h; path = Library/ShortcutRecorder.h; sourceTree = ""; }; + D865AD1F2A3B4CDDF253E9C4015C23BD /* SwiftyMarkdown+iOS.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SwiftyMarkdown+iOS.swift"; path = "Sources/SwiftyMarkdown/SwiftyMarkdown+iOS.swift"; sourceTree = ""; }; D87AC91B19D0A6B161BD3ED08F81D6E9 /* LetsMove.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LetsMove.framework; path = LetsMove.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D95C079F75245DB989FC2F93DC3362FA /* Pods-alt-tab-macos-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-alt-tab-macos-acknowledgements.plist"; sourceTree = ""; }; - DA8BCD816EFD85C046AE89262528583B /* SRShortcutController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcutController.h; path = Library/SRShortcutController.h; sourceTree = ""; }; DCA0A6B74F3699962F44535ACC0B5945 /* Pods-alt-tab-macos.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-alt-tab-macos.debug.xcconfig"; sourceTree = ""; }; - DD6AFCD8B457CF70372B8514509C413F /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = de.lproj; path = Resources/de.lproj; sourceTree = ""; }; - DDCD54AC8BC1D62563C3CB60675A4D26 /* zh-Hant.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "zh-Hant.lproj"; path = "Resources/zh-Hant.lproj"; sourceTree = ""; }; - DF048614E5FA4445186715688D540199 /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = fr.lproj; sourceTree = ""; }; - E0C73A36C8B4A5AF2B6DF35A63C89387 /* Preferences-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Preferences-umbrella.h"; sourceTree = ""; }; - E0FB4CDE9491FC1C156B7325AE1D8857 /* cs.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = cs.lproj; sourceTree = ""; }; - E16BF5B2E49479661FA6BF65652747D2 /* SwiftyMarkdown-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyMarkdown-prefix.pch"; sourceTree = ""; }; - E2209A3A1C69B3211F9C75C6913872FF /* nl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = nl.lproj; path = Resources/nl.lproj; sourceTree = ""; }; - E3DE9B5897A7E9369DB09018EA1D199F /* ro.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ro.lproj; path = Resources/ro.lproj; sourceTree = ""; }; - E3FC5D75A84499105F55009A04A10DD7 /* SRKeyEquivalentTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRKeyEquivalentTransformer.h; path = Library/SRKeyEquivalentTransformer.h; sourceTree = ""; }; - E624C4D4700EB7DE413A83FBB83B005E /* ko.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ko.lproj; path = Resources/ko.lproj; sourceTree = ""; }; + DD2CFA154D289267DD415910482035AD /* SRShortcutFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcutFormatter.m; path = Library/SRShortcutFormatter.m; sourceTree = ""; }; + DE480A6F7C010852FEEDDB220263870D /* LetsMove-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LetsMove-umbrella.h"; sourceTree = ""; }; + E007B81FDB12CD80FC731515B7B8758F /* SRCommon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRCommon.m; path = Library/SRCommon.m; sourceTree = ""; }; + E0A129DF839F952D338F5A89955C42FC /* ca.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = ca.lproj; sourceTree = ""; }; + E1BF61A44688CBA35C1732F2C6D888BD /* SwiftyMarkdown.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyMarkdown.swift; path = Sources/SwiftyMarkdown/SwiftyMarkdown.swift; sourceTree = ""; }; + E1FE169ECDCBFF2F038121ABB5E39F1E /* SwiftyLineProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyLineProcessor.swift; path = Sources/SwiftyMarkdown/SwiftyLineProcessor.swift; sourceTree = ""; }; + E2DF7AD91DAD281DCE7D0C35AC369394 /* ShortcutRecorder-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ShortcutRecorder-dummy.m"; sourceTree = ""; }; + E38B03F37D95A00F61C6C22F1BA9E143 /* ko.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ko.lproj; path = Resources/ko.lproj; sourceTree = ""; }; + E4982267AB80949CCA40853FC2B30266 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = en.lproj; path = Resources/en.lproj; sourceTree = ""; }; + E57E73F5DBFF1611062A13E84FA8AC3B /* ShortcutRecorder.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ShortcutRecorder.modulemap; sourceTree = ""; }; + E75090C9868E0DA1C597C20E84F7AA99 /* SwiftyMarkdown-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyMarkdown-prefix.pch"; sourceTree = ""; }; + E79645B0B9BF58C3155D32D8D1E788D0 /* SUAppcast.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUAppcast.h; path = Sparkle.framework/Versions/A/Headers/SUAppcast.h; sourceTree = ""; }; + E813715DCA3ECCBF7A50A72C29AE1EFB /* PreferencePane.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PreferencePane.swift; path = Sources/Preferences/PreferencePane.swift; sourceTree = ""; }; E837F658B763ECCE73D0A1DC23C1AAEC /* Pods-alt-tab-macos-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-alt-tab-macos-frameworks.sh"; sourceTree = ""; }; - EC118EC31AD795CC3304602F21EF2540 /* ko.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = ko.lproj; sourceTree = ""; }; - ECBC7817C024B1CF45EBFDF10B46BDDB /* SRShortcutFormatter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcutFormatter.m; path = Library/SRShortcutFormatter.m; sourceTree = ""; }; - EDA7B4ABC3A1525403D81D56011116BA /* SUVersionDisplayProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUVersionDisplayProtocol.h; path = Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h; sourceTree = ""; }; - EE29A476F28A4EE6B4054A23051429CF /* SUErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SUErrors.h; path = Sparkle.framework/Versions/A/Headers/SUErrors.h; sourceTree = ""; }; - EE79D0583628F279ADD796C9A83BE80E /* nb.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = nb.lproj; path = Resources/nb.lproj; sourceTree = ""; }; - F2B661DB781A79D318F3CC07F5435C8F /* ca.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ca.lproj; path = Resources/ca.lproj; sourceTree = ""; }; + EB19B6AB4099517D1797457D1DC65ECE /* SPUDownloaderSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderSession.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h; sourceTree = ""; }; + ED297791AE45F263F0D523B7C54B0B92 /* SRModifierFlagsTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRModifierFlagsTransformer.h; path = Library/SRModifierFlagsTransformer.h; sourceTree = ""; }; + ED4D57137FC82AE40E8E84556CC4D814 /* tr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = tr.lproj; sourceTree = ""; }; + ED52501281260567C10634577079217F /* zh-Hant.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "zh-Hant.lproj"; path = "Resources/zh-Hant.lproj"; sourceTree = ""; }; + EE1A7B05170B4D6C88A53D153FE44346 /* ShortcutRecorder.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ShortcutRecorder.debug.xcconfig; sourceTree = ""; }; + EEBA571B2DE5FEE6EC76C2CC0DFBAF08 /* SRShortcut.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SRShortcut.m; path = Library/SRShortcut.m; sourceTree = ""; }; + F1B545B7425D9FC19CD03190DAF2EBB9 /* SRKeyEquivalentTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRKeyEquivalentTransformer.h; path = Library/SRKeyEquivalentTransformer.h; sourceTree = ""; }; F3A5CD5AFD55E86C5D69812AE01A9770 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; - F694A0EB56716B4A0C509AC2185C2B3E /* SwiftyMarkdown-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyMarkdown-dummy.m"; sourceTree = ""; }; - FC7312D66138C39E6EA88A01C121DACA /* Sparkle.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sparkle.debug.xcconfig; sourceTree = ""; }; + F44F70E9C6F1F3A51D6309CFB670BECE /* PFMoveApplication.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = PFMoveApplication.m; sourceTree = ""; }; + F56AFB74650CA7D2BF19ACA0DACBCE43 /* SwiftyMarkdown.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyMarkdown.debug.xcconfig; sourceTree = ""; }; + F5A7D97E3CE4ADC900E3CF42BECC8CCB /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = es.lproj; sourceTree = ""; }; + F71FF684F5878B18DCD5CFCDFBDA6088 /* el.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = el.lproj; path = Resources/el.lproj; sourceTree = ""; }; + FBB84886802306F850919F9E30383534 /* SRShortcutController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcutController.h; path = Library/SRShortcutController.h; sourceTree = ""; }; + FC2DEDF38F8C0D8F09B15C4D2DE839A4 /* SRShortcut.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SRShortcut.h; path = Library/SRShortcut.h; sourceTree = ""; }; + FEB43C88F0A29885E2C738B4FDCE42F3 /* SPUDownloaderDeprecated.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPUDownloaderDeprecated.h; path = Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h; sourceTree = ""; }; + FEB4D1E78729A1E1ADB06252A3FF8050 /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; path = ja.lproj; sourceTree = ""; }; + FF2B28AD283E3F2F7CFD870E16C72351 /* SwiftyMarkdown+macOS.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SwiftyMarkdown+macOS.swift"; path = "Sources/SwiftyMarkdown/SwiftyMarkdown+macOS.swift"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -356,11 +376,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A12BB3AE73E36B766602C6F87DE12500 /* Frameworks */ = { + BDE54F173DDBC72829FFA3533F76513B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FE5376EB3549F3491ABE070761324AD9 /* Cocoa.framework in Frameworks */, + C4EEB9D0B2592D8EE5A9ED342AC557CE /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -375,64 +395,21 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0DC997BC98DFCACC5F1DEED56B4A81BB /* Support Files */ = { + 09B28F37A9767C03E14B74B60B0CAFF2 /* Support Files */ = { isa = PBXGroup; children = ( - A01B99E47310DD17DD571C6ADC7A2063 /* ShortcutRecorder.modulemap */, - 389D17F51E74ECE6DD3DD97BB7BFC5EC /* ShortcutRecorder-dummy.m */, - 38879F3D4B5660107B31D0C1897CFCC2 /* ShortcutRecorder-Info.plist */, - 552F72C385AC286419406DC92B203A9B /* ShortcutRecorder-prefix.pch */, - 6DD1EDE447D15CF5739FA2D077648FC9 /* ShortcutRecorder-umbrella.h */, - 5C2151969666D5447B77FC0B6C7DBAB2 /* ShortcutRecorder.debug.xcconfig */, - 73FB426CEB2A10C50A4DEEED7CB5BFFC /* ShortcutRecorder.release.xcconfig */, + E57E73F5DBFF1611062A13E84FA8AC3B /* ShortcutRecorder.modulemap */, + E2DF7AD91DAD281DCE7D0C35AC369394 /* ShortcutRecorder-dummy.m */, + A186EA94DF719F23CC99A3D06C805E0F /* ShortcutRecorder-Info.plist */, + 7B619C6D4C1E14B45E8AAA0CA3A95B30 /* ShortcutRecorder-prefix.pch */, + BE7CB05B47C07532F41DF8689E690AD6 /* ShortcutRecorder-umbrella.h */, + EE1A7B05170B4D6C88A53D153FE44346 /* ShortcutRecorder.debug.xcconfig */, + 3310186DFBD5148E9D5D5CF0233AD4A7 /* ShortcutRecorder.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/ShortcutRecorder"; sourceTree = ""; }; - 20D3A9A6299951B9F9BD2FDC8F9DC0BB /* SwiftyMarkdown */ = { - isa = PBXGroup; - children = ( - A3CF45DBF333E311734EDC683223961D /* String+SwiftyMarkdown.swift */, - 1F136ABB8AEC278F9838A207E7CA20B1 /* SwiftyLineProcessor.swift */, - 7D16DE36F2395A1FD9867B13883D0968 /* SwiftyMarkdown.swift */, - D66B2E269BB4DE600FF5BD4EE9C0AA41 /* SwiftyMarkdown+iOS.swift */, - B7C13E18AAFD27EA81E698E02DA73A66 /* SwiftyMarkdown+macOS.swift */, - 2F88F8E80B146D48943BB77C74278C42 /* SwiftyTokeniser.swift */, - FF4E89F0FE64B38E2EBAF440B62A23AD /* Support Files */, - ); - name = SwiftyMarkdown; - path = SwiftyMarkdown; - sourceTree = ""; - }; - 2A1499091426F9BEC5523474F9EAE764 /* Sparkle */ = { - isa = PBXGroup; - children = ( - 57A95C4E1753FF848CA0FF201FF1645D /* Sparkle.h */, - 8EDBDD9B567FFC2665AAB4ACD89E9378 /* SPUDownloadData.h */, - 1DB0C0E3A1C3091DC0FFBA070D92245D /* SPUDownloader.h */, - 115FD2032F5112342281368206C32500 /* SPUDownloaderDelegate.h */, - CD15970D076904394254DEFDAB0A55ED /* SPUDownloaderDeprecated.h */, - 38A562291179B45B7433BCBF01C4797D /* SPUDownloaderProtocol.h */, - 599999469ADC4AF62F32805A35319209 /* SPUDownloaderSession.h */, - 1F2980045E298C0F09548BED9F200223 /* SPUURLRequest.h */, - 488C43320C54DFB64D0019FAE2FF4C62 /* SUAppcast.h */, - 14436BE32E82DF766B28D678DC76D1C7 /* SUAppcastItem.h */, - 896820E4978C3E39B3BC8C8B74633576 /* SUCodeSigningVerifier.h */, - EE29A476F28A4EE6B4054A23051429CF /* SUErrors.h */, - 0C5A519EA7A7545CE1AF9360B4DC4370 /* SUExport.h */, - 1FCD1042D51D3FD6F5D42BA414DAAD58 /* SUStandardVersionComparator.h */, - 8739A8055945A33E7B30CD82A6A5AC5C /* SUUpdater.h */, - 5E28B2887654BC73BC996A11B383ECC0 /* SUUpdaterDelegate.h */, - 78F8A65ECC4BBD605AE95236F130001F /* SUVersionComparisonProtocol.h */, - EDA7B4ABC3A1525403D81D56011116BA /* SUVersionDisplayProtocol.h */, - 3B5964AA4B356D0A5A2058CE1074E31C /* Frameworks */, - 96DF020FBE7D647E9206C0409482FE61 /* Support Files */, - ); - name = Sparkle; - path = Sparkle; - sourceTree = ""; - }; 2EB46ECB1DE5DA922D89BFA28A0D5B63 /* OS X */ = { isa = PBXGroup; children = ( @@ -442,26 +419,76 @@ name = "OS X"; sourceTree = ""; }; - 3B5964AA4B356D0A5A2058CE1074E31C /* Frameworks */ = { + 2EF0FD2F1229879F84AE3BF14177E0F6 /* Sparkle */ = { isa = PBXGroup; children = ( - 35CCDCDDE22CA0027C314DB6DA58315E /* Sparkle.framework */, + 1B9091F57396DA795DCF54E8B3FAFAB9 /* Sparkle.h */, + 140A9D054701045C2CD9880B5F11FE04 /* SPUDownloadData.h */, + 21D730249C10BEF6B45E5DC7AFF669B7 /* SPUDownloader.h */, + 77B1E378A12C3AAF7D8ED014EFD25E00 /* SPUDownloaderDelegate.h */, + FEB43C88F0A29885E2C738B4FDCE42F3 /* SPUDownloaderDeprecated.h */, + B0CC6CD6232E24316689F98D0F8D22E5 /* SPUDownloaderProtocol.h */, + EB19B6AB4099517D1797457D1DC65ECE /* SPUDownloaderSession.h */, + 73F3C164FA18F80749438077ACACA9B8 /* SPUURLRequest.h */, + E79645B0B9BF58C3155D32D8D1E788D0 /* SUAppcast.h */, + 6D0E4139CAD01F3FCF3F3B7BCD56E848 /* SUAppcastItem.h */, + 072215C654E9492C93C950E3B738A730 /* SUCodeSigningVerifier.h */, + A5159F1082073C248E88F5F7166B2B87 /* SUErrors.h */, + 36D28B8AD1E3345EEBE28540F375E3C3 /* SUExport.h */, + A3E6F6A282E2E71D1E7551FCAA2FD4A4 /* SUStandardVersionComparator.h */, + 92644AFF8E5B852251CBD3030D2C991B /* SUUpdater.h */, + A11F9E8C30D104E4711E0DB76B5C19D6 /* SUUpdaterDelegate.h */, + 309FFC33B7622B6E0524298D7666E417 /* SUVersionComparisonProtocol.h */, + 2DAF08CCADE62CC180BC5F92CC802D4E /* SUVersionDisplayProtocol.h */, + ADCDAB9512DEA5A23AD68948984ED792 /* Frameworks */, + D9A8A90BA9026C60EBB88397F1058CC8 /* Support Files */, ); - name = Frameworks; + name = Sparkle; + path = Sparkle; sourceTree = ""; }; - 3D413068627A48AB18D4095CA4ADA083 /* Pods */ = { + 3375749C05A48C762103D687EC010FE8 /* Preferences */ = { isa = PBXGroup; children = ( - 6511EF3AEF6305AAE3786476699B77F9 /* LetsMove */, - E6083E90BD3A55613ACFDD24D9ED3E7C /* Preferences */, - DF4D8FA588C2C48F1741E22C3FD0884E /* ShortcutRecorder */, - 2A1499091426F9BEC5523474F9EAE764 /* Sparkle */, - 20D3A9A6299951B9F9BD2FDC8F9DC0BB /* SwiftyMarkdown */, + 65F03A58BDB8C59710E73EEB876AA054 /* Localization.swift */, + E813715DCA3ECCBF7A50A72C29AE1EFB /* PreferencePane.swift */, + B34C582D8EE2767CF77DB606A96D4AD6 /* PreferencesStyle.swift */, + 68D6B2900BE1DDBA86A8075F626DF819 /* PreferencesStyleController.swift */, + C379EC135B54091AD213CEC2969A554C /* PreferencesTabViewController.swift */, + 0DB64C0E8ED28C89750CA91E26927FBD /* PreferencesWindowController.swift */, + 24DDA8269F802300DFD0499698DB26AC /* SegmentedControlStyleViewController.swift */, + D255C3E9B9B3F38F1063FCBE38481E56 /* ToolbarItemStyleViewController.swift */, + 9C5738E5AE3E1FA4482AC852ED2B1114 /* UserInteractionPausableWindow.swift */, + 332D4357367A02FCC59B72B641F7F7F0 /* util.swift */, + F7E1EC328B1E666B28D56C02678F7050 /* Support Files */, + ); + name = Preferences; + path = Preferences; + sourceTree = ""; + }; + 39BB4383AE98736F2A1387F75327AE8C /* Pods */ = { + isa = PBXGroup; + children = ( + E6629302EFBDC1926EBC5CC010E5AC25 /* AppCenter */, + 9D8632E994FDB694EA094673D7564A33 /* LetsMove */, + 3375749C05A48C762103D687EC010FE8 /* Preferences */, + F42FB75B65DB9B21C43C98CF4CFE89EC /* ShortcutRecorder */, + 2EF0FD2F1229879F84AE3BF14177E0F6 /* Sparkle */, + D6C754CC20DE08BBDF3961C198B3AD8C /* SwiftyMarkdown */, ); name = Pods; sourceTree = ""; }; + 4327CA16FA33B97BE68AD256F308AD6B /* Support Files */ = { + isa = PBXGroup; + children = ( + 791F5DDFC42405D0412D0F752DE068D2 /* AppCenter.debug.xcconfig */, + 343ECA0C4E9A0034C3A8190AB9F5A17C /* AppCenter.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/AppCenter"; + sourceTree = ""; + }; 503AF4784BE6FBC45BFA4E106E5AEDDB /* Pods-alt-tab-macos */ = { isa = PBXGroup; children = ( @@ -479,87 +506,78 @@ path = "Target Support Files/Pods-alt-tab-macos"; sourceTree = ""; }; - 57731032497F7E1427E006A237511671 /* Support Files */ = { + 8F6CA027654101700AA8FA9DFEB983CC /* Resources */ = { isa = PBXGroup; children = ( - 8C2A36A34EAD27EDE998993AA2C3C889 /* Preferences.modulemap */, - 4BEECA2C7DA4B21D9E8EDAC9D1A93589 /* Preferences-dummy.m */, - 9FB04F8E6EA6C9AA881502D663521947 /* Preferences-Info.plist */, - 81E9C71410FB0E4B648381EFD4A3519B /* Preferences-prefix.pch */, - E0C73A36C8B4A5AF2B6DF35A63C89387 /* Preferences-umbrella.h */, - 1A933110C77603F7C964996B2DC21C6C /* Preferences.debug.xcconfig */, - 586BCAA7BF1939389EDB6D6642E2425A /* Preferences.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Preferences"; - sourceTree = ""; - }; - 6511EF3AEF6305AAE3786476699B77F9 /* LetsMove */ = { - isa = PBXGroup; - children = ( - 0DCA1A0D659A7387F595FB5B43D5372C /* LetsMove.h */, - 1F2F3145B49D9DB3BAE51E8B7A3930F8 /* PFMoveApplication.h */, - AEE608F7ACB94C5F356E15148F080C37 /* PFMoveApplication.m */, - BF5C94BCBF352F5B460319743E9B48BF /* Resources */, - 8DEF9CEFC117FE96F34E637A46E6BDA9 /* Support Files */, - ); - name = LetsMove; - path = LetsMove; - sourceTree = ""; - }; - 6EF7F694FBE8782E4A833CA26B5104BE /* Resources */ = { - isa = PBXGroup; - children = ( - F2B661DB781A79D318F3CC07F5435C8F /* ca.lproj */, - 692F0B76CE2E434B3CAC9AD45BF2F741 /* cs.lproj */, - DD6AFCD8B457CF70372B8514509C413F /* de.lproj */, - 5D1F88302E4058298C4246BA8CBEB80C /* el.lproj */, - 56FA438195E701402987ADE7D32DBC3B /* en.lproj */, - D2033B6F8F980197C76D40AAB302B91C /* es.lproj */, - 646BB82EA40B8DF1A4AAE13B681E58B5 /* fr.lproj */, - 3DC3E8BA77B5B3168B3187E687E43A47 /* Images.xcassets */, - 346A5D15DC41603659A7D13CE2B4D51C /* it.lproj */, - 33F831F9EB850C9E4D970D22A9DE5F58 /* ja.lproj */, - E624C4D4700EB7DE413A83FBB83B005E /* ko.lproj */, - EE79D0583628F279ADD796C9A83BE80E /* nb.lproj */, - E2209A3A1C69B3211F9C75C6913872FF /* nl.lproj */, - 276F9532825685CAED56EFAB4A9536A9 /* pl.lproj */, - A26EF044A853930BC884BE7CA27C0709 /* pt.lproj */, - 0551EABC34245F5F70AC78BDFFCF8896 /* pt-BR.lproj */, - E3DE9B5897A7E9369DB09018EA1D199F /* ro.lproj */, - C53D764C43A51376171AD41E99B8ABE2 /* ru.lproj */, - 66E66FA2D985FDA3D5737872F7011F2A /* sk.lproj */, - C047F1BCAEC597694D74B4F85EB9DB77 /* sv.lproj */, - D5683EEA745922A2D28A0305E506B8E7 /* th.lproj */, - 81766405980DCB967785BDDE23361C33 /* zh-Hans.lproj */, - DDCD54AC8BC1D62563C3CB60675A4D26 /* zh-Hant.lproj */, + 5139D59E558567E92066E4DF0B96FA71 /* ca.lproj */, + 8C98E9D2E30A810B29580212F87D88C7 /* cs.lproj */, + CCBF2A83B0C3430729A53DF2A0BCF723 /* de.lproj */, + F71FF684F5878B18DCD5CFCDFBDA6088 /* el.lproj */, + E4982267AB80949CCA40853FC2B30266 /* en.lproj */, + 6CDF0F496FDE79042B5332838314A69E /* es.lproj */, + 4F4ED31F44FCC2F9F15187A441B1A56A /* fr.lproj */, + 68E366B8139CC0764E969E2594211529 /* Images.xcassets */, + 4E1624AA6232DF8818FE2A7C47CE7E53 /* it.lproj */, + ACE36A5A4B495CD996036644C83A67ED /* ja.lproj */, + E38B03F37D95A00F61C6C22F1BA9E143 /* ko.lproj */, + BB31755D2FE9551F95AFC4D6FCE4C340 /* nb.lproj */, + 5D234F0532C4F337EFA9A6921B1B2945 /* nl.lproj */, + 1E0D8BBF7C9B018CC89820F932AFA5BC /* pl.lproj */, + 15C09E116B4392386E70AB55734D3774 /* pt.lproj */, + 6AD1D2F597E3330CABA6245068FBADE3 /* pt-BR.lproj */, + 6C5CC2D4785234C184406001C6340B1E /* ro.lproj */, + 89DE81C3C03F619A343BD35C093E5413 /* ru.lproj */, + 28D5AE036BF46C20B791DC5852B80EBD /* sk.lproj */, + 302C16081F7540E9F80D5AF9E0B64739 /* sv.lproj */, + 29E58BA20BBAC57A39F480EB23E1021A /* th.lproj */, + 2D3978C24BD23D0C261459F679314DD4 /* zh-Hans.lproj */, + ED52501281260567C10634577079217F /* zh-Hant.lproj */, ); name = Resources; sourceTree = ""; }; - 8DEF9CEFC117FE96F34E637A46E6BDA9 /* Support Files */ = { + 9A61381CD30450F3A01463CE11C0FA07 /* Resources */ = { isa = PBXGroup; children = ( - 28859F748A541603AB300DBDFA62E87D /* LetsMove.modulemap */, - CFCC52DA333A8C35C6991FC1CD3DF26E /* LetsMove-dummy.m */, - A5E9F532A3241F5331E6FB45BE8AC4C4 /* LetsMove-Info.plist */, - D6BB26D071E36D7F9011C63F8E3B2863 /* LetsMove-prefix.pch */, - AB76A00742E47BBCE180CAF5EE223ECF /* LetsMove-umbrella.h */, - 87FA1323D56196D4BF155B200B6E30D6 /* LetsMove.debug.xcconfig */, - 3DF0840EA08DD59E1A3E6702B6C2CC2A /* LetsMove.release.xcconfig */, + E0A129DF839F952D338F5A89955C42FC /* ca.lproj */, + 937F8245E409BF02E2D0F6FB08B3DBDF /* cs.lproj */, + 71387DF044CF4930981758E67D5298C6 /* da.lproj */, + 807DFAC9DCB5FF7DD080DC6F903EF48E /* de.lproj */, + AC0E1E7F042DF68BABF37F2EF0A5DBF9 /* en.lproj */, + F5A7D97E3CE4ADC900E3CF42BECC8CCB /* es.lproj */, + 1C547440E6EB9C1D244231AD3C4272C0 /* fr.lproj */, + 656D16926B6906C38A7C53C29211C691 /* hu.lproj */, + 4DA48074D2DC92D27D85F526ABC448BE /* it.lproj */, + FEB4D1E78729A1E1ADB06252A3FF8050 /* ja.lproj */, + 5D4A3A483810F2B5AA9B45A8580DF9E3 /* ko.lproj */, + C6180A0EBF570BF69216297CE251E8F0 /* mk.lproj */, + 017FEC1832C48DD0EC0133AFE9E7F064 /* nb.lproj */, + BE1F886A7666419789347236A3CC30A1 /* nl.lproj */, + 7F145D505D7230B79E24DEECC6028B79 /* pl.lproj */, + A13EC9E9AE071EB90EE3F665D00973BF /* pt.lproj */, + 3A7B85983E13701082563CD57CB38C47 /* pt_BR.lproj */, + 152BB8E948C6D969A6292789CDC41A18 /* ru.lproj */, + 5A2869C464EF9925368A3BE3206B85C6 /* sk.lproj */, + 8B0C77CE14DC0476C374C2E9CF78848F /* sr.lproj */, + 4BD7C1DBE9E9EF0C43C6F17C9E9B9851 /* sv.lproj */, + ED4D57137FC82AE40E8E84556CC4D814 /* tr.lproj */, + 6F4E9DA8B6C0E4F1FACF79B333D3A541 /* zh_CN.lproj */, + 15F57D026F2DFA8FA1E4A7ACA1639BCB /* zh_TW.lproj */, ); - name = "Support Files"; - path = "../Target Support Files/LetsMove"; + name = Resources; sourceTree = ""; }; - 96DF020FBE7D647E9206C0409482FE61 /* Support Files */ = { + 9D8632E994FDB694EA094673D7564A33 /* LetsMove */ = { isa = PBXGroup; children = ( - FC7312D66138C39E6EA88A01C121DACA /* Sparkle.debug.xcconfig */, - 8F914EB1CB4B6EEF6D0B48B2405E9039 /* Sparkle.release.xcconfig */, + 5B534AB7FBC0832E46A58B81EC404D41 /* LetsMove.h */, + 319CDA7BDD38A19BFE18B28E1C16A6BA /* PFMoveApplication.h */, + F44F70E9C6F1F3A51D6309CFB670BECE /* PFMoveApplication.m */, + 9A61381CD30450F3A01463CE11C0FA07 /* Resources */, + D9EFBFCFBD3982FC1159314F445E0CF0 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Sparkle"; + name = LetsMove; + path = LetsMove; sourceTree = ""; }; 9DBFCB119023E7E7CD9166825D639F68 /* Targets Support Files */ = { @@ -570,35 +588,28 @@ name = "Targets Support Files"; sourceTree = ""; }; - BF5C94BCBF352F5B460319743E9B48BF /* Resources */ = { + AAA8FF558847E8264FFB7B80D9E542BF /* Frameworks */ = { isa = PBXGroup; children = ( - 3C1345C5BF8561E71A2D26F0C2A1CDFC /* ca.lproj */, - E0FB4CDE9491FC1C156B7325AE1D8857 /* cs.lproj */, - 70A6FDD9C55154B728466D71B09FA6C8 /* da.lproj */, - D3F6CAE71B6E9F84B78E07936CBB97C1 /* de.lproj */, - 148BB5019759347EBD8283EB7841FF50 /* en.lproj */, - 1D50037F82D3616F05DDF23C7C4DEF25 /* es.lproj */, - DF048614E5FA4445186715688D540199 /* fr.lproj */, - BA2813DF3B2085938C375DF45DBDDBEF /* hu.lproj */, - 8A1476336B2A08A494AF955FC91C66CA /* it.lproj */, - 324A18FF751B7B1DDB4E6C657BEB37C6 /* ja.lproj */, - EC118EC31AD795CC3304602F21EF2540 /* ko.lproj */, - 09622939675F4EE31BBE83E19E72DEEB /* mk.lproj */, - 6A9B406A74D0B3CDED2DACA57648AD7D /* nb.lproj */, - B21676942A82066A5F890982D52AF601 /* nl.lproj */, - 0F3CEF0AA17857166E37EA9AF4E1434D /* pl.lproj */, - ABAFF6389D638175EE468A4B6BCF3602 /* pt.lproj */, - C9C45730F9EB9F5D8FA6191C6BE61F9B /* pt_BR.lproj */, - 31FAB4EB6BCFE1750B9DDCCF85C3295D /* ru.lproj */, - CEFC61EA791D4A6418CCFBE1787D6659 /* sk.lproj */, - A57748384CD9843F2EB228A401DE5944 /* sr.lproj */, - BD8644D140BA89A0A856EC194645F193 /* sv.lproj */, - 39E244726490309AE7A83515492E543F /* tr.lproj */, - 4F78EA3AC4DCBE64892D0152597D1020 /* zh_CN.lproj */, - 60EF6FF60A94EF54E652E091F59466F8 /* zh_TW.lproj */, + C61765C901CC5F727736C30D81C8D91D /* AppCenter.framework */, ); - name = Resources; + name = Frameworks; + sourceTree = ""; + }; + ADCDAB9512DEA5A23AD68948984ED792 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4D162B37F6C57E31F2CC90722108A87E /* Sparkle.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + B68CD964E62E8F0300F879EDEBB2AFF5 /* Crashes */ = { + isa = PBXGroup; + children = ( + C9B72EFA76B16AFC79C8FA50511C254B /* Frameworks */, + ); + name = Crashes; sourceTree = ""; }; C080C886C9E2F80D52E3E86A62E5B711 /* Frameworks */ = { @@ -609,71 +620,97 @@ name = Frameworks; sourceTree = ""; }; + C9B72EFA76B16AFC79C8FA50511C254B /* Frameworks */ = { + isa = PBXGroup; + children = ( + BB4FB265A80DD57183591823B0EE5280 /* AppCenterCrashes.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + CCD9A12468806D397E47D432BFE0167C /* Core */ = { + isa = PBXGroup; + children = ( + AAA8FF558847E8264FFB7B80D9E542BF /* Frameworks */, + ); + name = Core; + sourceTree = ""; + }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, C080C886C9E2F80D52E3E86A62E5B711 /* Frameworks */, - 3D413068627A48AB18D4095CA4ADA083 /* Pods */, + 39BB4383AE98736F2A1387F75327AE8C /* Pods */, EDEDF24500585E4F1B77CF8A2C244FFC /* Products */, 9DBFCB119023E7E7CD9166825D639F68 /* Targets Support Files */, ); sourceTree = ""; }; - DF4D8FA588C2C48F1741E22C3FD0884E /* ShortcutRecorder */ = { + D6C754CC20DE08BBDF3961C198B3AD8C /* SwiftyMarkdown */ = { isa = PBXGroup; children = ( - 873F3E775BAC8098A237A45C06412D91 /* ShortcutRecorder.h */, - 0E0A1823A158947EDEAD09D136889AB2 /* SRCommon.h */, - 7478E0A2FD299724C1ACF90FF3696EB8 /* SRCommon.m */, - D5556CA390CFFD665D6FF530DA0D91B7 /* SRKeyBindingTransformer.h */, - 30C88EEDE19AB759F200A3B1A738E8C5 /* SRKeyBindingTransformer.m */, - 4C25347426FB8281EC7C10000B645110 /* SRKeyCodeTransformer.h */, - 0392E1D982316B122CA0B2D4E9B96C31 /* SRKeyCodeTransformer.m */, - BAE7A8E29FBC46A9DC0414F3FA56900F /* SRKeyEquivalentModifierMaskTransformer.h */, - 80849E177BE72C32FDABBD20A67CFBD4 /* SRKeyEquivalentModifierMaskTransformer.m */, - E3FC5D75A84499105F55009A04A10DD7 /* SRKeyEquivalentTransformer.h */, - 50A0AF0D11EA81595B52AC846BAADCDA /* SRKeyEquivalentTransformer.m */, - 5413F1AC1964915DDD1D77E76CDC8A5A /* SRModifierFlagsTransformer.h */, - 95829DA5F921A137F1F6E2628BA30082 /* SRModifierFlagsTransformer.m */, - B6A13407B53E94994BC9C320535D29A3 /* SRRecorderControl.h */, - 972CC2B8C0757D32A4E04B11EC5E843B /* SRRecorderControl.m */, - 928AFF417E86B199D2E9B007ACAAB4E7 /* SRRecorderControlStyle.h */, - 70E800F0EC8C3C4121F7AD5C9410EFE5 /* SRRecorderControlStyle.m */, - C130A2E80C95B66B87A0B7AE22A295F2 /* SRShortcut.h */, - 9315798BAC6D65C43AF979A33F184D6B /* SRShortcut.m */, - CEC77DC6041965487A3D514C234927D2 /* SRShortcutAction.h */, - 5C702E5C682552F77DB84CEF052DAFA4 /* SRShortcutAction.m */, - DA8BCD816EFD85C046AE89262528583B /* SRShortcutController.h */, - 9037168CA94D092844678390BF36F285 /* SRShortcutController.m */, - 3E52FE8EE16AB23687F2DDB5B82CF57E /* SRShortcutFormatter.h */, - ECBC7817C024B1CF45EBFDF10B46BDDB /* SRShortcutFormatter.m */, - 662E5FFCDBDE2567B26349BCE7AE0426 /* SRShortcutValidator.h */, - 2C36ABB90A94BE79B663593081366292 /* SRShortcutValidator.m */, - 6EF7F694FBE8782E4A833CA26B5104BE /* Resources */, - 0DC997BC98DFCACC5F1DEED56B4A81BB /* Support Files */, + 8A1CB113E8DA8EBF59C124568F02FAAA /* String+SwiftyMarkdown.swift */, + E1FE169ECDCBFF2F038121ABB5E39F1E /* SwiftyLineProcessor.swift */, + E1BF61A44688CBA35C1732F2C6D888BD /* SwiftyMarkdown.swift */, + D865AD1F2A3B4CDDF253E9C4015C23BD /* SwiftyMarkdown+iOS.swift */, + FF2B28AD283E3F2F7CFD870E16C72351 /* SwiftyMarkdown+macOS.swift */, + 3A8C95E879BED34DCD192CD70676176F /* SwiftyTokeniser.swift */, + D8165A11DDA35DAFABA5BC31E4677B75 /* Support Files */, ); - name = ShortcutRecorder; - path = ShortcutRecorder; + name = SwiftyMarkdown; + path = SwiftyMarkdown; sourceTree = ""; }; - E6083E90BD3A55613ACFDD24D9ED3E7C /* Preferences */ = { + D8165A11DDA35DAFABA5BC31E4677B75 /* Support Files */ = { isa = PBXGroup; children = ( - 55F0B03D26498F9C489E7B11F301D844 /* Localization.swift */, - D10556F1A37F2213EF692DEF40887397 /* PreferencePane.swift */, - 0BF349E8E070A81986C2D8DB5FB9BF3F /* PreferencesStyle.swift */, - 8438DB082182E152B16A702D9BEB815F /* PreferencesStyleController.swift */, - 4CF6C4472F2059963947D0EF3897F901 /* PreferencesTabViewController.swift */, - 0F37624E4A3C1F285523C7F618E51B07 /* PreferencesWindowController.swift */, - 6B0A57CA6E83EF929BA22189DC6023E0 /* SegmentedControlStyleViewController.swift */, - AD9C32777111FCAC14F8E11E1CA40BBB /* ToolbarItemStyleViewController.swift */, - 5FF2FDF50A2FD567398771682B97B897 /* UserInteractionPausableWindow.swift */, - B8147D026D72FE164E16D4AE2AFD6808 /* util.swift */, - 57731032497F7E1427E006A237511671 /* Support Files */, + 685C7F3E853FA71DB7D5078622B60996 /* SwiftyMarkdown.modulemap */, + CDDE9C7FFB0BF5AE15119B44012F895E /* SwiftyMarkdown-dummy.m */, + 7C569DF566632B468E9BD405EA14FFB0 /* SwiftyMarkdown-Info.plist */, + E75090C9868E0DA1C597C20E84F7AA99 /* SwiftyMarkdown-prefix.pch */, + 8C06A33D1E26AA4DC30125DCB455CF77 /* SwiftyMarkdown-umbrella.h */, + F56AFB74650CA7D2BF19ACA0DACBCE43 /* SwiftyMarkdown.debug.xcconfig */, + 9FC0F355CAF353E5A179706FD0CA5F02 /* SwiftyMarkdown.release.xcconfig */, ); - name = Preferences; - path = Preferences; + name = "Support Files"; + path = "../Target Support Files/SwiftyMarkdown"; + sourceTree = ""; + }; + D9A8A90BA9026C60EBB88397F1058CC8 /* Support Files */ = { + isa = PBXGroup; + children = ( + 8B5308C1460B3102C5410DCE311AA7ED /* Sparkle.debug.xcconfig */, + 9EBF561488A8F207BF7B37235A95E0B4 /* Sparkle.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Sparkle"; + sourceTree = ""; + }; + D9EFBFCFBD3982FC1159314F445E0CF0 /* Support Files */ = { + isa = PBXGroup; + children = ( + 6B269AA67858AF55801096FC2A23F6FA /* LetsMove.modulemap */, + 437FA3EB9DCE5271C46D873B8B9DB858 /* LetsMove-dummy.m */, + 778B2BF12DD5E0788128824056C32A8E /* LetsMove-Info.plist */, + 31A027918B604B7C90381399709AE9EC /* LetsMove-prefix.pch */, + DE480A6F7C010852FEEDDB220263870D /* LetsMove-umbrella.h */, + B114B448784E65EEB129CE10E3E46A5C /* LetsMove.debug.xcconfig */, + 44FDCC58CCD668E0A47D342661973F63 /* LetsMove.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LetsMove"; + sourceTree = ""; + }; + E6629302EFBDC1926EBC5CC010E5AC25 /* AppCenter */ = { + isa = PBXGroup; + children = ( + CCD9A12468806D397E47D432BFE0167C /* Core */, + B68CD964E62E8F0300F879EDEBB2AFF5 /* Crashes */, + 4327CA16FA33B97BE68AD256F308AD6B /* Support Files */, + ); + name = AppCenter; + path = AppCenter; sourceTree = ""; }; EDEDF24500585E4F1B77CF8A2C244FFC /* Products */ = { @@ -688,24 +725,69 @@ name = Products; sourceTree = ""; }; - FF4E89F0FE64B38E2EBAF440B62A23AD /* Support Files */ = { + F42FB75B65DB9B21C43C98CF4CFE89EC /* ShortcutRecorder */ = { isa = PBXGroup; children = ( - 7264B6FA7F58F1EA59E465DC88C250D3 /* SwiftyMarkdown.modulemap */, - F694A0EB56716B4A0C509AC2185C2B3E /* SwiftyMarkdown-dummy.m */, - 818C7832AF2DA5EB83EE78D7ECEBEE14 /* SwiftyMarkdown-Info.plist */, - E16BF5B2E49479661FA6BF65652747D2 /* SwiftyMarkdown-prefix.pch */, - 724F9C6739A2F8BA2CAF538B928201E0 /* SwiftyMarkdown-umbrella.h */, - 3C232D47ECC282432B8AA9D362AE8C0D /* SwiftyMarkdown.debug.xcconfig */, - 6A62C708622A3ECB9ED597AD909FA362 /* SwiftyMarkdown.release.xcconfig */, + D471658D32EDC44AACCCF959A8F73422 /* ShortcutRecorder.h */, + 1585C889C66C1758F09C157FD01DEC56 /* SRCommon.h */, + E007B81FDB12CD80FC731515B7B8758F /* SRCommon.m */, + 811AF957C8F98810F829A6819A743DCA /* SRKeyBindingTransformer.h */, + 288C82B6FFF955CF055E443690DCAC21 /* SRKeyBindingTransformer.m */, + 6B24D18BE572CB16C5CF79E2DCF21B04 /* SRKeyCodeTransformer.h */, + D1758E19F93FA2577732F67C9BA6F2FA /* SRKeyCodeTransformer.m */, + 81DE77E3ABD1A29BD2713A4D11F67CE9 /* SRKeyEquivalentModifierMaskTransformer.h */, + 61588722256C7D5213D1D634C987975C /* SRKeyEquivalentModifierMaskTransformer.m */, + F1B545B7425D9FC19CD03190DAF2EBB9 /* SRKeyEquivalentTransformer.h */, + AA85C06212529EE5384E1421038B038E /* SRKeyEquivalentTransformer.m */, + ED297791AE45F263F0D523B7C54B0B92 /* SRModifierFlagsTransformer.h */, + 4A1BDCD10CC1A9F22EE03E006FFE1FCE /* SRModifierFlagsTransformer.m */, + 1969017D600BE626851CD806952E2D13 /* SRRecorderControl.h */, + 6B5306D3E890920B2B8C77FB13B05C99 /* SRRecorderControl.m */, + 820682A23CECDA05F4F32C1F77C5A7ED /* SRRecorderControlStyle.h */, + 2F0127670A14E03D0703B558424F0E36 /* SRRecorderControlStyle.m */, + FC2DEDF38F8C0D8F09B15C4D2DE839A4 /* SRShortcut.h */, + EEBA571B2DE5FEE6EC76C2CC0DFBAF08 /* SRShortcut.m */, + 10969276117E1256B7C78110A8A29395 /* SRShortcutAction.h */, + 0741A4F5AA695E6959A412E55707C588 /* SRShortcutAction.m */, + FBB84886802306F850919F9E30383534 /* SRShortcutController.h */, + 64EF0614B68FD8FCDFC27A334131DC5C /* SRShortcutController.m */, + 73B9D35E00213BE801F0EFA72C8CBE98 /* SRShortcutFormatter.h */, + DD2CFA154D289267DD415910482035AD /* SRShortcutFormatter.m */, + 082A0E00373C623A45DEB59C01C7FF9B /* SRShortcutValidator.h */, + 550BCA7368F04AA330E970BDDDBD5A00 /* SRShortcutValidator.m */, + 8F6CA027654101700AA8FA9DFEB983CC /* Resources */, + 09B28F37A9767C03E14B74B60B0CAFF2 /* Support Files */, + ); + name = ShortcutRecorder; + path = ShortcutRecorder; + sourceTree = ""; + }; + F7E1EC328B1E666B28D56C02678F7050 /* Support Files */ = { + isa = PBXGroup; + children = ( + 7B793BDD893A79F03361B4D541CF3F98 /* Preferences.modulemap */, + 0342F3DB3D1C4AFBF800919AD26A7CFA /* Preferences-dummy.m */, + 4837783F508C28E1A39D0C99859C5552 /* Preferences-Info.plist */, + 39A81B4043FB47C841A425FCBB24C3BE /* Preferences-prefix.pch */, + D3F00FECBAC395E72886441C418BC4F7 /* Preferences-umbrella.h */, + 8270D55A808D6A03B100843A0EB1A95B /* Preferences.debug.xcconfig */, + 946D0F90B82D5B036139C0DB871540C6 /* Preferences.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/SwiftyMarkdown"; + path = "../Target Support Files/Preferences"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 3D1ED038E53988B75453A2918488A3C5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 23F2B9243095A9EB5F4FEBE106673121 /* Pods-alt-tab-macos-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3F99395CDAA04872E20139D45F2930B2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -744,14 +826,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6DC6E73AC74DB7C25774F8832DBFF2B4 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 8F1D782BD8C586C96505E49EEC60BA36 /* Pods-alt-tab-macos-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 8682336F8F6134B31C69E486A4DA6672 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -821,21 +895,22 @@ }; DA8AE0681767D7A898B5697F983F9881 /* Pods-alt-tab-macos */ = { isa = PBXNativeTarget; - buildConfigurationList = 15DE95FC3B2FB559AB4180FE0147D1B8 /* Build configuration list for PBXNativeTarget "Pods-alt-tab-macos" */; + buildConfigurationList = D7E818E02DB018F599BC72F134191067 /* Build configuration list for PBXNativeTarget "Pods-alt-tab-macos" */; buildPhases = ( - 6DC6E73AC74DB7C25774F8832DBFF2B4 /* Headers */, - ADCC4411F6C24402B50570FD741C3BDA /* Sources */, - A12BB3AE73E36B766602C6F87DE12500 /* Frameworks */, - BD18399B11166ED23480931101DB2F69 /* Resources */, + 3D1ED038E53988B75453A2918488A3C5 /* Headers */, + C1FBECA3E01339D64BE594931D92F417 /* Sources */, + BDE54F173DDBC72829FFA3533F76513B /* Frameworks */, + 53231DA06B8C69CF593CA476CFA18E81 /* Resources */, ); buildRules = ( ); dependencies = ( - D5BF66ED31D0F837D5A7C5846398214B /* PBXTargetDependency */, - FB95C821DDEE4569E2D3E52EEA5EED2D /* PBXTargetDependency */, - 36B476683688B8A3429A19B2C4715E8A /* PBXTargetDependency */, - 89D637AD43FFD98B7A0DEDED2C65C627 /* PBXTargetDependency */, - 495B1B06F081A4C076783DF48FB4A013 /* PBXTargetDependency */, + EA9355DBEAE855F4C3DCB5E476EB50E2 /* PBXTargetDependency */, + 969034F714CA41947D78D50CAD8B38FD /* PBXTargetDependency */, + 9D2A5EE4DBC586CDD2C6BF0BC9E309CD /* PBXTargetDependency */, + 6E999061D31AB4F7F633703F5F998B00 /* PBXTargetDependency */, + 18365A6D4570014F690C7C63ED2B0648 /* PBXTargetDependency */, + 38FACD3306ABEF8C929E83D54EB1119B /* PBXTargetDependency */, ); name = "Pods-alt-tab-macos"; productName = "Pods-alt-tab-macos"; @@ -882,6 +957,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( + A3282A5B2437E609EEB85861D7ECE717 /* AppCenter */, F83960005EA88D0C24A1D277DD0E8667 /* LetsMove */, DA8AE0681767D7A898B5697F983F9881 /* Pods-alt-tab-macos */, 080990A33C8E049DC557762B0B4240DB /* Preferences */, @@ -893,6 +969,13 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 53231DA06B8C69CF593CA476CFA18E81 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7F3D7B95BD01DB0B8D7BB53FBE48E00C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -923,13 +1006,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BD18399B11166ED23480931101DB2F69 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; D12E0566EE75B1FDDA9AFDFF33629671 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1040,53 +1116,95 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - ADCC4411F6C24402B50570FD741C3BDA /* Sources */ = { + C1FBECA3E01339D64BE594931D92F417 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5B56114FA0E0C817FA294C155CB4E20D /* Pods-alt-tab-macos-dummy.m in Sources */, + F94581D089BA9737E8529184FD9F48C9 /* Pods-alt-tab-macos-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 36B476683688B8A3429A19B2C4715E8A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ShortcutRecorder; - target = D94AE99BF0C9025247C40F440DC9DB50 /* ShortcutRecorder */; - targetProxy = C09E3715D3ED68E8A130C3E458C69ADF /* PBXContainerItemProxy */; - }; - 495B1B06F081A4C076783DF48FB4A013 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyMarkdown; - target = 93523582DEC251A9E59F621510B882C3 /* SwiftyMarkdown */; - targetProxy = 6CE1104FD951FBFE360AB3895E710ABB /* PBXContainerItemProxy */; - }; - 89D637AD43FFD98B7A0DEDED2C65C627 /* PBXTargetDependency */ = { + 18365A6D4570014F690C7C63ED2B0648 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Sparkle; target = ED77B4B88587C894E85C361023D67C53 /* Sparkle */; - targetProxy = E63A1D71551B560E3990A4EA6424D7C9 /* PBXContainerItemProxy */; + targetProxy = C87FDBA73C07008C3B575D8E96E1484F /* PBXContainerItemProxy */; }; - D5BF66ED31D0F837D5A7C5846398214B /* PBXTargetDependency */ = { + 38FACD3306ABEF8C929E83D54EB1119B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftyMarkdown; + target = 93523582DEC251A9E59F621510B882C3 /* SwiftyMarkdown */; + targetProxy = AAE081B017B87D625307A03A1201CDFF /* PBXContainerItemProxy */; + }; + 6E999061D31AB4F7F633703F5F998B00 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ShortcutRecorder; + target = D94AE99BF0C9025247C40F440DC9DB50 /* ShortcutRecorder */; + targetProxy = DB2F4A926219B303EEEADDA72B7B71CD /* PBXContainerItemProxy */; + }; + 969034F714CA41947D78D50CAD8B38FD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = LetsMove; target = F83960005EA88D0C24A1D277DD0E8667 /* LetsMove */; - targetProxy = 0CCA584C587AEA50E28D24E7599DE7BC /* PBXContainerItemProxy */; + targetProxy = 115420BAE7F6E1FD3C8F239329C90799 /* PBXContainerItemProxy */; }; - FB95C821DDEE4569E2D3E52EEA5EED2D /* PBXTargetDependency */ = { + 9D2A5EE4DBC586CDD2C6BF0BC9E309CD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Preferences; target = 080990A33C8E049DC557762B0B4240DB /* Preferences */; - targetProxy = CDD5E7DB19D441ACE862E1D07C47EFFA /* PBXContainerItemProxy */; + targetProxy = 3CB2A7F668104E855DCDE9FA0FE15ECE /* PBXContainerItemProxy */; + }; + EA9355DBEAE855F4C3DCB5E476EB50E2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AppCenter; + target = A3282A5B2437E609EEB85861D7ECE717 /* AppCenter */; + targetProxy = BB806852C3CB124A4C8BE1A713F2385F /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 1E72C8A46AF976DC7EB766FCE846908E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DCA0A6B74F3699962F44535ACC0B5945 /* Pods-alt-tab-macos.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.12; + MODULEMAP_FILE = "Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 29CAFAC9EC1DA31DE9DA8ABDDFEE994F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 586BCAA7BF1939389EDB6D6642E2425A /* Preferences.release.xcconfig */; + baseConfigurationReference = 946D0F90B82D5B036139C0DB871540C6 /* Preferences.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1180,7 +1298,7 @@ }; 2FB74A4BA0770AE8C044760AD3F72E89 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1A933110C77603F7C964996B2DC21C6C /* Preferences.debug.xcconfig */; + baseConfigurationReference = 8270D55A808D6A03B100843A0EB1A95B /* Preferences.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1214,7 +1332,7 @@ }; 53119FED25D50CAD8C89D980B8FCB179 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8F914EB1CB4B6EEF6D0B48B2405E9039 /* Sparkle.release.xcconfig */; + baseConfigurationReference = 9EBF561488A8F207BF7B37235A95E0B4 /* Sparkle.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1228,7 +1346,7 @@ }; 59999EBC3E317FC5DE17F29E37C4F95E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3DF0840EA08DD59E1A3E6702B6C2CC2A /* LetsMove.release.xcconfig */; + baseConfigurationReference = 44FDCC58CCD668E0A47D342661973F63 /* LetsMove.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1260,42 +1378,6 @@ }; name = Release; }; - 5A56A1D8DBF667DEABBFC341EE436893 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7475BBC3CE1397DCE052D215F2D73234 /* Pods-alt-tab-macos.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.12; - MODULEMAP_FILE = "Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 816C679D58750316935F7386A438309D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1362,7 +1444,7 @@ }; 83AFD6423969CD41D7582445F70A1568 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 87FA1323D56196D4BF155B200B6E30D6 /* LetsMove.debug.xcconfig */; + baseConfigurationReference = B114B448784E65EEB129CE10E3E46A5C /* LetsMove.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1396,7 +1478,7 @@ }; A8142E01EDFD8D2A43D470D404D97B7A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 73FB426CEB2A10C50A4DEEED7CB5BFFC /* ShortcutRecorder.release.xcconfig */; + baseConfigurationReference = 3310186DFBD5148E9D5D5CF0233AD4A7 /* ShortcutRecorder.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1428,9 +1510,23 @@ }; name = Release; }; + AA58B79AC9B8A89DE30ACE80088E977B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 343ECA0C4E9A0034C3A8190AB9F5A17C /* AppCenter.release.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + SDKROOT = macosx; + }; + name = Release; + }; D24DE9D59732B3D89F58ACD78EB5F326 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FC7312D66138C39E6EA88A01C121DACA /* Sparkle.debug.xcconfig */; + baseConfigurationReference = 8B5308C1460B3102C5410DCE311AA7ED /* Sparkle.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -1444,7 +1540,7 @@ }; D76C4EC72B7AF1782357C7149D66D5C7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3C232D47ECC282432B8AA9D362AE8C0D /* SwiftyMarkdown.debug.xcconfig */; + baseConfigurationReference = F56AFB74650CA7D2BF19ACA0DACBCE43 /* SwiftyMarkdown.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1476,9 +1572,23 @@ }; name = Debug; }; + EA34315A01BB6A822F5CE3E08B1742B9 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 791F5DDFC42405D0412D0F752DE068D2 /* AppCenter.debug.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + SDKROOT = macosx; + }; + name = Debug; + }; EF04CAF450752F3FC331757CB84767C4 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6A62C708622A3ECB9ED597AD909FA362 /* SwiftyMarkdown.release.xcconfig */; + baseConfigurationReference = 9FC0F355CAF353E5A179706FD0CA5F02 /* SwiftyMarkdown.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1512,7 +1622,7 @@ }; F1272D81B263A77EA098E6440A4649D4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5C2151969666D5447B77FC0B6C7DBAB2 /* ShortcutRecorder.debug.xcconfig */; + baseConfigurationReference = EE1A7B05170B4D6C88A53D153FE44346 /* ShortcutRecorder.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1544,9 +1654,9 @@ }; name = Debug; }; - FA8A263C40CD32501AD35E0D166E23C2 /* Debug */ = { + FDA8FBCC61557E7973DBF23FFA2E104B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DCA0A6B74F3699962F44535ACC0B5945 /* Pods-alt-tab-macos.debug.xcconfig */; + baseConfigurationReference = 7475BBC3CE1397DCE052D215F2D73234 /* Pods-alt-tab-macos.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; @@ -1578,7 +1688,7 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; /* End XCBuildConfiguration section */ @@ -1592,15 +1702,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 15DE95FC3B2FB559AB4180FE0147D1B8 /* Build configuration list for PBXNativeTarget "Pods-alt-tab-macos" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FA8A263C40CD32501AD35E0D166E23C2 /* Debug */, - 5A56A1D8DBF667DEABBFC341EE436893 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 2C8D06A2289713323892B3638F08AC0B /* Build configuration list for PBXAggregateTarget "Sparkle" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1646,6 +1747,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + D0944D0DEFF9CDF0CBE6D4A41B195020 /* Build configuration list for PBXAggregateTarget "AppCenter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EA34315A01BB6A822F5CE3E08B1742B9 /* Debug */, + AA58B79AC9B8A89DE30ACE80088E977B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D7E818E02DB018F599BC72F134191067 /* Build configuration list for PBXNativeTarget "Pods-alt-tab-macos" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1E72C8A46AF976DC7EB766FCE846908E /* Debug */, + FDA8FBCC61557E7973DBF23FFA2E104B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; diff --git a/Pods/Target Support Files/AppCenter/AppCenter.debug.xcconfig b/Pods/Target Support Files/AppCenter/AppCenter.debug.xcconfig new file mode 100644 index 00000000..cfb350db --- /dev/null +++ b/Pods/Target Support Files/AppCenter/AppCenter.debug.xcconfig @@ -0,0 +1,12 @@ +CODE_SIGN_IDENTITY = +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AppCenter +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/macOS" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AppKit" -framework "Foundation" -framework "SystemConfiguration" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/AppCenter +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/AppCenter/AppCenter.release.xcconfig b/Pods/Target Support Files/AppCenter/AppCenter.release.xcconfig new file mode 100644 index 00000000..cfb350db --- /dev/null +++ b/Pods/Target Support Files/AppCenter/AppCenter.release.xcconfig @@ -0,0 +1,12 @@ +CODE_SIGN_IDENTITY = +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AppCenter +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/macOS" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -l"c++" -l"sqlite3" -l"z" -framework "AppKit" -framework "Foundation" -framework "SystemConfiguration" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/AppCenter +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-acknowledgements.markdown b/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-acknowledgements.markdown index 1cf5ab4e..2262f8d2 100644 --- a/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-acknowledgements.markdown @@ -1,6 +1,34 @@ # Acknowledgements This application makes use of the following third party libraries: +## AppCenter + +Visual Studio App Center SDK for Apple platforms + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + ## Preferences MIT License diff --git a/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-acknowledgements.plist b/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-acknowledgements.plist index 85458292..9ecb4eb2 100644 --- a/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos-acknowledgements.plist @@ -12,6 +12,40 @@ Type PSGroupSpecifier + + FooterText + Visual Studio App Center SDK for Apple platforms + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + License + MIT + Title + AppCenter + Type + PSGroupSpecifier + FooterText MIT License diff --git a/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.debug.xcconfig b/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.debug.xcconfig index 31c5f427..b9898580 100644 --- a/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.debug.xcconfig +++ b/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.debug.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LetsMove" "${PODS_CONFIGURATION_BUILD_DIR}/Preferences" "${PODS_CONFIGURATION_BUILD_DIR}/ShortcutRecorder" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyMarkdown" "${PODS_ROOT}/Sparkle" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LetsMove" "${PODS_CONFIGURATION_BUILD_DIR}/Preferences" "${PODS_CONFIGURATION_BUILD_DIR}/ShortcutRecorder" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyMarkdown" "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/macOS" "${PODS_ROOT}/Sparkle" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LetsMove/LetsMove.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Preferences/Preferences.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ShortcutRecorder/ShortcutRecorder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyMarkdown/SwiftyMarkdown.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' @loader_path/../Frameworks -OTHER_LDFLAGS = $(inherited) -framework "Carbon" -framework "Cocoa" -framework "LetsMove" -framework "Preferences" -framework "ShortcutRecorder" -framework "Sparkle" -framework "SwiftyMarkdown" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"z" -framework "AppCenter" -framework "AppCenterCrashes" -framework "AppKit" -framework "Carbon" -framework "Cocoa" -framework "Foundation" -framework "LetsMove" -framework "Preferences" -framework "ShortcutRecorder" -framework "Sparkle" -framework "SwiftyMarkdown" -framework "SystemConfiguration" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.release.xcconfig b/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.release.xcconfig index 31c5f427..b9898580 100644 --- a/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.release.xcconfig +++ b/Pods/Target Support Files/Pods-alt-tab-macos/Pods-alt-tab-macos.release.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LetsMove" "${PODS_CONFIGURATION_BUILD_DIR}/Preferences" "${PODS_CONFIGURATION_BUILD_DIR}/ShortcutRecorder" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyMarkdown" "${PODS_ROOT}/Sparkle" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LetsMove" "${PODS_CONFIGURATION_BUILD_DIR}/Preferences" "${PODS_CONFIGURATION_BUILD_DIR}/ShortcutRecorder" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyMarkdown" "${PODS_ROOT}/AppCenter/AppCenter-SDK-Apple/macOS" "${PODS_ROOT}/Sparkle" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LetsMove/LetsMove.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Preferences/Preferences.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ShortcutRecorder/ShortcutRecorder.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyMarkdown/SwiftyMarkdown.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' @loader_path/../Frameworks -OTHER_LDFLAGS = $(inherited) -framework "Carbon" -framework "Cocoa" -framework "LetsMove" -framework "Preferences" -framework "ShortcutRecorder" -framework "Sparkle" -framework "SwiftyMarkdown" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"sqlite3" -l"z" -framework "AppCenter" -framework "AppCenterCrashes" -framework "AppKit" -framework "Carbon" -framework "Cocoa" -framework "Foundation" -framework "LetsMove" -framework "Preferences" -framework "ShortcutRecorder" -framework "Sparkle" -framework "SwiftyMarkdown" -framework "SystemConfiguration" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/alt-tab-macos.xcodeproj/project.pbxproj b/alt-tab-macos.xcodeproj/project.pbxproj index c529642b..c67af02a 100644 --- a/alt-tab-macos.xcodeproj/project.pbxproj +++ b/alt-tab-macos.xcodeproj/project.pbxproj @@ -43,6 +43,7 @@ D04BA48B00B4211A465C7337 /* DebugProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BACABD048E62EBE4576CC /* DebugProfile.swift */; }; D04BA4A11F821548EE3C5E95 /* Bash.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA514F1C4B475B3CA6EB6 /* Bash.swift */; }; D04BA530F00E5989D66C6A1F /* Contributors.md in Resources */ = {isa = PBXBuildFile; fileRef = D04BA812B8DCB915B8F4B915 /* Contributors.md */; }; + D04BA56789A2AF52557A9BFF /* AppCenterCrashes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA7E3EA104941FE76DA70 /* AppCenterCrashes.swift */; }; D04BA5863E8AD08C36B52F80 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D04BAC86E60B1B850059BC54 /* Localizable.strings */; }; D04BA6187A91A847844B6ABB /* Window.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA015A45DE7AFDC9794FE /* Window.swift */; }; D04BA6840A558A00A66CE135 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D04BA2E45431E6927F43C0C3 /* Localizable.strings */; }; @@ -58,7 +59,7 @@ D04BA7BE7F3DD24D58ACE942 /* AppearanceTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA64F1F344007EA13BA05 /* AppearanceTab.swift */; }; D04BA7E39FA539DD8316447A /* PermissionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA0726EABD146753B9EF8 /* PermissionView.swift */; }; D04BA7F86F1926FBE31F44BF /* BaseLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA53992F116E5E704CAB3 /* BaseLabel.swift */; }; - D04BA8092885B40CE3527370 /* UpdatesTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BAD60C97E609A759E721E /* UpdatesTab.swift */; }; + D04BA8092885B40CE3527370 /* PoliciesTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BAD60C97E609A759E721E /* PoliciesTab.swift */; }; D04BA83AF2B1C3C5166C119F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D04BAD58DF3FA085A45BEB50 /* InfoPlist.strings */; }; D04BA8480A8FF466CA89DA5B /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04BA70746DEEC3D30B43F81 /* main.swift */; }; D04BA867733CC32975EEDA7B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D04BA64436BF69C58372968C /* InfoPlist.strings */; }; @@ -183,6 +184,7 @@ D04BA68C2561D9EE4FD851B8 /* Screen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Screen.swift; sourceTree = ""; }; D04BA6BBFD0E87B8458E91D3 /* feature-suggestion.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = "feature-suggestion.md"; sourceTree = ""; }; D04BA6D57A1456C07318B8EA /* GridView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GridView.swift; sourceTree = ""; }; + D04BA6ED38651224DB117A5A /* upload_symbols_to_appcenter.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = upload_symbols_to_appcenter.sh; sourceTree = ""; }; D04BA6EF1954DCE80E539142 /* base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = base.xcconfig; sourceTree = ""; }; D04BA6F823BC0EDA9AA4B80A /* AXUIElement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AXUIElement.swift; sourceTree = ""; }; D04BA70746DEEC3D30B43F81 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; @@ -200,6 +202,7 @@ D04BA7C836A8CE8C0B8D128B /* TextArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextArea.swift; sourceTree = ""; }; D04BA7CF9C2D1BEC7C05AB24 /* Spaces.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Spaces.swift; sourceTree = ""; }; D04BA7E388B365A41C92E31B /* safari-pinned-tab.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; path = "safari-pinned-tab.svg"; sourceTree = ""; }; + D04BA7E3EA104941FE76DA70 /* AppCenterCrashes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppCenterCrashes.swift; sourceTree = ""; }; D04BA7F8F1F44D5D9844BFF5 /* ar */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ar; path = InfoPlist.strings; sourceTree = ""; }; D04BA812B8DCB915B8F4B915 /* Contributors.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = Contributors.md; sourceTree = ""; }; D04BA81B25C166EFB3223639 /* extract_l10n_strings.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = extract_l10n_strings.sh; sourceTree = ""; }; @@ -255,7 +258,7 @@ D04BAD241A6928F45355B315 /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = Localizable.strings; sourceTree = ""; }; D04BAD2A5EFA477F1BC436B4 /* import_certificate_into_new_keychain.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = import_certificate_into_new_keychain.sh; sourceTree = ""; }; D04BAD40CE2D3A8AAC3819D0 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = file.gitignore; path = .gitignore; sourceTree = ""; }; - D04BAD60C97E609A759E721E /* UpdatesTab.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdatesTab.swift; sourceTree = ""; }; + D04BAD60C97E609A759E721E /* PoliciesTab.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PoliciesTab.swift; sourceTree = ""; }; D04BAD65AA870A49D2F89DBC /* ensure_generated_files_are_up_to_date.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = ensure_generated_files_are_up_to_date.sh; sourceTree = ""; }; D04BAD6700415D6F7C8B2BEE /* travis.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = travis.sh; sourceTree = ""; }; D04BAD7008ED1D9CBC147A75 /* pull_request_template.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = pull_request_template.md; sourceTree = ""; }; @@ -341,6 +344,7 @@ D04BAB74451B79FE18B8BEDF /* BackgroundWork.swift */, D04BACABD048E62EBE4576CC /* DebugProfile.swift */, D04BAC8857A527C2E15D6598 /* events */, + D04BA7E3EA104941FE76DA70 /* AppCenterCrashes.swift */, ); path = logic; sourceTree = ""; @@ -480,7 +484,7 @@ D04BA64F1F344007EA13BA05 /* AppearanceTab.swift */, D04BA4A26987F67DD94C827F /* AboutTab.swift */, D04BACE22DC907F03D193075 /* GeneralTab.swift */, - D04BAD60C97E609A759E721E /* UpdatesTab.swift */, + D04BAD60C97E609A759E721E /* PoliciesTab.swift */, D04BA788228BA86D9EFBD1ED /* AcknowledgmentsTab.swift */, D04BA27695D9A5824720BD7B /* BlacklistsTab.swift */, ); @@ -629,6 +633,7 @@ D04BA4D5DF349429527824A2 /* determine_version.sh */, D04BAAE6E6823304D66B74F8 /* update_website.sh */, D04BA7A758026814667273DC /* convert_iconset_to_icns.sh */, + D04BA6ED38651224DB117A5A /* upload_symbols_to_appcenter.sh */, ); path = scripts; sourceTree = ""; @@ -1083,7 +1088,7 @@ D04BA7BE7F3DD24D58ACE942 /* AppearanceTab.swift in Sources */, D04BAD1BE9DC22C48C53D195 /* AboutTab.swift in Sources */, D04BA15A1B0C4871EA7CB899 /* GeneralTab.swift in Sources */, - D04BA8092885B40CE3527370 /* UpdatesTab.swift in Sources */, + D04BA8092885B40CE3527370 /* PoliciesTab.swift in Sources */, D04BAD451966B43720120D2E /* Menubar.swift in Sources */, D04BA2E64C59D96F6EB27D9D /* FeedbackWindow.swift in Sources */, D04BA76A74267B1346D23687 /* GridView.swift in Sources */, @@ -1106,6 +1111,7 @@ D04BA446D702C5E252AF2319 /* TitleLabel.swift in Sources */, D04BAD43C122A1C7E88B0362 /* MouseEvents.swift in Sources */, D04BAFF30A98CF287F85DA1E /* BlacklistsTab.swift in Sources */, + D04BA56789A2AF52557A9BFF /* AppCenterCrashes.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/resources/l10n/Localizable.strings b/resources/l10n/Localizable.strings index f6b3bb08..c59388f3 100644 --- a/resources/l10n/Localizable.strings +++ b/resources/l10n/Localizable.strings @@ -34,9 +34,15 @@ /* No comment provided by engineer. */ "Allowed" = "Allowed"; +/* No comment provided by engineer. */ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /* No comment provided by engineer. */ "AltTab needs some permissions" = "AltTab needs some permissions"; +/* No comment provided by engineer. */ +"Always send crash reports" = "Always send crash reports"; + /* No comment provided by engineer. */ "and press:" = "and press:"; @@ -52,6 +58,9 @@ /* No comment provided by engineer. */ "Arrow keys" = "Arrow keys"; +/* No comment provided by engineer. */ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /* No comment provided by engineer. */ "Auto-install updates periodically" = "Auto-install updates periodically"; @@ -79,9 +88,15 @@ /* No comment provided by engineer. */ "Close window" = "Close window"; +/* No comment provided by engineer. */ +"Crash reports policy:" = "Crash reports policy:"; + /* No comment provided by engineer. */ "Don’t check for updates periodically" = "Don’t check for updates periodically"; +/* No comment provided by engineer. */ +"Don’t send" = "Don’t send"; + /* No comment provided by engineer. */ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -148,6 +163,9 @@ /* No comment provided by engineer. */ "Mouse hover" = "Mouse hover"; +/* No comment provided by engineer. */ +"Never send crash reports" = "Never send crash reports"; + /* No comment provided by engineer. */ "Not allowed" = "Not allowed"; @@ -166,6 +184,9 @@ /* No comment provided by engineer. */ "or press:" = "or press:"; +/* No comment provided by engineer. */ +"Policies" = "Policies"; + /* Menubar option */ "Preferences…" = "Preferences…"; @@ -178,6 +199,9 @@ /* No comment provided by engineer. */ "Quit app" = "Quit app"; +/* No comment provided by engineer. */ +"Remember my choice" = "Remember my choice"; + /* No comment provided by engineer. */ "Rows of windows:" = "Rows of windows:"; @@ -205,6 +229,9 @@ /* No comment provided by engineer. */ "Send" = "Send"; +/* No comment provided by engineer. */ +"Send a crash report?" = "Send a crash report?"; + /* No comment provided by engineer. */ "Send anyway" = "Send anyway"; @@ -253,9 +280,6 @@ /* No comment provided by engineer. */ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/* No comment provided by engineer. */ -"Updates" = "Updates"; - /* No comment provided by engineer. */ "Updates policy:" = "Updates policy:"; diff --git a/resources/l10n/ar.lproj/Localizable.strings b/resources/l10n/ar.lproj/Localizable.strings index af7addb9..252c4188 100644 --- a/resources/l10n/ar.lproj/Localizable.strings +++ b/resources/l10n/ar.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "أزرار الأسهم"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "تثبيت التحديثات بشكل دوري تلقائي"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "إغلاق النافذة"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "لا تبحث عن تحديثات بشكل دوري"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "تمرير المؤشر"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "التفضيلات…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "إغلاق البرنامج"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "صفوف النوافذ:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "إرسال"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "إرسال على أية حال"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "تحديثات"; - /*No comment provided by engineer.*/ "Updates policy:" = "سياسة التحديثات:"; diff --git a/resources/l10n/de.lproj/Localizable.strings b/resources/l10n/de.lproj/Localizable.strings index 63ec90e5..82e93f69 100644 --- a/resources/l10n/de.lproj/Localizable.strings +++ b/resources/l10n/de.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Erlaubt"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab braucht einige Berechtigungen"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Pfeiltasten"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Updates regelmäßig automatisch installieren"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Fenster schließen"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Nicht regelmäßig nach Updates suchen"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Fenster dieser Anwendungen nicht anzeigen"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Maus hover"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Nicht erlaubt"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Einstellungen…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "App beenden"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Fenster Reihen:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Senden"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Trotzdem senden"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "Diese Erlaubnis is nötig um Bildschirmaufnahmen und Titel offener Fenster anzuzeigen"; -/*No comment provided by engineer.*/ -"Updates" = "Updates"; - /*No comment provided by engineer.*/ "Updates policy:" = "Update Richtlinie:"; diff --git a/resources/l10n/en.lproj/Localizable.strings b/resources/l10n/en.lproj/Localizable.strings index 7bb6184b..1fbb5fe9 100644 --- a/resources/l10n/en.lproj/Localizable.strings +++ b/resources/l10n/en.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Arrow keys"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Auto-install updates periodically"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Close window"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Don’t check for updates periodically"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Mouse hover"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Preferences…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Quit app"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Rows of windows:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Send"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Send anyway"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "Updates"; - /*No comment provided by engineer.*/ "Updates policy:" = "Updates policy:"; diff --git a/resources/l10n/es.lproj/Localizable.strings b/resources/l10n/es.lproj/Localizable.strings index d35d66a6..350b6c24 100644 --- a/resources/l10n/es.lproj/Localizable.strings +++ b/resources/l10n/es.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Teclas de flecha"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Auto instalar actualizaciones periódicamente"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Cerrar ventana"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "No comprobar actualizaciones periódicamente"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Al pasar el ratón"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Preferencias…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Cerrar aplicación"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Filas de ventanas:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Enviar"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Send anyway"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "Actualizaciones"; - /*No comment provided by engineer.*/ "Updates policy:" = "Política de actualizaciones:"; diff --git a/resources/l10n/fi.lproj/Localizable.strings b/resources/l10n/fi.lproj/Localizable.strings index 513a12c6..34e5875e 100644 --- a/resources/l10n/fi.lproj/Localizable.strings +++ b/resources/l10n/fi.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Nuolinäppäimet"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Asenna päivitykset automaattisesti aika ajoin"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Sulje ikkuna"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Älä tarkista päivityksiä"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Hiiren liike"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Asetukset…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Sulje ohjelma"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Ikkunarivejä:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Lähetä"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Send anyway"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "Päivitykset"; - /*No comment provided by engineer.*/ "Updates policy:" = "Päivityspolitiikka:"; diff --git a/resources/l10n/fr.lproj/Localizable.strings b/resources/l10n/fr.lproj/Localizable.strings index 86b20db0..1823eec7 100644 --- a/resources/l10n/fr.lproj/Localizable.strings +++ b/resources/l10n/fr.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Autorisé"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab a besoin de permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Touches flèches"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Auto-installer les mises-à-jour périodiquement"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Fermer la fenêtre"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Ne pas chercher de mise-à-jour périodiquement"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Ne pas afficher les fenêtres de ces applications"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Survol de la souris"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Non autorisé"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Préférences…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Quitter l’app"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Rangées de fenêtres :"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Envoyer"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Envoyer tout de même"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "Cette permission est nécessaire pour afficher les miniatures et titres des fenêtres ouvertes"; -/*No comment provided by engineer.*/ -"Updates" = "Mises-à-jour"; - /*No comment provided by engineer.*/ "Updates policy:" = "Politique de mise-à-jour :"; diff --git a/resources/l10n/hu.lproj/Localizable.strings b/resources/l10n/hu.lproj/Localizable.strings index e9b4675b..18f678d9 100644 --- a/resources/l10n/hu.lproj/Localizable.strings +++ b/resources/l10n/hu.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Engedélyezve"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "Az AltTab-nak néhány jogosultságra van szüksége"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Nyíl billentyűk"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Frissítések automatikus telepítése"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Ablak bezárása"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Ne keressen frissítéseket automatikusan"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Ablakok elrejtése ezekből az alkalmazásokból"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Egér főlé vitele"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Nincs engedélyezve"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Beállítások…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Kilépés az alkalmazásból"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Ablak sorok száma:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Küldés"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Küldés mindenképp"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "Ez a jogosultság ahhoz szükséges hogy megjeleníthessük a képernyőképeket és csempéket a nyitott ablakokhoz"; -/*No comment provided by engineer.*/ -"Updates" = "Frissítések"; - /*No comment provided by engineer.*/ "Updates policy:" = "Frissítési beállítások:"; diff --git a/resources/l10n/id.lproj/Localizable.strings b/resources/l10n/id.lproj/Localizable.strings index dad88cd3..927e858d 100644 --- a/resources/l10n/id.lproj/Localizable.strings +++ b/resources/l10n/id.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Dibolehkan"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab membutuhkan beberapa izin"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Tombol panah"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Instal pembaruan secara berkala"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Tutup jendela"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Jangan periksa pembaruan secara berkala"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Jangan tampilkan jendela dari aplikasi ini"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Arahkan mouse"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Tidak dibolehkan"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Preferensi…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Keluar app"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Barisan jendela:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Kirim"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Tetap kirim"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "Izin ini diperlukan untuk menampilkan tangkapan layar dan judul jendela yang terbuka"; -/*No comment provided by engineer.*/ -"Updates" = "Pembaruan"; - /*No comment provided by engineer.*/ "Updates policy:" = "Kebijakan pembaruan:"; diff --git a/resources/l10n/it.lproj/Localizable.strings b/resources/l10n/it.lproj/Localizable.strings index 323c7c37..9bec2c69 100644 --- a/resources/l10n/it.lproj/Localizable.strings +++ b/resources/l10n/it.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Tasti freccia"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "La procedure di auto-install aggiorna periodicamente"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Chiudi la finestra"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Non controllare gli aggiornamenti periodicamente"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Passa il mouse"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Preferenze…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Esci dall'app"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "File di finestre:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Invia"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Send anyway"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "Aggiornamenti"; - /*No comment provided by engineer.*/ "Updates policy:" = "Politica sugli aggiornamenti:"; diff --git a/resources/l10n/ja.lproj/Localizable.strings b/resources/l10n/ja.lproj/Localizable.strings index f3f63dea..37c4dc22 100644 --- a/resources/l10n/ja.lproj/Localizable.strings +++ b/resources/l10n/ja.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "カーソルキー"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "更新を定期的に自動インストールする"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "ウィンドウを閉じる"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "定期的に更新を確認しない"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "マウスホバー"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "環境設定…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "アプリケーションを終了"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "ウィンドウ列:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "送信"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Send anyway"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "アップデート"; - /*No comment provided by engineer.*/ "Updates policy:" = "アップデートポリシー:"; diff --git a/resources/l10n/ko.lproj/Localizable.strings b/resources/l10n/ko.lproj/Localizable.strings index f29880d2..6523e669 100644 --- a/resources/l10n/ko.lproj/Localizable.strings +++ b/resources/l10n/ko.lproj/Localizable.strings @@ -35,11 +35,17 @@ /*No comment provided by engineer.*/ "Allowed" = "허용됨"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab이 권한을 필요로 합니다"; /*No comment provided by engineer.*/ -"and press:" = "and press:"; +"Always send crash reports" = "Always send crash reports"; + +/*No comment provided by engineer.*/ +"and press:" = "와 다음을 누르면:"; /*No comment provided by engineer.*/ "Apparition delay:" = "나타나는 지연 시간:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "방향키"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "자동으로 업데이트 설치하기"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "윈도우 닫기"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "주기적으로 업데이트를 확인하지 않기"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "다음 앱들의 윈도우가 보여지지 않습니다"; @@ -93,7 +108,7 @@ "Fade out animation:" = "페이드 아웃 애니메이션:"; /*No comment provided by engineer.*/ -"Focus selected window" = "Focus selected window"; +"Focus selected window" = "선택된 윈도우로 이동"; /*No comment provided by engineer.*/ "Fullscreen" = "전체화면"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "마우스 올려놓기"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "허용되지 않음"; @@ -168,7 +186,10 @@ "Optional: email (if you want a reply)" = "답변을 원하면 이메일 주소를 남겨주세요"; /*No comment provided by engineer.*/ -"or press:" = "or press:"; +"or press:" = "또는 다음을 누르면:"; + +/*No comment provided by engineer.*/ +"Policies" = "Policies"; /*No comment provided by engineer.*/ "Preferences…" = "설정…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "앱 종료"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "윈도우 줄 개수:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "보내기"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "보내기"; @@ -249,7 +276,7 @@ "Theme:" = "테마:"; /*No comment provided by engineer.*/ -"then release:" = "then release:"; +"then release:" = "놓으면:"; /*No comment provided by engineer.*/ "This permission is needed to focus windows after you release the shortcut" = "이 권한은 단축키를 사용했을 때 원하는 윈도우로 이동할 수 있게 해줍니다"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "이 권한은 윈도우의 이미지와 제목을 띄울 수 있게 해줍니다"; -/*No comment provided by engineer.*/ -"Updates" = "업데이트"; - /*No comment provided by engineer.*/ "Updates policy:" = "업데이트 방법:"; diff --git a/resources/l10n/lb.lproj/Localizable.strings b/resources/l10n/lb.lproj/Localizable.strings index 3c756de5..e244c787 100644 --- a/resources/l10n/lb.lproj/Localizable.strings +++ b/resources/l10n/lb.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Feiltasten"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Automatesch reegelméisseg Updates installéiren"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Close window"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Net reegelméisseg no Updates sichen"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Mouse hover"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Astellung…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Quit app"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Rows of windows:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Fortschécken"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Send anyway"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "Update"; - /*No comment provided by engineer.*/ "Updates policy:" = "Updates policy:"; diff --git a/resources/l10n/nl.lproj/Localizable.strings b/resources/l10n/nl.lproj/Localizable.strings index fd3d1cbf..bafdd613 100644 --- a/resources/l10n/nl.lproj/Localizable.strings +++ b/resources/l10n/nl.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Pijltjestoetsen"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Installeer regelmatig automatisch updates"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Sluit venster"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Controleer niet regelmatig op updates"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Muisbeweging"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Voorkeuren…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Sluit programma"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Aantal vensterrijen:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Verstuur"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Verstuur toch"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "Updates"; - /*No comment provided by engineer.*/ "Updates policy:" = "Updatebeleid:"; diff --git a/resources/l10n/pt-BR.lproj/Localizable.strings b/resources/l10n/pt-BR.lproj/Localizable.strings index 4d6c7d85..8266cdf3 100644 --- a/resources/l10n/pt-BR.lproj/Localizable.strings +++ b/resources/l10n/pt-BR.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Teclas direcionais"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Instalar atualizações periódicas automaticamente"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Fechar janela"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Não verifique periodicamente por atualizações"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Ao passar o mouse"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Preferências"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Fechar aplicação"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Linhas de janelas:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Enviar"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Send anyway"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "Atualizações"; - /*No comment provided by engineer.*/ "Updates policy:" = "Regras de atualização:"; diff --git a/resources/l10n/ru.lproj/Localizable.strings b/resources/l10n/ru.lproj/Localizable.strings index 6ef7042b..1ec1bac2 100644 --- a/resources/l10n/ru.lproj/Localizable.strings +++ b/resources/l10n/ru.lproj/Localizable.strings @@ -3,7 +3,7 @@ "About" = "О программе"; /*No comment provided by engineer.*/ -"Accessibility" = "Accessibility"; +"Accessibility" = "Универсальный доступ"; /*No comment provided by engineer.*/ "Acknowledgments" = "Лицензии"; @@ -33,13 +33,19 @@ "All spaces" = "Все рабочие столы"; /*No comment provided by engineer.*/ -"Allowed" = "Allowed"; +"Allowed" = "Разрешено"; /*No comment provided by engineer.*/ -"AltTab needs some permissions" = "AltTab needs some permissions"; +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; /*No comment provided by engineer.*/ -"and press:" = "and press:"; +"AltTab needs some permissions" = "AltTab требуются некоторые разрешения"; + +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + +/*No comment provided by engineer.*/ +"and press:" = "и нажать:"; /*No comment provided by engineer.*/ "Apparition delay:" = "Задержка появления:"; @@ -53,11 +59,14 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Клавиши стрелок"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Автоматически устанавливать обновления"; /*No comment provided by engineer.*/ -"Blacklists" = "Blacklists"; +"Blacklists" = "Черные списки"; /*Cancel button*/ "Cancel" = "Отмена"; @@ -80,14 +89,20 @@ /*No comment provided by engineer.*/ "Close window" = "Закрыть окно"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Не проверять обновления"; /*No comment provided by engineer.*/ -"Don’t show windows from these apps" = "Don’t show windows from these apps"; +"Don’t send" = "Don’t send"; /*No comment provided by engineer.*/ -"End" = "End"; +"Don’t show windows from these apps" = "Не показывать окна этих приложений"; + +/*No comment provided by engineer.*/ +"End" = "Конец"; /*No comment provided by engineer.*/ "Fade out animation:" = "Анимация затухания:"; @@ -105,7 +120,7 @@ "Hidden" = "Скрытые"; /*No comment provided by engineer.*/ -"Hide menubar icon:" = "Hide menubar icon:"; +"Hide menubar icon:" = "Скрыть иконку из строки меню:"; /*No comment provided by engineer.*/ "Hide space number labels:" = "Скрыть номера рабочих столов:"; @@ -120,7 +135,7 @@ "I think the app could be improved with…" = "Я думаю, что приложение может быть улучшено…"; /*No comment provided by engineer.*/ -"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active"; +"Ignore shortcuts while a window from these apps is active" = "Игнорировать комбинации клавиш пока окно приложения из этого списка активно"; /*No comment provided by engineer.*/ "Latest releases" = "Последние обновления"; @@ -135,7 +150,7 @@ "Max windows per row:" = "Макс. количество окон в ряду:"; /*No comment provided by engineer.*/ -"Middle" = "Middle"; +"Middle" = "Посередине"; /*No comment provided by engineer.*/ "Min windows per row:" = "Мин. количество окон в ряду:"; @@ -150,19 +165,22 @@ "Mouse hover" = "Наведение мышью"; /*No comment provided by engineer.*/ -"Not allowed" = "Not allowed"; +"Never send crash reports" = "Never send crash reports"; + +/*No comment provided by engineer.*/ +"Not allowed" = "Не разрешено"; /*Copyright (human-readable)*/ "NSHumanReadableCopyright" = "Лицензия GPL-3.0"; /*No comment provided by engineer.*/ -"Only if the window is fullscreen" = "Only if the window is fullscreen"; +"Only if the window is fullscreen" = "Только если окно на полный экран"; /*No comment provided by engineer.*/ -"Open Accessibility Preferences…" = "Open Accessibility Preferences…"; +"Open Accessibility Preferences…" = "Открыть настройки Универсального доступа…"; /*No comment provided by engineer.*/ -"Open Screen Recording Preferences…" = "Open Screen Recording Preferences…"; +"Open Screen Recording Preferences…" = "Открыть настройки Записи экрана…"; /*No comment provided by engineer.*/ "Optional: email (if you want a reply)" = "Опционально: эл.почта (если вы хотите ответа)"; @@ -170,11 +188,14 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Настройки…"; /*No comment provided by engineer.*/ -"Quit" = "Quit"; +"Quit" = "Выход"; /*No comment provided by engineer.*/ "Quit %@" = "Выход из %@"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Выйти из приложения"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Количество рядов окон:"; @@ -192,7 +216,7 @@ "Screen including mouse" = "Экран с курсором"; /*No comment provided by engineer.*/ -"Screen Recording" = "Screen Recording"; +"Screen Recording" = "Запись экрана"; /*No comment provided by engineer.*/ "Screen showing AltTab" = "Экран, показывающий AltTab"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Отправить"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Все равно отправить"; @@ -240,7 +267,7 @@ "Source code repository" = "Репозиторий исходного кода"; /*No comment provided by engineer.*/ -"Start" = "Start"; +"Start" = "Начало"; /*No comment provided by engineer.*/ "Start at login:" = "Запускать при входе в систему:"; @@ -252,13 +279,10 @@ "then release:" = "then release:"; /*No comment provided by engineer.*/ -"This permission is needed to focus windows after you release the shortcut" = "This permission is needed to focus windows after you release the shortcut"; +"This permission is needed to focus windows after you release the shortcut" = "Это разрешение нужно для фокусировки окна после отпускания комбинации клавиш"; /*No comment provided by engineer.*/ -"This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; - -/*No comment provided by engineer.*/ -"Updates" = "Обновления"; +"This permission is needed to show screenshots and titles of open windows" = "Это разрешение нужно для показа скриншотов и заголовков открытых окон"; /*No comment provided by engineer.*/ "Updates policy:" = "Правило обновлений:"; @@ -276,7 +300,7 @@ "Window title font size:" = "Размер заголовка:"; /*No comment provided by engineer.*/ -"Window title truncation:" = "Window title truncation:"; +"Window title truncation:" = "Обрезка заголовка окна:"; /*No comment provided by engineer.*/ "You didn’t write your email, thus can’t receive any response." = "Вы не написали свою электронную почту, поэтому не можете получить ответ."; diff --git a/resources/l10n/tr.lproj/Localizable.strings b/resources/l10n/tr.lproj/Localizable.strings index 1475cf47..f5904099 100644 --- a/resources/l10n/tr.lproj/Localizable.strings +++ b/resources/l10n/tr.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "Yön tuşları"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "Güncellemeleri periyodik olarak otomatik yükle"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "Pencereyi kapat"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "Güncellemeleri periyodik olarak kontrol etme"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "Fare "; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "Tercihler…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "Uygulamadan çık"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "Pencere satırları:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "Gönder"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "Send anyway"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "Güncellemeler"; - /*No comment provided by engineer.*/ "Updates policy:" = "Güncelleme politikası:"; diff --git a/resources/l10n/zh-CN.lproj/Localizable.strings b/resources/l10n/zh-CN.lproj/Localizable.strings index ea97c85c..b6142d68 100644 --- a/resources/l10n/zh-CN.lproj/Localizable.strings +++ b/resources/l10n/zh-CN.lproj/Localizable.strings @@ -35,11 +35,17 @@ /*No comment provided by engineer.*/ "Allowed" = "允许"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab 需要获取一些隐私权限"; /*No comment provided by engineer.*/ -"and press:" = "and press:"; +"Always send crash reports" = "Always send crash reports"; + +/*No comment provided by engineer.*/ +"and press:" = "并点击"; /*No comment provided by engineer.*/ "Apparition delay:" = "切换窗口出现延迟:"; @@ -53,11 +59,14 @@ /*No comment provided by engineer.*/ "Arrow keys" = "方向键"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "定期自动安装更新"; /*No comment provided by engineer.*/ -"Blacklists" = "Blacklists"; +"Blacklists" = "禁止名单"; /*Cancel button*/ "Cancel" = "取消"; @@ -80,20 +89,26 @@ /*No comment provided by engineer.*/ "Close window" = "关闭窗口"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "不自动检查更新"; /*No comment provided by engineer.*/ -"Don’t show windows from these apps" = "Don’t show windows from these apps"; +"Don’t send" = "Don’t send"; /*No comment provided by engineer.*/ -"End" = "End"; +"Don’t show windows from these apps" = "不显示这些应用程序的窗口"; + +/*No comment provided by engineer.*/ +"End" = "结尾"; /*No comment provided by engineer.*/ "Fade out animation:" = "淡出动画:"; /*No comment provided by engineer.*/ -"Focus selected window" = "Focus selected window"; +"Focus selected window" = "前置选中窗口"; /*No comment provided by engineer.*/ "Fullscreen" = "全屏"; @@ -120,7 +135,7 @@ "I think the app could be improved with…" = "我认为该应用程序可以这样改进…"; /*No comment provided by engineer.*/ -"Ignore shortcuts while a window from these apps is active" = "Ignore shortcuts while a window from these apps is active"; +"Ignore shortcuts while a window from these apps is active" = "这些应用程序的窗口处于活动状态时,忽略快捷键"; /*No comment provided by engineer.*/ "Latest releases" = "最新版本"; @@ -135,7 +150,7 @@ "Max windows per row:" = "每行最多窗口数:"; /*No comment provided by engineer.*/ -"Middle" = "Middle"; +"Middle" = "中间"; /*No comment provided by engineer.*/ "Min windows per row:" = "每行最少窗口数:"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "鼠标悬停"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "阻止"; @@ -156,7 +174,7 @@ "NSHumanReadableCopyright" = "GPL-3.0 协议"; /*No comment provided by engineer.*/ -"Only if the window is fullscreen" = "Only if the window is fullscreen"; +"Only if the window is fullscreen" = "仅当窗口全屏时"; /*No comment provided by engineer.*/ "Open Accessibility Preferences…" = "打开辅助功能偏好设置"; @@ -168,7 +186,10 @@ "Optional: email (if you want a reply)" = "电子邮箱地址 (可选,若想接收答复)"; /*No comment provided by engineer.*/ -"or press:" = "or press:"; +"or press:" = "或点击"; + +/*No comment provided by engineer.*/ +"Policies" = "Policies"; /*No comment provided by engineer.*/ "Preferences…" = "偏好设置…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "退出应用"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "窗口行数:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "发送"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "仍然发送"; @@ -240,7 +267,7 @@ "Source code repository" = "源代码仓库"; /*No comment provided by engineer.*/ -"Start" = "Start"; +"Start" = "开始"; /*No comment provided by engineer.*/ "Start at login:" = "开机启动:"; @@ -249,7 +276,7 @@ "Theme:" = "主题:"; /*No comment provided by engineer.*/ -"then release:" = "then release:"; +"then release:" = "然后松开"; /*No comment provided by engineer.*/ "This permission is needed to focus windows after you release the shortcut" = "需要此权限在释放快捷键后切换鼠标焦点"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "需要此权限来显示打开窗口的截屏和标题"; -/*No comment provided by engineer.*/ -"Updates" = "更新"; - /*No comment provided by engineer.*/ "Updates policy:" = "更新方式:"; @@ -276,7 +300,7 @@ "Window title font size:" = "窗口标题字号:"; /*No comment provided by engineer.*/ -"Window title truncation:" = "Window title truncation:"; +"Window title truncation:" = "窗口标题截断:"; /*No comment provided by engineer.*/ "You didn’t write your email, thus can’t receive any response." = "未填写电子邮箱地址将无法收到回复。"; diff --git a/resources/l10n/zh-TW.lproj/Localizable.strings b/resources/l10n/zh-TW.lproj/Localizable.strings index f8265de5..4e31ab85 100644 --- a/resources/l10n/zh-TW.lproj/Localizable.strings +++ b/resources/l10n/zh-TW.lproj/Localizable.strings @@ -35,9 +35,15 @@ /*No comment provided by engineer.*/ "Allowed" = "Allowed"; +/*No comment provided by engineer.*/ +"AltTab crashed last time you used it. Sending a crash report will help get the issue fixed" = "AltTab crashed last time you used it. Sending a crash report will help get the issue fixed"; + /*No comment provided by engineer.*/ "AltTab needs some permissions" = "AltTab needs some permissions"; +/*No comment provided by engineer.*/ +"Always send crash reports" = "Always send crash reports"; + /*No comment provided by engineer.*/ "and press:" = "and press:"; @@ -53,6 +59,9 @@ /*No comment provided by engineer.*/ "Arrow keys" = "方向鍵"; +/*No comment provided by engineer.*/ +"Ask whether to send crash reports" = "Ask whether to send crash reports"; + /*No comment provided by engineer.*/ "Auto-install updates periodically" = "定期自動安裝更新"; @@ -80,9 +89,15 @@ /*No comment provided by engineer.*/ "Close window" = "關閉視窗"; +/*No comment provided by engineer.*/ +"Crash reports policy:" = "Crash reports policy:"; + /*No comment provided by engineer.*/ "Don’t check for updates periodically" = "不要定期自動檢查更新"; +/*No comment provided by engineer.*/ +"Don’t send" = "Don’t send"; + /*No comment provided by engineer.*/ "Don’t show windows from these apps" = "Don’t show windows from these apps"; @@ -149,6 +164,9 @@ /*No comment provided by engineer.*/ "Mouse hover" = "滑鼠懸停"; +/*No comment provided by engineer.*/ +"Never send crash reports" = "Never send crash reports"; + /*No comment provided by engineer.*/ "Not allowed" = "Not allowed"; @@ -170,6 +188,9 @@ /*No comment provided by engineer.*/ "or press:" = "or press:"; +/*No comment provided by engineer.*/ +"Policies" = "Policies"; + /*No comment provided by engineer.*/ "Preferences…" = "偏好設定…"; @@ -182,6 +203,9 @@ /*No comment provided by engineer.*/ "Quit app" = "離開程式"; +/*No comment provided by engineer.*/ +"Remember my choice" = "Remember my choice"; + /*No comment provided by engineer.*/ "Rows of windows:" = "每列視窗數:"; @@ -209,6 +233,9 @@ /*No comment provided by engineer.*/ "Send" = "送出"; +/*No comment provided by engineer.*/ +"Send a crash report?" = "Send a crash report?"; + /*No comment provided by engineer.*/ "Send anyway" = "送出"; @@ -257,9 +284,6 @@ /*No comment provided by engineer.*/ "This permission is needed to show screenshots and titles of open windows" = "This permission is needed to show screenshots and titles of open windows"; -/*No comment provided by engineer.*/ -"Updates" = "更新"; - /*No comment provided by engineer.*/ "Updates policy:" = "更新策略:"; diff --git a/scripts/replace_environment_variables_in_app.sh b/scripts/replace_environment_variables_in_app.sh index a117983e..24fa3f60 100755 --- a/scripts/replace_environment_variables_in_app.sh +++ b/scripts/replace_environment_variables_in_app.sh @@ -6,3 +6,4 @@ version="$(cat $VERSION_FILE)" sed -i '' -e "s/#VERSION#/$version/" Info.plist sed -i '' -e "s/#FEEDBACK_TOKEN#/$FEEDBACK_TOKEN/" Info.plist +sed -i '' -e "s/#APPCENTER_SECRET#/$APPCENTER_SECRET/" Info.plist diff --git a/scripts/travis.sh b/scripts/travis.sh index 8c61724f..8c51ddd3 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -15,6 +15,7 @@ if [ $IS_RELEASE ]; then scripts/codesign/setup_ci_master.sh xcodebuild -workspace alt-tab-macos.xcworkspace -scheme Release -derivedDataPath DerivedData scripts/package_and_notarize_release.sh + scripts/upload_symbols_to_appcenter.sh scripts/update_appcast.sh npx semantic-release scripts/update_website.sh diff --git a/scripts/upload_symbols_to_appcenter.sh b/scripts/upload_symbols_to_appcenter.sh new file mode 100755 index 00000000..7089cd8c --- /dev/null +++ b/scripts/upload_symbols_to_appcenter.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +set -exu + +ownerName="alt-tab-macos" +appName="alt-tab-macos" +url="https://api.appcenter.ms/v0.1/apps/$ownerName/$appName" +version="$(cat $VERSION_FILE)" +symbolFile="$APP_NAME.app.dSYM" + +function firstCall() { + curl -X POST "$url/symbol_uploads" \ + -H "X-API-Token: $APPCENTER_TOKEN" \ + -H "accept: application/json" \ + -H "Content-Type: application/json" \ + -d "{ \"symbol_type\": \"Apple\", \"version\": \"$version\" }" +} + +cd "$XCODE_BUILD_PATH" +ditto -c -k --keepParent "$symbolFile" "$symbolFile.zip" + +c1="$(firstCall)" +symbol_upload_id="$(jq -r '.symbol_upload_id' <<<"$c1")" +upload_url="$(jq -r '.upload_url' <<<"$c1")" + +curl -X PUT "$upload_url" \ + -H "x-ms-blob-type: BlockBlob" \ + --upload-file "$symbolFile.zip" + +curl -X PATCH "$url/symbol_uploads/$symbol_upload_id" \ + -H "X-API-Token: $APPCENTER_TOKEN" \ + -H "accept: application/json" \ + -H "Content-Type: application/json" \ + -d '{ "status": "committed" }' diff --git a/src/logic/AppCenterCrashes.swift b/src/logic/AppCenterCrashes.swift new file mode 100644 index 00000000..31b331f1 --- /dev/null +++ b/src/logic/AppCenterCrashes.swift @@ -0,0 +1,55 @@ +import Cocoa +import AppCenter +import AppCenterCrashes + +class AppCenterCrash: NSObject, MSCrashesDelegate { + static let secret = Bundle.main.object(forInfoDictionaryKey: "AppCenterSecret") as! String + + override init() { + super.init() + // Enable catching uncaught exceptions thrown on the main thread + UserDefaults.standard.register(defaults: ["NSApplicationCrashOnExceptions": true]) +// MSAppCenter.setLogLevel(MSLogLevel.none) + MSAppCenter.start(AppCenterCrash.secret, withServices: [MSCrashes.self]) + MSCrashes.setDelegate(self) + MSCrashes.setUserConfirmationHandler({ (errorReports: [MSErrorReport]) in + if Preferences.crashPolicy == .ask { + App.app.activate(ignoringOtherApps: true) + let alert = NSAlert() + alert.alertStyle = .warning + alert.messageText = NSLocalizedString("Send a crash report?", comment: "") + alert.informativeText = NSLocalizedString("AltTab crashed last time you used it. Sending a crash report will help get the issue fixed", comment: "") + alert.addButton(withTitle: NSLocalizedString("Send", comment: "")).setAccessibilityFocused(true) + let cancelButton = alert.addButton(withTitle: NSLocalizedString("Don’t send", comment: "")) + cancelButton.keyEquivalent = "\u{1b}" + let checkbox = NSButton(checkboxWithTitle: NSLocalizedString("Remember my choice", comment: ""), target: nil, action: nil) + alert.accessoryView = checkbox + let userChoice = alert.runModal() + let id = self.crashButtonIdToUpdate(userChoice, checkbox) + PoliciesTab.crashButtons[id].state = .on + Preferences.set("crashPolicy", String(id)) + BackgroundWork.crashReportsQueue.async { MSCrashes.notify(with: userChoice == .alertFirstButtonReturn ? .send : .dontSend) } + } else { + BackgroundWork.crashReportsQueue.async { MSCrashes.notify(with: Preferences.crashPolicy == .always ? .send : .dontSend) } + } + return true + }) + } + + func crashButtonIdToUpdate(_ userChoice: NSApplication.ModalResponse, _ checkbox: NSButton) -> Int { + if userChoice == .alertFirstButtonReturn { + if checkbox.state == .on { + return 2 + } + return 1 + } + if checkbox.state == .on { + return 0 + } + return 1 + } + + func attachments(with crashes: MSCrashes, for errorReport: MSErrorReport) -> [MSErrorAttachmentLog] { + return [MSErrorAttachmentLog.attachment(withText: DebugProfile.make(), filename: "debug-profile.md")!] + } +} diff --git a/src/logic/BackgroundWork.swift b/src/logic/BackgroundWork.swift index 25691438..a9ea0828 100644 --- a/src/logic/BackgroundWork.swift +++ b/src/logic/BackgroundWork.swift @@ -5,6 +5,7 @@ class BackgroundWork { static var mainQueueConcurrentWorkQueue: DispatchQueue! static var accessibilityCommandsQueue: DispatchQueue! static var axCallsQueue: DispatchQueue! + static var crashReportsQueue: DispatchQueue! static var accessibilityEventsThread: BackgroundThreadWithRunLoop! static var keyboardEventsThread: BackgroundThreadWithRunLoop! static var mouseEventsThread: BackgroundThreadWithRunLoop! @@ -17,6 +18,7 @@ class BackgroundWork { mainQueueConcurrentWorkQueue = DispatchQueue.globalConcurrent("mainQueueConcurrentWorkQueue", .userInteractive) accessibilityCommandsQueue = DispatchQueue.globalConcurrent("accessibilityCommandsQueue", .userInteractive) axCallsQueue = DispatchQueue.globalConcurrent("axCallsQueue", .userInteractive) + crashReportsQueue = DispatchQueue.globalConcurrent("crashReportsQueue", .utility) accessibilityEventsThread = BackgroundThreadWithRunLoop("accessibilityEventsThread") keyboardEventsThread = BackgroundThreadWithRunLoop("keyboardEventsThread") mouseEventsThread = BackgroundThreadWithRunLoop("mouseEventsThread") diff --git a/src/logic/Preferences.swift b/src/logic/Preferences.swift index 8ae73eeb..b67c77ec 100644 --- a/src/logic/Preferences.swift +++ b/src/logic/Preferences.swift @@ -45,6 +45,8 @@ class Preferences { "dontShowBlacklist": "", "disableShortcutsBlacklist": ["com.realvnc.vncviewer", "com.microsoft.rdc.macos", "com.teamviewer.TeamViewer", "org.virtualbox.app.VirtualBoxVM", "com.parallels.vm", "com.citrix.XenAppViewer"].joined(separator: "\n"), "disableShortcutsBlacklistOnlyFullscreen": "true", + "updatePolicy": "1", + "crashPolicy": "1", ].merging(defaultsDependingOnScreenRatio()) { (_, new) in new } // constant values @@ -91,6 +93,8 @@ class Preferences { static var showOnScreen: ShowOnScreenPreference { defaults.macroPref("showOnScreen", ShowOnScreenPreference.allCases) } static var titleTruncation: TitleTruncationPreference { defaults.macroPref("titleTruncation", TitleTruncationPreference.allCases) } static var alignThumbnails: AlignThumbnailsPreference { defaults.macroPref("alignThumbnails", AlignThumbnailsPreference.allCases) } + static var updatePolicy: UpdatePolicyPreference { defaults.macroPref("updatePolicy", UpdatePolicyPreference.allCases) } + static var crashPolicy: CrashPolicyPreference { defaults.macroPref("crashPolicy", CrashPolicyPreference.allCases) } static var appsToShow: [AppsToShowPreference] { ["appsToShow", "appsToShow2"].map { defaults.macroPref($0, AppsToShowPreference.allCases) } } static var spacesToShow: [SpacesToShowPreference] { ["spacesToShow", "spacesToShow2"].map { defaults.macroPref($0, SpacesToShowPreference.allCases) } } static var screensToShow: [ScreensToShowPreference] { ["screensToShow", "screensToShow2"].map { defaults.macroPref($0, ScreensToShowPreference.allCases) } } @@ -198,8 +202,8 @@ enum AppsToShowPreference: String, CaseIterable, MacroPreference { } enum SpacesToShowPreference: String, CaseIterable, MacroPreference { - case all = "All spaces" - case active = "Active space" + case all = "0" + case active = "1" var localizedString: LocalizedString { switch self { @@ -210,8 +214,8 @@ enum SpacesToShowPreference: String, CaseIterable, MacroPreference { } enum ScreensToShowPreference: String, CaseIterable, MacroPreference { - case all = "All screens" - case showingAltTab = "Screen showing AltTab" + case all = "0" + case showingAltTab = "1" var localizedString: LocalizedString { switch self { @@ -222,9 +226,9 @@ enum ScreensToShowPreference: String, CaseIterable, MacroPreference { } enum ShowOnScreenPreference: String, CaseIterable, MacroPreference { - case active = "Active screen" - case includingMouse = "Screen including mouse" - case includingMenubar = "Screen including menu bar" + case active = "0" + case includingMouse = "1" + case includingMenubar = "2" var localizedString: LocalizedString { switch self { @@ -236,9 +240,9 @@ enum ShowOnScreenPreference: String, CaseIterable, MacroPreference { } enum TitleTruncationPreference: String, CaseIterable, MacroPreference { - case end = "End" - case middle = "Middle" - case start = "Start" + case end = "0" + case middle = "1" + case start = "2" var localizedString: LocalizedString { switch self { @@ -250,8 +254,8 @@ enum TitleTruncationPreference: String, CaseIterable, MacroPreference { } enum AlignThumbnailsPreference: String, CaseIterable, MacroPreference { - case left = "Left" - case center = "Center" + case left = "0" + case center = "1" var localizedString: LocalizedString { switch self { @@ -262,13 +266,13 @@ enum AlignThumbnailsPreference: String, CaseIterable, MacroPreference { } enum ThemePreference: String, CaseIterable, MacroPreference { - case macOs = " macOS" - case windows10 = "❖ Windows 10" + case macOs = "0" + case windows10 = "1" var localizedString: LocalizedString { switch self { - case .macOs: return ThemePreference.macOs.rawValue - case .windows10: return ThemePreference.windows10.rawValue + case .macOs: return " macOS" + case .windows10: return "❖ Windows 10" } } @@ -280,6 +284,34 @@ enum ThemePreference: String, CaseIterable, MacroPreference { } } +enum UpdatePolicyPreference: String, CaseIterable, MacroPreference { + case manual = "0" + case autoCheck = "1" + case autoInstall = "2" + + var localizedString: LocalizedString { + switch self { + case .manual: return NSLocalizedString("Don’t check for updates periodically", comment: "") + case .autoCheck: return NSLocalizedString("Check for updates periodically", comment: "") + case .autoInstall: return NSLocalizedString("Auto-install updates periodically", comment: "") + } + } +} + +enum CrashPolicyPreference: String, CaseIterable, MacroPreference { + case never = "0" + case ask = "1" + case always = "2" + + var localizedString: LocalizedString { + switch self { + case .never: return NSLocalizedString("Never send crash reports", comment: "") + case .ask: return NSLocalizedString("Ask whether to send crash reports", comment: "") + case .always: return NSLocalizedString("Always send crash reports", comment: "") + } + } +} + extension UserDefaults { func string(_ key: String) -> String { string(forKey: key)! diff --git a/src/logic/events/UserDefaultsEvents.swift b/src/logic/events/UserDefaultsEvents.swift index fb103fb6..231de305 100644 --- a/src/logic/events/UserDefaultsEvents.swift +++ b/src/logic/events/UserDefaultsEvents.swift @@ -3,24 +3,30 @@ import Sparkle class UserDefaultsEvents: NSObject { private static var policyObserver = UserDefaultsEvents() - private static var updatesTab: UpdatesTab! - static func observe(_ updatesTab: UpdatesTab) { - UserDefaultsEvents.updatesTab = updatesTab + static func observe() { UserDefaults.standard.addObserver(policyObserver, forKeyPath: "SUAutomaticallyUpdate", options: [.initial, .new], context: nil) UserDefaults.standard.addObserver(policyObserver, forKeyPath: "SUEnableAutomaticChecks", options: [.initial, .new], context: nil) } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) { - guard !UserDefaultsEvents.updatesTab.policyLock else { return } - if SUUpdater.shared().automaticallyDownloadsUpdates { - UserDefaultsEvents.updatesTab.periodicallyInstall.state = .on + guard !PoliciesTab.policyLock else { return } + let buttons = PoliciesTab.updateButtons! + let id = buttonIdToUpdate() + if id == 2 { // Sparkle UI "Automatically download and install updates in the future" doesn't activate periodical checks; we do it manually SUUpdater.shared().automaticallyChecksForUpdates = true - } else if SUUpdater.shared().automaticallyChecksForUpdates { - UserDefaultsEvents.updatesTab.periodicallyCheck.state = .on - } else { - UserDefaultsEvents.updatesTab.dontPeriodicallyCheck.state = .on } + buttons[id].state = .on + Preferences.set("updatePolicy", String(id)) + } + + private func buttonIdToUpdate() -> Int { + if SUUpdater.shared().automaticallyDownloadsUpdates { + return 2 + } else if SUUpdater.shared().automaticallyChecksForUpdates { + return 1 + } + return 0 } } diff --git a/src/ui/App.swift b/src/ui/App.swift index dfe74e48..00be22b8 100644 --- a/src/ui/App.swift +++ b/src/ui/App.swift @@ -22,6 +22,7 @@ class App: NSApplication, NSApplicationDelegate { var appIsBeingUsed = false var shortcutsShouldBeDisabled = false var shortcutIndex = 0 + var appCenterDelegate: AppCenterCrash? override init() { super.init() @@ -34,6 +35,7 @@ class App: NSApplication, NSApplicationDelegate { } func applicationDidFinishLaunching(_ aNotification: Notification) { + appCenterDelegate = AppCenterCrash() #if DEBUG UserDefaults.standard.set(true, forKey: "NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints") #endif @@ -79,7 +81,7 @@ class App: NSApplication, NSApplicationDelegate { let tabs = [ GeneralTab(), AppearanceTab(), - UpdatesTab(), + PoliciesTab(), BlacklistsTab(), AboutTab(), AcknowledgmentsTab(), @@ -153,7 +155,7 @@ class App: NSApplication, NSApplicationDelegate { } @objc func checkForUpdatesNow(_ sender: NSMenuItem) { - UpdatesTab.checkForUpdatesNow(sender) + PoliciesTab.checkForUpdatesNow(sender) } @objc func showPreferencesPanel() { diff --git a/src/ui/preferences-window/LabelAndControl.swift b/src/ui/preferences-window/LabelAndControl.swift index 39be1c56..aa26d5c8 100644 --- a/src/ui/preferences-window/LabelAndControl.swift +++ b/src/ui/preferences-window/LabelAndControl.swift @@ -10,8 +10,8 @@ enum LabelPosition { class LabelAndControl: NSObject { static func makeLabelWithRecorder(_ labelText: String, _ rawName: String, _ shortcutString: String, _ clearable: Bool = true, labelPosition: LabelPosition = .leftWithSeparator) -> [NSView] { let input = CustomRecorderControl(shortcutString, clearable) - let views = makeLabelWithProvidedControl(labelText, rawName, input, labelPosition: labelPosition, extraAction: GeneralTab.shortcutChangedCallback) - GeneralTab.shortcutChangedCallback(input) + let views = makeLabelWithProvidedControl(labelText, rawName, input, labelPosition: labelPosition, extraAction: { _ in GeneralTab.shortcutChangedCallback(input, rawName) }) + GeneralTab.shortcutChangedCallback(input, rawName) return views } @@ -26,7 +26,7 @@ class LabelAndControl: NSObject { static func makeTextArea(_ nCharactersWide: CGFloat, _ nLinesHigh: Int, _ placeholder: String, _ rawName: String, extraAction: ActionClosure? = nil) -> [NSView] { let textArea = TextArea(nCharactersWide, nLinesHigh, placeholder) textArea.callback = { - controlWasChanged(textArea) + controlWasChanged(textArea, rawName, nil) extraAction?(textArea) } textArea.identifier = NSUserInterfaceItemIdentifier(rawName) @@ -46,6 +46,18 @@ class LabelAndControl: NSObject { return popUp } + static func makeRadioButtons(_ macroPreferences: [MacroPreference], _ rawName: String, extraAction: ActionClosure? = nil) -> [NSButton] { + var i = 0 + return macroPreferences.map { + let button = NSButton(radioButtonWithTitle: $0.localizedString, target: nil, action: nil) + button.translatesAutoresizingMaskIntoConstraints = false + button.state = Int(Preferences.getString(rawName)!)! == i ? .on : .off + _ = setupControl(button, rawName, String(i), extraAction: extraAction) + i += 1 + return button + } + } + static func makeLabelWithSlider(_ labelText: String, _ rawName: String, _ minValue: Double, _ maxValue: Double, _ numberOfTickMarks: Int, _ allowsTickMarkValuesOnly: Bool, _ unitText: String = "") -> [NSView] { let value = Preferences.getString(rawName)! let suffixText = MeasurementFormatter().string(from: Measurement(value: Double(value)!, unit: Unit(symbol: unitText))) @@ -62,7 +74,7 @@ class LabelAndControl: NSObject { } static func makeLabelWithProvidedControl(_ labelText: String, _ rawName: String, _ control: NSControl, _ suffixText: String? = nil, _ suffixUrl: String? = nil, labelPosition: LabelPosition = .leftWithSeparator, extraAction: ActionClosure? = nil) -> [NSView] { - _ = setupControl(control, rawName, extraAction) + _ = setupControl(control, rawName, extraAction: extraAction) if labelPosition == .right && control is NSButton { return [control] } @@ -79,21 +91,21 @@ class LabelAndControl: NSObject { return [label, control] } - static func setupControl(_ control: NSControl, _ rawName: String, _ extraAction: ActionClosure? = nil) -> NSControl { - control.identifier = NSUserInterfaceItemIdentifier(rawName) + static func setupControl(_ control: NSControl, _ rawName: String, _ controlId: String? = nil, extraAction: ActionClosure? = nil) -> NSControl { control.onAction = { - controlWasChanged($0) + controlWasChanged($0, rawName, controlId) extraAction?($0) } return control } - static func controlWasChanged(_ senderControl: NSControl) { - let newValue = LabelAndControl.getControlValue(senderControl) - LabelAndControl.updateControlExtras(senderControl, newValue) - Preferences.set(senderControl.identifier!.rawValue, newValue) + static func controlWasChanged(_ senderControl: NSControl, _ rawName: String, _ controlId: String?) { + if let newValue = LabelAndControl.getControlValue(senderControl, controlId) { + LabelAndControl.updateControlExtras(senderControl, newValue) + Preferences.set(rawName, newValue) + } // some preferences require re-creating some components - if ["iconSize", "fontHeight", "theme", "titleTruncation"].contains(where: { (pref: String) -> Bool in pref == senderControl.identifier!.rawValue }) { + if ["iconSize", "fontHeight", "theme", "titleTruncation"].contains(where: { (pref: String) -> Bool in pref == rawName }) { (App.shared as! App).resetPreferencesDependentComponents() } } @@ -119,13 +131,17 @@ class LabelAndControl: NSObject { return suffix } - static func getControlValue(_ control: NSControl) -> String { + static func getControlValue(_ control: NSControl, _ controlId: String?) -> String? { if control is NSPopUpButton { return String((control as! NSPopUpButton).indexOfSelectedItem) } else if control is NSSlider { return String(format: "%.0f", control.doubleValue) // we are only interested in decimals of the provided double } else if control is NSButton { - return String((control as! NSButton).state == NSButton.StateValue.on) + if let controlId = controlId { + return ((control as! NSButton).state == NSButton.StateValue.on) ? controlId : nil + } else { + return String((control as! NSButton).state == NSButton.StateValue.on) + } } else { return control.stringValue } diff --git a/src/ui/preferences-window/tabs/GeneralTab.swift b/src/ui/preferences-window/tabs/GeneralTab.swift index c3c17cfb..7dbb5a32 100644 --- a/src/ui/preferences-window/tabs/GeneralTab.swift +++ b/src/ui/preferences-window/tabs/GeneralTab.swift @@ -130,25 +130,24 @@ class GeneralTab: NSViewController, PreferencePane { App.shortcutMonitor.addAction(shortcutActions[controlId]!, forKeyEvent: type) } - @objc static func shortcutChangedCallback(_ sender: NSControl) { - let controlId = sender.identifier!.rawValue - if controlId == "holdShortcut" { - addShortcut(.up, Shortcut(keyEquivalent: Preferences.holdShortcut)!, controlId) + @objc static func shortcutChangedCallback(_ sender: NSControl, _ rawName: String) { + if rawName == "holdShortcut" { + addShortcut(.up, Shortcut(keyEquivalent: Preferences.holdShortcut)!, rawName) shortcutsDependentOnHoldShortcut.forEach { if $0.identifier!.rawValue == "arrowKeysEnabled" { GeneralTab.arrowKeysEnabledCallback($0) } else { - GeneralTab.shortcutChangedCallback($0) + GeneralTab.shortcutChangedCallback($0, rawName) } } } else { // remove the holdShortcut character in case they also use it in the other shortcuts let newValue = Preferences.holdShortcut.reduce((sender as! RecorderControl).stringValue, { $0.replacingOccurrences(of: String($1), with: "") }) if newValue.isEmpty { - removeShortcutIfExists(controlId, .down) + removeShortcutIfExists(rawName, .down) return } - addShortcut(.down, Shortcut(keyEquivalent: Preferences.holdShortcut + newValue)!, controlId) + addShortcut(.down, Shortcut(keyEquivalent: Preferences.holdShortcut + newValue)!, rawName) } } diff --git a/src/ui/preferences-window/tabs/PoliciesTab.swift b/src/ui/preferences-window/tabs/PoliciesTab.swift new file mode 100644 index 00000000..6fe7252d --- /dev/null +++ b/src/ui/preferences-window/tabs/PoliciesTab.swift @@ -0,0 +1,47 @@ +import Cocoa +import Sparkle +import Preferences + +class PoliciesTab: NSViewController, PreferencePane { + let preferencePaneIdentifier = PreferencePane.Identifier("Policies") + let preferencePaneTitle = NSLocalizedString("Policies", comment: "") + let toolbarItemIcon = NSImage(named: NSImage.refreshTemplateName)! + + static var updateButtons: [NSButton]! + static var crashButtons: [NSButton]! + // this helps prevent double-dipping (i.e. user updates the UI > changes the preference > updates the UI) + static var policyLock = false + + override func loadView() { + let updateLabel = LabelAndControl.makeLabel(NSLocalizedString("Updates policy:", comment: "")) + PoliciesTab.updateButtons = LabelAndControl.makeRadioButtons(UpdatePolicyPreference.allCases, "updatePolicy", extraAction: { _ in + PoliciesTab.policyLock = true + let policy = Preferences.updatePolicy + SUUpdater.shared().automaticallyDownloadsUpdates = policy == .autoInstall + SUUpdater.shared().automaticallyChecksForUpdates = policy == .autoInstall || policy == .autoCheck + PoliciesTab.policyLock = false + }) + let updateOptions = StackView(PoliciesTab.updateButtons, .vertical) + updateOptions.spacing = GridView.interPadding / 2 + let checkForUpdates = NSButton(title: NSLocalizedString("Check for updates now…", comment: ""), target: nil, action: #selector(PoliciesTab.checkForUpdatesNow)) + + let crashLabel = LabelAndControl.makeLabel(NSLocalizedString("Crash reports policy:", comment: "")) + PoliciesTab.crashButtons = LabelAndControl.makeRadioButtons(CrashPolicyPreference.allCases, "crashPolicy") + let crashOptions = StackView(PoliciesTab.crashButtons, .vertical) + let grid = GridView([ + [updateLabel, updateOptions], + [NSView(), checkForUpdates], + [crashLabel, crashOptions], + ]) + grid.column(at: 0).xPlacement = .trailing + grid.row(at: 2).topPadding = GridView.interPadding * 1.5 + grid.fit() + + view = grid + UserDefaultsEvents.observe() + } + + @objc static func checkForUpdatesNow(_ sender: Any) { + SUUpdater.shared().checkForUpdates(sender) + } +} diff --git a/src/ui/preferences-window/tabs/UpdatesTab.swift b/src/ui/preferences-window/tabs/UpdatesTab.swift deleted file mode 100644 index 8c1fb056..00000000 --- a/src/ui/preferences-window/tabs/UpdatesTab.swift +++ /dev/null @@ -1,53 +0,0 @@ -import Cocoa -import Sparkle -import Preferences - -class UpdatesTab: NSViewController, PreferencePane { - let preferencePaneIdentifier = PreferencePane.Identifier("Updates") - let preferencePaneTitle = NSLocalizedString("Updates", comment: "") - let toolbarItemIcon = NSImage(named: NSImage.refreshTemplateName)! - - var dontPeriodicallyCheck: NSButton! - var periodicallyCheck: NSButton! - var periodicallyInstall: NSButton! - var checkForUpdates: NSButton! - // this helps prevent double-dipping (i.e. user updates the UI > changes the preference > updates the UI) - var policyLock = false - - override func loadView() { - dontPeriodicallyCheck = NSButton(radioButtonWithTitle: NSLocalizedString("Don’t check for updates periodically", comment: ""), target: self, action: #selector(updatePolicyCallback)) - dontPeriodicallyCheck.fit() - periodicallyCheck = NSButton(radioButtonWithTitle: NSLocalizedString("Check for updates periodically", comment: ""), target: self, action: #selector(updatePolicyCallback)) - periodicallyCheck.fit() - periodicallyInstall = NSButton(radioButtonWithTitle: NSLocalizedString("Auto-install updates periodically", comment: ""), target: self, action: #selector(updatePolicyCallback)) - periodicallyInstall.fit() - let policyLabel = NSTextField(wrappingLabelWithString: NSLocalizedString("Updates policy:", comment: "")) - policyLabel.isSelectable = false - let policies = StackView([dontPeriodicallyCheck, periodicallyCheck, periodicallyInstall], .vertical) - policies.spacing = GridView.interPadding / 2 - checkForUpdates = NSButton(title: NSLocalizedString("Check for updates now…", comment: ""), target: nil, action: #selector(UpdatesTab.checkForUpdatesNow)) - let grid = GridView([ - [policyLabel, policies], - [checkForUpdates] - ]) - grid.cell(atColumnIndex: 0, rowIndex: 0).xPlacement = .trailing - let row1 = grid.row(at: 1) - row1.mergeCells(in: NSRange(location: 0, length: 2)) - row1.topPadding = GridView.interPadding - row1.cell(at: 0).xPlacement = .center - grid.fit() - view = grid - UserDefaultsEvents.observe(self) - } - - @objc static func checkForUpdatesNow(_ sender: Any) { - SUUpdater.shared().checkForUpdates(sender) - } - - @objc func updatePolicyCallback() { - policyLock = true - SUUpdater.shared().automaticallyDownloadsUpdates = periodicallyInstall.state == .on - SUUpdater.shared().automaticallyChecksForUpdates = periodicallyInstall.state == .on || periodicallyCheck.state == .on - policyLock = false - } -}