Repository: mediatechlab/tts-wrapper (language: python)

Issue:
Add SAPI support
To have a complete picture we could add SAPI for windows:

https://github.com/DeepHorizons/tts


Discussion / hints:
Hey @mrx23dot , thanks for the suggestion. I think that would be great.
I'm working on a set of refactorings so we could add new engines like SAPI more easily.
The project above works great (even with SSML), 
also with the IVONA voices SAPI is very competitive, considering the rate limits of online services. 

So something like a wrapper could work, 
pip install TTS-Wrapper[sapi]
even if it just installs `pip install git+https://github.com/DeepHorizons/tts` as dependency.

(I also noticed the head doesn't work anymore with python 3.6, yaml config makes install fail)
Hey @mrx23dot, are you still interested in this integration with SAPI?

I've made some improvements recently and even added an offline engine for Linux called PicoTTS. I think it would be easier to integrate with SAPI.
Sure, put it on a branch and I can test it on windows, cheers.

Fix patch:
diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml
index 9d623f97..866bce90 100644
--- a/.github/workflows/pythonpackage.yml
+++ b/.github/workflows/pythonpackage.yml
@@ -4,11 +4,17 @@ on: [push]
 
 jobs:
   build:
-    runs-on: ubuntu-latest
+    runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        python-version: ['3.8', '3.9', '3.10']
-
+        include:
+          - {os: ubuntu-latest, python: '3.8'}
+          - {os: ubuntu-latest, python: '3.9'}
+          - {os: ubuntu-latest, python: '3.10'}
+          - {os: windows-latest, python: '3.10'}
+    defaults:
+      run:
+        shell: bash
     steps:
       - name: Checkout repo
         uses: actions/checkout@v2
@@ -29,7 +35,8 @@ jobs:
           flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
       - name: Check with mypy
         run: mypy $(git ls-files '*.py')
-      - name: Install PicoTTS
+      - name: Install PicoTTS on Linux
+        if: matrix.os == 'ubuntu-latest'
         run: |
           sudo apt-get update -y
           sudo apt-get install -y libttspico-utils
@@ -45,10 +52,11 @@ jobs:
           WATSON_API_URL: ${{ secrets.WATSON_API_URL }}
         run: |
           # create intermediary dirs
-          install -D /dev/null $GOOGLE_SA_PATH
+          mkdir -p $(dirname $GOOGLE_SA_PATH)
           # create Google's json file
           echo $GOOGLE_SA_FILE_B64 | base64 --decode > $GOOGLE_SA_PATH
           # run all tests with coverage
           pytest --cov=tts_wrapper
       - name: Upload Coverage to Codecov
+        if: ${{ !env.ACT }}
         uses: codecov/codecov-action@v2
diff --git a/Makefile b/Makefile
index 2b82b24a..1640998b 100644
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,8 @@ act-build:
 
 requirements.txt: pyproject.toml
 	poetry export --without-hashes -E google -E watson -E polly -E microsoft -f requirements.txt -o requirements.txt
+	# it seems like sapi dependencies are not being generated correctly, so we'll manually add them here
+	echo "pyttsx3==2.90" >> requirements.txt
 
 requirements.dev.txt: pyproject.toml requirements.txt
 	poetry export --dev --without-hashes -f requirements.txt -o requirements.dev.txt
diff --git a/README.md b/README.md
index 21b2787b..d2039b84 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,7 @@ Currently the following services are supported:
 - Microsoft TTS
 - IBM Watson
 - PicoTTS
+- SAPI (Microsoft Speech API)
 
 ## Installation
 
@@ -120,13 +121,15 @@ from tts_wrapper import WatsonClient
 client = WatsonClient(credentials=('API_KEY', 'API_URL'))
 ```
 
-### PicoTTS
+#### PicoTTS & SAPI
 
-This client doesn't require authorization since it is offline.
+These clients dont't require authorization since they run offline.
 
 ```Python
-from tts_wrapper import PicoClient
+from tts_wrapper import PicoClient, SAPIClient
 client = PicoClient()
+# or
+client = SAPIClient()
 ```
 
 ## File Format
diff --git a/poetry.lock b/poetry.lock
index 778e511b..98b2e850 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -456,6 +456,14 @@ category = "dev"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
+[[package]]
+name = "comtypes"
+version = "1.1.11"
+description = "Pure Python COM package"
+category = "main"
+optional = true
+python-versions = "*"
+
 [[package]]
 name = "coverage"
 version = "6.4.1"
@@ -650,110 +658,1974 @@ optional = false
 python-versions = "*"
 
 [[package]]
-name = "packaging"
-version = "21.3"
-description = "Core utilities for Python packages"
-category = "dev"
-optional = false
+name = "packaging"
+version = "21.3"
+description = "Core utilities for Python packages"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
+
+[[package]]
+name = "pathspec"
+version = "0.9.0"
+description = "Utility library for gitignore style pattern matching of file paths."
+category = "dev"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+
+[[package]]
+name = "platformdirs"
+version = "2.5.2"
+description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[package.extras]
+docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"]
+test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"]
+
+[[package]]
+name = "pluggy"
+version = "1.0.0"
+description = "plugin and hook calling mechanisms for python"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+dev = ["pre-commit", "tox"]
+testing = ["pytest", "pytest-benchmark"]
+
+[[package]]
+name = "proto-plus"
+version = "1.20.6"
+description = "Beautiful, Pythonic protocol buffers."
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+protobuf = ">=3.19.0,<5.0.0dev"
+
+[package.extras]
+testing = ["google-api-core[grpc] (>=1.31.5)"]
+
+[[package]]
+name = "protobuf"
+version = "3.20.1"
+description = "Protocol Buffers"
+category = "main"
+optional = true
+python-versions = ">=3.7"
+
+[[package]]
+name = "py"
+version = "1.11.0"
+description = "library with cross-python path, ini-parsing, io, code, log facilities"
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "pyasn1"
+version = "0.4.8"
+description = "ASN.1 types and codecs"
+category = "main"
+optional = true
+python-versions = "*"
+
+[[package]]
+name = "pyasn1-modules"
+version = "0.2.8"
+description = "A collection of ASN.1-based protocols modules."
+category = "main"
+optional = true
+python-versions = "*"
+
+[package.dependencies]
+pyasn1 = ">=0.4.6,<0.5.0"
+
+[[package]]
+name = "pyjwt"
+version = "2.4.0"
+description = "JSON Web Token implementation in Python"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.extras]
+crypto = ["cryptography (>=3.3.1)"]
+dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "mypy", "pre-commit"]
+docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"]
+tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"]
+
+[[package]]
+name = "pyobjc"
+version = "8.5"
+description = "Python<->ObjC Interoperability Module"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = "8.5"
+pyobjc-framework-Accessibility = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-Accounts = {version = "8.5", markers = "platform_release >= \"12.0\""}
+pyobjc-framework-AddressBook = "8.5"
+pyobjc-framework-AdServices = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-AdSupport = {version = "8.5", markers = "platform_release >= \"18.0\""}
+pyobjc-framework-AppleScriptKit = "8.5"
+pyobjc-framework-AppleScriptObjC = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-ApplicationServices = "8.5"
+pyobjc-framework-AppTrackingTransparency = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-AudioVideoBridging = {version = "8.5", markers = "platform_release >= \"12.0\""}
+pyobjc-framework-AuthenticationServices = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-AutomaticAssessmentConfiguration = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-Automator = "8.5"
+pyobjc-framework-AVFoundation = {version = "8.5", markers = "platform_release >= \"11.0\""}
+pyobjc-framework-AVKit = {version = "8.5", markers = "platform_release >= \"13.0\""}
+pyobjc-framework-BusinessChat = {version = "8.5", markers = "platform_release >= \"18.0\""}
+pyobjc-framework-CalendarStore = {version = "8.5", markers = "platform_release >= \"9.0\""}
+pyobjc-framework-CallKit = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-CFNetwork = "8.5"
+pyobjc-framework-ClassKit = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-CloudKit = {version = "8.5", markers = "platform_release >= \"14.0\""}
+pyobjc-framework-Cocoa = "8.5"
+pyobjc-framework-Collaboration = {version = "8.5", markers = "platform_release >= \"9.0\""}
+pyobjc-framework-ColorSync = {version = "8.5", markers = "platform_release >= \"17.0\""}
+pyobjc-framework-Contacts = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-ContactsUI = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-CoreAudio = "8.5"
+pyobjc-framework-CoreAudioKit = "8.5"
+pyobjc-framework-CoreBluetooth = {version = "8.5", markers = "platform_release >= \"14.0\""}
+pyobjc-framework-CoreData = "8.5"
+pyobjc-framework-CoreHaptics = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-CoreLocation = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-CoreMedia = {version = "8.5", markers = "platform_release >= \"11.0\""}
+pyobjc-framework-CoreMediaIO = {version = "8.5", markers = "platform_release >= \"11.0\""}
+pyobjc-framework-CoreMIDI = "8.5"
+pyobjc-framework-CoreML = {version = "8.5", markers = "platform_release >= \"17.0\""}
+pyobjc-framework-CoreMotion = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-CoreServices = "8.5"
+pyobjc-framework-CoreSpotlight = {version = "8.5", markers = "platform_release >= \"17.0\""}
+pyobjc-framework-CoreText = "8.5"
+pyobjc-framework-CoreWLAN = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-CryptoTokenKit = {version = "8.5", markers = "platform_release >= \"14.0\""}
+pyobjc-framework-DataDetection = {version = "8.5", markers = "platform_release >= \"21.0\""}
+pyobjc-framework-DeviceCheck = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-DictionaryServices = {version = "8.5", markers = "platform_release >= \"9.0\""}
+pyobjc-framework-DiscRecording = "8.5"
+pyobjc-framework-DiscRecordingUI = "8.5"
+pyobjc-framework-DiskArbitration = "8.5"
+pyobjc-framework-DVDPlayback = "8.5"
+pyobjc-framework-EventKit = {version = "8.5", markers = "platform_release >= \"12.0\""}
+pyobjc-framework-ExceptionHandling = "8.5"
+pyobjc-framework-ExecutionPolicy = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-ExternalAccessory = {version = "8.5", markers = "platform_release >= \"17.0\""}
+pyobjc-framework-FileProvider = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-FileProviderUI = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-FinderSync = {version = "8.5", markers = "platform_release >= \"14.0\""}
+pyobjc-framework-FSEvents = {version = "8.5", markers = "platform_release >= \"9.0\""}
+pyobjc-framework-GameCenter = {version = "8.5", markers = "platform_release >= \"12.0\""}
+pyobjc-framework-GameController = {version = "8.5", markers = "platform_release >= \"13.0\""}
+pyobjc-framework-GameKit = {version = "8.5", markers = "platform_release >= \"12.0\""}
+pyobjc-framework-GameplayKit = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-ImageCaptureCore = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-IMServicePlugIn = {version = "8.5", markers = "platform_release >= \"11.0\""}
+pyobjc-framework-InputMethodKit = {version = "8.5", markers = "platform_release >= \"9.0\""}
+pyobjc-framework-InstallerPlugins = "8.5"
+pyobjc-framework-InstantMessage = {version = "8.5", markers = "platform_release >= \"9.0\""}
+pyobjc-framework-Intents = {version = "8.5", markers = "platform_release >= \"16.0\""}
+pyobjc-framework-IntentsUI = {version = "8.5", markers = "platform_release >= \"21.0\""}
+pyobjc-framework-IOSurface = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-iTunesLibrary = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-KernelManagement = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-LatentSemanticMapping = "8.5"
+pyobjc-framework-LaunchServices = "8.5"
+pyobjc-framework-libdispatch = {version = "8.5", markers = "platform_release >= \"12.0\""}
+pyobjc-framework-LinkPresentation = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-LocalAuthentication = {version = "8.5", markers = "platform_release >= \"14.0\""}
+pyobjc-framework-LocalAuthenticationEmbeddedUI = {version = "8.5", markers = "platform_release >= \"21.0\""}
+pyobjc-framework-MailKit = {version = "8.5", markers = "platform_release >= \"21.0\""}
+pyobjc-framework-MapKit = {version = "8.5", markers = "platform_release >= \"13.0\""}
+pyobjc-framework-MediaAccessibility = {version = "8.5", markers = "platform_release >= \"13.0\""}
+pyobjc-framework-MediaLibrary = {version = "8.5", markers = "platform_release >= \"13.0\""}
+pyobjc-framework-MediaPlayer = {version = "8.5", markers = "platform_release >= \"16.0\""}
+pyobjc-framework-MediaToolbox = {version = "8.5", markers = "platform_release >= \"13.0\""}
+pyobjc-framework-Message = {version = "8.5", markers = "platform_release < \"13.0\""}
+pyobjc-framework-Metal = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-MetalKit = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-MetalPerformanceShaders = {version = "8.5", markers = "platform_release >= \"17.0\""}
+pyobjc-framework-MetalPerformanceShadersGraph = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-MetricKit = {version = "8.5", markers = "platform_release >= \"21.0\""}
+pyobjc-framework-MLCompute = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-ModelIO = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-MultipeerConnectivity = {version = "8.5", markers = "platform_release >= \"14.0\""}
+pyobjc-framework-NaturalLanguage = {version = "8.5", markers = "platform_release >= \"18.0\""}
+pyobjc-framework-NetFS = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-Network = {version = "8.5", markers = "platform_release >= \"18.0\""}
+pyobjc-framework-NetworkExtension = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-NotificationCenter = {version = "8.5", markers = "platform_release >= \"14.0\""}
+pyobjc-framework-OpenDirectory = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-OSAKit = "8.5"
+pyobjc-framework-OSLog = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-PassKit = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-PencilKit = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-Photos = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-PhotosUI = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-PreferencePanes = "8.5"
+pyobjc-framework-PubSub = {version = "8.5", markers = "platform_release >= \"9.0\" and platform_release < \"18.0\""}
+pyobjc-framework-PushKit = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-Quartz = "8.5"
+pyobjc-framework-QuickLookThumbnailing = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-ReplayKit = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-SafariServices = {version = "8.5", markers = "platform_release >= \"15.0\""}
+pyobjc-framework-SceneKit = {version = "8.5", markers = "platform_release >= \"11.0\""}
+pyobjc-framework-ScreenCaptureKit = {version = "8.5", markers = "platform_release >= \"21.4\""}
+pyobjc-framework-ScreenSaver = "8.5"
+pyobjc-framework-ScreenTime = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-ScriptingBridge = {version = "8.5", markers = "platform_release >= \"9.0\""}
+pyobjc-framework-SearchKit = "8.5"
+pyobjc-framework-Security = "8.5"
+pyobjc-framework-SecurityFoundation = "8.5"
+pyobjc-framework-SecurityInterface = "8.5"
+pyobjc-framework-ServerNotification = {version = "8.5", markers = "platform_release >= \"10.0\" and platform_release < \"13.0\""}
+pyobjc-framework-ServiceManagement = {version = "8.5", markers = "platform_release >= \"10.0\""}
+pyobjc-framework-ShazamKit = {version = "8.5", markers = "platform_release >= \"21.0\""}
+pyobjc-framework-Social = {version = "8.5", markers = "platform_release >= \"12.0\""}
+pyobjc-framework-SoundAnalysis = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-Speech = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-SpriteKit = {version = "8.5", markers = "platform_release >= \"13.0\""}
+pyobjc-framework-StoreKit = {version = "8.5", markers = "platform_release >= \"11.0\""}
+pyobjc-framework-SyncServices = "8.5"
+pyobjc-framework-SystemConfiguration = "8.5"
+pyobjc-framework-SystemExtensions = {version = "8.5", markers = "platform_release >= \"19.0\""}
+pyobjc-framework-UniformTypeIdentifiers = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-UserNotifications = {version = "8.5", markers = "platform_release >= \"18.0\""}
+pyobjc-framework-UserNotificationsUI = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-VideoSubscriberAccount = {version = "8.5", markers = "platform_release >= \"18.0\""}
+pyobjc-framework-VideoToolbox = {version = "8.5", markers = "platform_release >= \"12.0\""}
+pyobjc-framework-Virtualization = {version = "8.5", markers = "platform_release >= \"20.0\""}
+pyobjc-framework-Vision = {version = "8.5", markers = "platform_release >= \"17.0\""}
+pyobjc-framework-WebKit = "8.5"
+
+[package.extras]
+allbindings = ["pyobjc-core (==8.5)", "pyobjc-framework-libdispatch (==8.5)", "pyobjc-framework-Accessibility (==8.5)", "pyobjc-framework-AdServices (==8.5)", "pyobjc-framework-AdSupport (==8.5)", "pyobjc-framework-AppTrackingTransparency (==8.5)", "pyobjc-framework-AudioVideoBridging (==8.5)", "pyobjc-framework-AuthenticationServices (==8.5)", "pyobjc-framework-AutomaticAssessmentConfiguration (==8.5)", "pyobjc-framework-AVKit (==8.5)", "pyobjc-framework-AVFoundation (==8.5)", "pyobjc-framework-Accounts (==8.5)", "pyobjc-framework-AddressBook (==8.5)", "pyobjc-framework-AppleScriptKit (==8.5)", "pyobjc-framework-AppleScriptObjC (==8.5)", "pyobjc-framework-ApplicationServices (==8.5)", "pyobjc-framework-Automator (==8.5)", "pyobjc-framework-BusinessChat (==8.5)", "pyobjc-framework-CFNetwork (==8.5)", "pyobjc-framework-CalendarStore (==8.5)", "pyobjc-framework-CallKit (==8.5)", "pyobjc-framework-ClassKit (==8.5)", "pyobjc-framework-CloudKit (==8.5)", "pyobjc-framework-Cocoa (==8.5)", "pyobjc-framework-Collaboration (==8.5)", "pyobjc-framework-ColorSync (==8.5)", "pyobjc-framework-Contacts (==8.5)", "pyobjc-framework-ContactsUI (==8.5)", "pyobjc-framework-CoreAudio (==8.5)", "pyobjc-framework-CoreAudioKit (==8.5)", "pyobjc-framework-CoreBluetooth (==8.5)", "pyobjc-framework-CoreData (==8.5)", "pyobjc-framework-CoreHaptics (==8.5)", "pyobjc-framework-CoreLocation (==8.5)", "pyobjc-framework-CoreMedia (==8.5)", "pyobjc-framework-CoreMediaIO (==8.5)", "pyobjc-framework-CoreMIDI (==8.5)", "pyobjc-framework-CoreML (==8.5)", "pyobjc-framework-CoreMotion (==8.5)", "pyobjc-framework-CoreServices (==8.5)", "pyobjc-framework-CoreSpotlight (==8.5)", "pyobjc-framework-CoreText (==8.5)", "pyobjc-framework-CoreWLAN (==8.5)", "pyobjc-framework-CryptoTokenKit (==8.5)", "pyobjc-framework-DataDetection (==8.5)", "pyobjc-framework-DeviceCheck (==8.5)", "pyobjc-framework-DictionaryServices (==8.5)", "pyobjc-framework-DiscRecording (==8.5)", "pyobjc-framework-DiscRecordingUI (==8.5)", "pyobjc-framework-DiskArbitration (==8.5)", "pyobjc-framework-DVDPlayback (==8.5)", "pyobjc-framework-EventKit (==8.5)", "pyobjc-framework-ExceptionHandling (==8.5)", "pyobjc-framework-ExecutionPolicy (==8.5)", "pyobjc-framework-ExternalAccessory (==8.5)", "pyobjc-framework-FileProvider (==8.5)", "pyobjc-framework-FileProviderUI (==8.5)", "pyobjc-framework-FSEvents (==8.5)", "pyobjc-framework-FinderSync (==8.5)", "pyobjc-framework-GameCenter (==8.5)", "pyobjc-framework-GameController (==8.5)", "pyobjc-framework-IMServicePlugIn (==8.5)", "pyobjc-framework-InputMethodKit (==8.5)", "pyobjc-framework-ImageCaptureCore (==8.5)", "pyobjc-framework-Intents (==8.5)", "pyobjc-framework-IntentsUI (==8.5)", "pyobjc-framework-InstallerPlugins (==8.5)", "pyobjc-framework-InstantMessage (==8.5)", "pyobjc-framework-IOSurface (==8.5)", "pyobjc-framework-KernelManagement (==8.5)", "pyobjc-framework-LatentSemanticMapping (==8.5)", "pyobjc-framework-LaunchServices (==8.5)", "pyobjc-framework-LinkPresentation (==8.5)", "pyobjc-framework-LocalAuthentication (==8.5)", "pyobjc-framework-LocalAuthenticationEmbeddedUI (==8.5)", "pyobjc-framework-MailKit (==8.5)", "pyobjc-framework-MapKit (==8.5)", "pyobjc-framework-MediaAccessibility (==8.5)", "pyobjc-framework-MediaLibrary (==8.5)", "pyobjc-framework-MediaPlayer (==8.5)", "pyobjc-framework-MediaToolbox (==8.5)", "pyobjc-framework-Message (==8.5)", "pyobjc-framework-Metal (==8.5)", "pyobjc-framework-MetalKit (==8.5)", "pyobjc-framework-MetalPerformanceShaders (==8.5)", "pyobjc-framework-MetalPerformanceShadersGraph (==8.5)", "pyobjc-framework-MetricKit (==8.5)", "pyobjc-framework-MLCompute (==8.5)", "pyobjc-framework-ModelIO (==8.5)", "pyobjc-framework-MultipeerConnectivity (==8.5)", "pyobjc-framework-NaturalLanguage (==8.5)", "pyobjc-framework-NetFS (==8.5)", "pyobjc-framework-Network (==8.5)", "pyobjc-framework-NetworkExtension (==8.5)", "pyobjc-framework-NotificationCenter (==8.5)", "pyobjc-framework-OpenDirectory (==8.5)", "pyobjc-framework-OSAKit (==8.5)", "pyobjc-framework-OSLog (==8.5)", "pyobjc-framework-PassKit (==8.5)", "pyobjc-framework-PencilKit (==8.5)", "pyobjc-framework-Photos (==8.5)", "pyobjc-framework-PhotosUI (==8.5)", "pyobjc-framework-PreferencePanes (==8.5)", "pyobjc-framework-PubSub (==8.5)", "pyobjc-framework-PushKit (==8.5)", "pyobjc-framework-Quartz (==8.5)", "pyobjc-framework-QuickLookThumbnailing (==8.5)", "pyobjc-framework-ReplayKit (==8.5)", "pyobjc-framework-SafariServices (==8.5)", "pyobjc-framework-ScreenSaver (==8.5)", "pyobjc-framework-ScreenTime (==8.5)", "pyobjc-framework-ScriptingBridge (==8.5)", "pyobjc-framework-Security (==8.5)", "pyobjc-framework-SecurityFoundation (==8.5)", "pyobjc-framework-SecurityInterface (==8.5)", "pyobjc-framework-SearchKit (==8.5)", "pyobjc-framework-ServerNotification (==8.5)", "pyobjc-framework-ServiceManagement (==8.5)", "pyobjc-framework-ShazamKit (==8.5)", "pyobjc-framework-Social (==8.5)", "pyobjc-framework-Speech (==8.5)", "pyobjc-framework-SpriteKit (==8.5)", "pyobjc-framework-StoreKit (==8.5)", "pyobjc-framework-SyncServices (==8.5)", "pyobjc-framework-SystemConfiguration (==8.5)", "pyobjc-framework-WebKit (==8.5)", "pyobjc-framework-GameKit (==8.5)", "pyobjc-framework-GameplayKit (==8.5)", "pyobjc-framework-SceneKit (==8.5)", "pyobjc-framework-SoundAnalysis (==8.5)", "pyobjc-framework-ScreenCaptureKit (==8.5)", "pyobjc-framework-SystemExtensions (==8.5)", "pyobjc-framework-UniformTypeIdentifiers (==8.5)", "pyobjc-framework-UserNotifications (==8.5)", "pyobjc-framework-UserNotificationsUI (==8.5)", "pyobjc-framework-VideoSubscriberAccount (==8.5)", "pyobjc-framework-VideoToolbox (==8.5)", "pyobjc-framework-Virtualization (==8.5)", "pyobjc-framework-Vision (==8.5)", "pyobjc-framework-iTunesLibrary (==8.5)"]
+
+[[package]]
+name = "pyobjc-core"
+version = "8.5"
+description = "Python<->ObjC Interoperability Module"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[[package]]
+name = "pyobjc-framework-accessibility"
+version = "8.5"
+description = "Wrappers for the framework Accessibility on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-accounts"
+version = "8.5"
+description = "Wrappers for the framework Accounts on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-addressbook"
+version = "8.5"
+description = "Wrappers for the framework AddressBook on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-adservices"
+version = "8.5"
+description = "Wrappers for the framework AdServices on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-adsupport"
+version = "8.5"
+description = "Wrappers for the framework AdSupport on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-applescriptkit"
+version = "8.5"
+description = "Wrappers for the framework AppleScriptKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-applescriptobjc"
+version = "8.5"
+description = "Wrappers for the framework AppleScriptObjC on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-applicationservices"
+version = "8.5"
+description = "Wrappers for the framework ApplicationServices on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-apptrackingtransparency"
+version = "8.5"
+description = "Wrappers for the framework AppTrackingTransparency on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-audiovideobridging"
+version = "8.5"
+description = "Wrappers for the framework AudioVideoBridging on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-authenticationservices"
+version = "8.5"
+description = "Wrappers for the framework AuthenticationServices on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-automaticassessmentconfiguration"
+version = "8.5"
+description = "Wrappers for the framework AutomaticAssessmentConfiguration on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-automator"
+version = "8.5"
+description = "Wrappers for the framework Automator on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-avfoundation"
+version = "8.5"
+description = "Wrappers for the framework AVFoundation on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-CoreAudio = ">=8.5"
+pyobjc-framework-CoreMedia = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-avkit"
+version = "8.5"
+description = "Wrappers for the framework AVKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-businesschat"
+version = "8.5"
+description = "Wrappers for the framework BusinessChat on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-calendarstore"
+version = "8.5"
+description = "Wrappers for the framework CalendarStore on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-callkit"
+version = "8.5"
+description = "Wrappers for the framework CallKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-cfnetwork"
+version = "8.5"
+description = "Wrappers for the framework CFNetwork on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-classkit"
+version = "8.5"
+description = "Wrappers for the framework ClassKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-cloudkit"
+version = "8.5"
+description = "Wrappers for the framework CloudKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Accounts = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-CoreData = ">=8.5"
+pyobjc-framework-CoreLocation = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-cocoa"
+version = "8.5"
+description = "Wrappers for the Cocoa frameworks on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-collaboration"
+version = "8.5"
+description = "Wrappers for the framework Collaboration on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-colorsync"
+version = "8.5"
+description = "Wrappers for the framework ColorSync on Mac OS X"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-contacts"
+version = "8.5"
+description = "Wrappers for the framework Contacts on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-contactsui"
+version = "8.5"
+description = "Wrappers for the framework ContactsUI on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Contacts = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coreaudio"
+version = "8.5"
+description = "Wrappers for the framework CoreAudio on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coreaudiokit"
+version = "8.5"
+description = "Wrappers for the framework CoreAudioKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-CoreAudio = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-corebluetooth"
+version = "8.5"
+description = "Wrappers for the framework CoreBluetooth on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coredata"
+version = "8.5"
+description = "Wrappers for the framework CoreData on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-corehaptics"
+version = "8.5"
+description = "Wrappers for the framework CoreHaptics on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-corelocation"
+version = "8.5"
+description = "Wrappers for the framework CoreLocation on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coremedia"
+version = "8.5"
+description = "Wrappers for the framework CoreMedia on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coremediaio"
+version = "8.5"
+description = "Wrappers for the framework CoreMediaIO on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coremidi"
+version = "8.5"
+description = "Wrappers for the framework CoreMIDI on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coreml"
+version = "8.5"
+description = "Wrappers for the framework CoreML on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coremotion"
+version = "8.5"
+description = "Wrappers for the framework CoreMotion on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coreservices"
+version = "8.5"
+description = "Wrappers for the framework CoreServices on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-FSEvents = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-corespotlight"
+version = "8.5"
+description = "Wrappers for the framework CoreSpotlight on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-coretext"
+version = "8.5"
+description = "Wrappers for the framework CoreText on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-corewlan"
+version = "8.5"
+description = "Wrappers for the framework CoreWLAN on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-cryptotokenkit"
+version = "8.5"
+description = "Wrappers for the framework CryptoTokenKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-datadetection"
+version = "8.5"
+description = "Wrappers for the framework DataDetection on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-devicecheck"
+version = "8.5"
+description = "Wrappers for the framework DeviceCheck on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-dictionaryservices"
+version = "8.5"
+description = "Wrappers for the framework DictionaryServices on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-CoreServices = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-discrecording"
+version = "8.5"
+description = "Wrappers for the framework DiscRecording on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-discrecordingui"
+version = "8.5"
+description = "Wrappers for the framework DiscRecordingUI on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-DiscRecording = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-diskarbitration"
+version = "8.5"
+description = "Wrappers for the framework DiskArbitration on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-dvdplayback"
+version = "8.5"
+description = "Wrappers for the framework DVDPlayback on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-eventkit"
+version = "8.5"
+description = "Wrappers for the framework Accounts on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-exceptionhandling"
+version = "8.5"
+description = "Wrappers for the framework ExceptionHandling on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-executionpolicy"
+version = "8.5"
+description = "Wrappers for the framework ExecutionPolicy on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-externalaccessory"
+version = "8.5"
+description = "Wrappers for the framework ExternalAccessory on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-fileprovider"
+version = "8.5"
+description = "Wrappers for the framework FileProvider on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-fileproviderui"
+version = "8.5"
+description = "Wrappers for the framework FileProviderUI on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-FileProvider = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-findersync"
+version = "8.5"
+description = "Wrappers for the framework FinderSync on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-fsevents"
+version = "8.5"
+description = "Wrappers for the framework FSEvents on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-gamecenter"
+version = "8.5"
+description = "Wrappers for the framework GameCenter on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-gamecontroller"
+version = "8.5"
+description = "Wrappers for the framework GameController on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-gamekit"
+version = "8.5"
+description = "Wrappers for the framework GameKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-gameplaykit"
+version = "8.5"
+description = "Wrappers for the framework GameplayKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-SpriteKit = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-imagecapturecore"
+version = "8.5"
+description = "Wrappers for the framework ImageCaptureCore on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-imserviceplugin"
+version = "8.5"
+description = "Wrappers for the framework IMServicePlugIn on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-inputmethodkit"
+version = "8.5"
+description = "Wrappers for the framework InputMethodKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-installerplugins"
+version = "8.5"
+description = "Wrappers for the framework InstallerPlugins on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-instantmessage"
+version = "8.5"
+description = "Wrappers for the framework InstantMessage on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-intents"
+version = "8.5"
+description = "Wrappers for the framework Intents on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-intentsui"
+version = "8.5"
+description = "Wrappers for the framework Intents on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Intents = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-iosurface"
+version = "8.5"
+description = "Wrappers for the framework IOSurface on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-ituneslibrary"
+version = "8.5"
+description = "Wrappers for the framework iTunesLibrary on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-kernelmanagement"
+version = "8.5"
+description = "Wrappers for the framework KernelManagement on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-latentsemanticmapping"
+version = "8.5"
+description = "Wrappers for the framework LatentSemanticMapping on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-launchservices"
+version = "8.5"
+description = "Wrappers for the framework LaunchServices on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-CoreServices = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-libdispatch"
+version = "8.5"
+description = "Wrappers for libdispatch on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-linkpresentation"
+version = "8.5"
+description = "Wrappers for the framework LinkPresentation on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-localauthentication"
+version = "8.5"
+description = "Wrappers for the framework LocalAuthentication on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Security = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-localauthenticationembeddedui"
+version = "8.5"
+description = "Wrappers for the framework LocalAuthenticationEmbeddedUI on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-LocalAuthentication = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-mailkit"
+version = "8.5"
+description = "Wrappers for the framework MailKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-mapkit"
+version = "8.5"
+description = "Wrappers for the framework MapKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-CoreLocation = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-mediaaccessibility"
+version = "8.5"
+description = "Wrappers for the framework MediaAccessibility on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-medialibrary"
+version = "8.5"
+description = "Wrappers for the framework MediaLibrary on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-mediaplayer"
+version = "8.5"
+description = "Wrappers for the framework MediaPlayer on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-AVFoundation = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-mediatoolbox"
+version = "8.5"
+description = "Wrappers for the framework MediaToolbox on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-message"
+version = "8.5"
+description = "Wrappers for the framework Message on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-metal"
+version = "8.5"
+description = "Wrappers for the framework Metal on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-metalkit"
+version = "8.5"
+description = "Wrappers for the framework MetalKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Metal = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-metalperformanceshaders"
+version = "8.5"
+description = "Wrappers for the framework MetalPerformanceShaders on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Metal = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-metalperformanceshadersgraph"
+version = "8.5"
+description = "Wrappers for the framework MetalPerformanceShadersGraph on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-MetalPerformanceShaders = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-metrickit"
+version = "8.5"
+description = "Wrappers for the framework MetricKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-mlcompute"
+version = "8.5"
+description = "Wrappers for the framework MLCompute on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-modelio"
+version = "8.5"
+description = "Wrappers for the framework ModelIO on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-multipeerconnectivity"
+version = "8.5"
+description = "Wrappers for the framework MultipeerConnectivity on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-naturallanguage"
+version = "8.5"
+description = "Wrappers for the framework NaturalLanguage on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-netfs"
+version = "8.5"
+description = "Wrappers for the framework NetFS on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-network"
+version = "8.5"
+description = "Wrappers for the framework Network on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-networkextension"
+version = "8.5"
+description = "Wrappers for the framework NetworkExtension on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-notificationcenter"
+version = "8.5"
+description = "Wrappers for the framework NotificationCenter on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-opendirectory"
+version = "8.5"
+description = "Wrappers for the framework OpenDirectory on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-osakit"
+version = "8.5"
+description = "Wrappers for the framework OSAKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-oslog"
+version = "8.5"
+description = "Wrappers for the framework OSLog on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-CoreMedia = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-passkit"
+version = "8.5"
+description = "Wrappers for the framework PassKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-pencilkit"
+version = "8.5"
+description = "Wrappers for the framework PencilKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-photos"
+version = "8.5"
+description = "Wrappers for the framework Photos on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-photosui"
+version = "8.5"
+description = "Wrappers for the framework PhotosUI on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-preferencepanes"
+version = "8.5"
+description = "Wrappers for the framework PreferencePanes on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-pubsub"
+version = "8.5"
+description = "Wrappers for the framework PubSub on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-pushkit"
+version = "8.5"
+description = "Wrappers for the framework PushKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-quartz"
+version = "8.5"
+description = "Wrappers for the Quartz frameworks on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-quicklookthumbnailing"
+version = "8.5"
+description = "Wrappers for the framework QuickLookThumbnailing on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-replaykit"
+version = "8.5"
+description = "Wrappers for the framework ReplayKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-safariservices"
+version = "8.5"
+description = "Wrappers for the framework SafariServices on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-scenekit"
+version = "8.5"
+description = "Wrappers for the framework SceneKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-screencapturekit"
+version = "8.5"
+description = "Wrappers for the framework ScreenCaptureKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-CoreMedia = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-screensaver"
+version = "8.5"
+description = "Wrappers for the framework ScreenSaver on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-screentime"
+version = "8.5"
+description = "Wrappers for the framework ScreenTime on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-scriptingbridge"
+version = "8.5"
+description = "Wrappers for the framework ScriptingBridge on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-searchkit"
+version = "8.5"
+description = "Wrappers for the framework SearchKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-CoreServices = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-security"
+version = "8.5"
+description = "Wrappers for the framework Security on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-securityfoundation"
+version = "8.5"
+description = "Wrappers for the framework SecurityFoundation on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Security = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-securityinterface"
+version = "8.5"
+description = "Wrappers for the framework SecurityInterface on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Security = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-servernotification"
+version = "8.5"
+description = "Wrappers for the framework ServerNotification on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-servicemanagement"
+version = "8.5"
+description = "Wrappers for the framework ServiceManagement on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-shazamkit"
+version = "8.5"
+description = "Wrappers for the framework ShazamKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-social"
+version = "8.5"
+description = "Wrappers for the framework Social on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-soundanalysis"
+version = "8.5"
+description = "Wrappers for the framework SoundAnalysis on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-speech"
+version = "8.5"
+description = "Wrappers for the framework Speech on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-spritekit"
+version = "8.5"
+description = "Wrappers for the framework SpriteKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-storekit"
+version = "8.5"
+description = "Wrappers for the framework StoreKit on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-syncservices"
+version = "8.5"
+description = "Wrappers for the framework SyncServices on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-CoreData = ">=8.5"
+
+[[package]]
+name = "pyobjc-framework-systemconfiguration"
+version = "8.5"
+description = "Wrappers for the framework SystemConfiguration on macOS"
+category = "main"
+optional = true
 python-versions = ">=3.6"
 
 [package.dependencies]
-pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
 
 [[package]]
-name = "pathspec"
-version = "0.9.0"
-description = "Utility library for gitignore style pattern matching of file paths."
-category = "dev"
-optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+name = "pyobjc-framework-systemextensions"
+version = "8.5"
+description = "Wrappers for the framework SystemExtensions on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
 
 [[package]]
-name = "platformdirs"
-version = "2.5.2"
-description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
-category = "dev"
-optional = false
-python-versions = ">=3.7"
+name = "pyobjc-framework-uniformtypeidentifiers"
+version = "8.5"
+description = "Wrappers for the framework UniformTypeIdentifiers on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
 
-[package.extras]
-docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"]
-test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"]
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
 
 [[package]]
-name = "pluggy"
-version = "1.0.0"
-description = "plugin and hook calling mechanisms for python"
-category = "dev"
-optional = false
+name = "pyobjc-framework-usernotifications"
+version = "8.5"
+description = "Wrappers for the framework UserNotifications on macOS"
+category = "main"
+optional = true
 python-versions = ">=3.6"
 
-[package.extras]
-dev = ["pre-commit", "tox"]
-testing = ["pytest", "pytest-benchmark"]
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
 
 [[package]]
-name = "proto-plus"
-version = "1.20.6"
-description = "Beautiful, Pythonic protocol buffers."
+name = "pyobjc-framework-usernotificationsui"
+version = "8.5"
+description = "Wrappers for the framework UserNotificationsUI on macOS"
 category = "main"
 optional = true
 python-versions = ">=3.6"
 
 [package.dependencies]
-protobuf = ">=3.19.0,<5.0.0dev"
-
-[package.extras]
-testing = ["google-api-core[grpc] (>=1.31.5)"]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-UserNotifications = ">=8.5"
 
 [[package]]
-name = "protobuf"
-version = "3.20.1"
-description = "Protocol Buffers"
+name = "pyobjc-framework-videosubscriberaccount"
+version = "8.5"
+description = "Wrappers for the framework VideoSubscriberAccount on macOS"
 category = "main"
 optional = true
-python-versions = ">=3.7"
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
 
 [[package]]
-name = "py"
-version = "1.11.0"
-description = "library with cross-python path, ini-parsing, io, code, log facilities"
-category = "dev"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+name = "pyobjc-framework-videotoolbox"
+version = "8.5"
+description = "Wrappers for the framework VideoToolbox on macOS"
+category = "main"
+optional = true
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-CoreMedia = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
 
 [[package]]
-name = "pyasn1"
-version = "0.4.8"
-description = "ASN.1 types and codecs"
+name = "pyobjc-framework-virtualization"
+version = "8.5"
+description = "Wrappers for the framework Virtualization on macOS"
 category = "main"
 optional = true
-python-versions = "*"
+python-versions = ">=3.6"
+
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
 
 [[package]]
-name = "pyasn1-modules"
-version = "0.2.8"
-description = "A collection of ASN.1-based protocols modules."
+name = "pyobjc-framework-vision"
+version = "8.5"
+description = "Wrappers for the framework Vision on macOS"
 category = "main"
 optional = true
-python-versions = "*"
+python-versions = ">=3.6"
 
 [package.dependencies]
-pyasn1 = ">=0.4.6,<0.5.0"
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
+pyobjc-framework-CoreML = ">=8.5"
+pyobjc-framework-Quartz = ">=8.5"
 
 [[package]]
-name = "pyjwt"
-version = "2.4.0"
-description = "JSON Web Token implementation in Python"
+name = "pyobjc-framework-webkit"
+version = "8.5"
+description = "Wrappers for the framework WebKit on macOS"
 category = "main"
 optional = true
 python-versions = ">=3.6"
 
-[package.extras]
-crypto = ["cryptography (>=3.3.1)"]
-dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "mypy", "pre-commit"]
-docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"]
-tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"]
+[package.dependencies]
+pyobjc-core = ">=8.5"
+pyobjc-framework-Cocoa = ">=8.5"
 
 [[package]]
 name = "pyparsing"
@@ -766,6 +2638,17 @@ python-versions = ">=3.6.8"
 [package.extras]
 diagrams = ["railroad-diagrams", "jinja2"]
 
+[[package]]
+name = "pypiwin32"
+version = "223"
+description = ""
+category = "main"
+optional = true
+python-versions = "*"
+
+[package.dependencies]
+pywin32 = ">=223"
+
 [[package]]
 name = "pytest"
 version = "6.2.5"
@@ -827,6 +2710,28 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
 [package.dependencies]
 six = ">=1.5"
 
+[[package]]
+name = "pyttsx3"
+version = "2.90"
+description = "Text to Speech (TTS) library for Python 2 and 3. Works without internet connection or delay. Supports multiple TTS engines, including Sapi5, nsss, and espeak."
+category = "main"
+optional = true
+python-versions = "*"
+
+[package.dependencies]
+comtypes = {version = "*", markers = "platform_system == \"Windows\""}
+pyobjc = {version = ">=2.4", markers = "platform_system == \"Darwin\""}
+pypiwin32 = {version = "*", markers = "platform_system == \"Windows\""}
+pywin32 = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "pywin32"
+version = "304"
+description = "Python for Window Extensions"
+category = "main"
+optional = true
+python-versions = "*"
+
 [[package]]
 name = "requests"
 version = "2.28.1"
@@ -934,7 +2839,7 @@ python-versions = "*"
 
 [[package]]
 name = "typing-extensions"
-version = "4.2.0"
+version = "4.3.0"
 description = "Backported and Experimental Type Hints for Python 3.7+"
 category = "dev"
 optional = false
@@ -965,12 +2870,13 @@ python-versions = ">=3.6"
 google = ["google-cloud-texttospeech"]
 microsoft = ["requests"]
 polly = ["boto3"]
+sapi = ["pyttsx3"]
 watson = ["ibm-watson"]
 
 [metadata]
 lock-version = "1.1"
 python-versions = "^3.9"
-content-hash = "138be74ef0f0c0ac82b0f77c6e07dc9694b5256cc3956f7c2c9466dbe92137fe"
+content-hash = "b17a006fcc6e0fd858664ed87a755c9252363edb8d02f848fd6286d9b24692ee"
 
 [metadata.files]
 atomicwrites = [
@@ -1042,6 +2948,10 @@ colorama = [
     {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"},
     {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"},
 ]
+comtypes = [
+    {file = "comtypes-1.1.11-py2.py3-none-any.whl", hash = "sha256:bc4fd1c20bdd960cdf1763020c0480332c2382f70260aa424fc019f5ce27263b"},
+    {file = "comtypes-1.1.11.zip", hash = "sha256:5c4c4832dce61de44b956c8cfafcca7e94f5016d564632c2b25846e88820c7f8"},
+]
 coverage = [
     {file = "coverage-6.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1d5aa2703e1dab4ae6cf416eb0095304f49d004c39e9db1d86f57924f43006b"},
     {file = "coverage-6.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4ce1b258493cbf8aec43e9b50d89982346b98e9ffdfaae8ae5793bc112fb0068"},
@@ -1288,10 +3198,779 @@ pyjwt = [
     {file = "PyJWT-2.4.0-py3-none-any.whl", hash = "sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf"},
     {file = "PyJWT-2.4.0.tar.gz", hash = "sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba"},
 ]
+pyobjc = [
+    {file = "pyobjc-8.5-py3-none-any.whl", hash = "sha256:72917dfb2cf138c06464c25ccf0b528877b997bbf0fd9854ce0523e7e739d955"},
+    {file = "pyobjc-8.5.tar.gz", hash = "sha256:45a4475f5b76cb05666fa68b4d51a527b883d9044eb649176714991d7ff313ec"},
+]
+pyobjc-core = [
+    {file = "pyobjc-core-8.5.tar.gz", hash = "sha256:704c275439856c0d1287469f0d589a7d808d48b754a93d9ce5415d4eaf06d576"},
+    {file = "pyobjc_core-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0c234143b48334443f5adcf26e668945a6d47bc1fa6223e80918c6c735a029d9"},
+    {file = "pyobjc_core-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1486ee533f0d76f666804ce89723ada4db56bfde55e56151ba512d3f849857f8"},
+    {file = "pyobjc_core-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:412de06dfa728301c04b3e46fd7453320a8ae8b862e85236e547cd797a73b490"},
+    {file = "pyobjc_core-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b3e09cccb1be574a82cc9f929ae27fc4283eccc75496cb5d51534caa6bb83a3"},
+    {file = "pyobjc_core-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:eeafe21f879666ab7f57efcc6b007c9f5f8733d367b7e380c925203ed83f000d"},
+    {file = "pyobjc_core-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c0071686976d7ea8c14690950e504a13cb22b4ebb2bc7b5ec47c1c1c0f6eff41"},
+]
+pyobjc-framework-accessibility = [
+    {file = "pyobjc-framework-Accessibility-8.5.tar.gz", hash = "sha256:cfe60c131891ff43fc2b2a94f8135f2d6c42800eb027d1b70886bae249eb77da"},
+    {file = "pyobjc_framework_Accessibility-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9e892ee41554a2f504fd19e39f316bf60ad5bc98a86de4c9fa73bcf0191a5d4a"},
+    {file = "pyobjc_framework_Accessibility-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:132c91b96d0ed9637e1b1313c5436d0450e7b6b77aa1d13ee1adf7aa7c648b05"},
+    {file = "pyobjc_framework_Accessibility-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1e1491132017c3c23229c2c16ac16f1ac770e0eeccf3a31ac2b799ebe0044cfa"},
+]
+pyobjc-framework-accounts = [
+    {file = "pyobjc-framework-Accounts-8.5.tar.gz", hash = "sha256:e971fa28d1543a0a00234ea2a5d3fe208387ea5e13fa78f90adecd59f99beffe"},
+    {file = "pyobjc_framework_Accounts-8.5-py2.py3-none-any.whl", hash = "sha256:67abb8dfa974c0b1924cd13c4d95ec013b29ddac6e2b8283eab2c8dabf6cfb28"},
+]
+pyobjc-framework-addressbook = [
+    {file = "pyobjc-framework-AddressBook-8.5.tar.gz", hash = "sha256:d41a8a5b088e7eba6a828477ec221e61de2a75e1769ce060c2713b44d7be439b"},
+    {file = "pyobjc_framework_AddressBook-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3266c56c1c5d78c384ddd73caf23e65e1cfb12ea4fa9bc3b1575b6acc195da44"},
+    {file = "pyobjc_framework_AddressBook-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:63fc856bd75ec7b9dba559902053fe2cba86032dea149b20c24425b1a07f0973"},
+    {file = "pyobjc_framework_AddressBook-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:bc85c225dad8e4307a7e80d1b99299fb4b4575a83f0f880635abae836913b20b"},
+]
+pyobjc-framework-adservices = [
+    {file = "pyobjc-framework-AdServices-8.5.tar.gz", hash = "sha256:46715ed08b678596269d5a4e28c0155bddd9b7784ed33d7ebf82e3dbf6eeca95"},
+    {file = "pyobjc_framework_AdServices-8.5-py2.py3-none-any.whl", hash = "sha256:c0aa6123d4d2a9c8c427219024e291d299c9444d9fbf2ef82cf4f1b8efe076a9"},
+]
+pyobjc-framework-adsupport = [
+    {file = "pyobjc-framework-AdSupport-8.5.tar.gz", hash = "sha256:36e5331c4751d923f32d1a49b4328fabd482a13f727d3bd45f9cb1cefa054e96"},
+    {file = "pyobjc_framework_AdSupport-8.5-py2.py3-none-any.whl", hash = "sha256:fe562dc1ff04e73c4cf5995f5ba959410b3772743dc63425849572886229b384"},
+]
+pyobjc-framework-applescriptkit = [
+    {file = "pyobjc-framework-AppleScriptKit-8.5.tar.gz", hash = "sha256:0b8fc247a72cec76b991d2ce9bf57bcab12510a4fcc3145f01c778ecd7592d25"},
+    {file = "pyobjc_framework_AppleScriptKit-8.5-py2.py3-none-any.whl", hash = "sha256:1740850a3e970ec2a119658d4c00d1cd4c4f6aab16f4d0a08b093f78e2615a97"},
+]
+pyobjc-framework-applescriptobjc = [
+    {file = "pyobjc-framework-AppleScriptObjC-8.5.tar.gz", hash = "sha256:0468b0d2b87e26d1ffd6be01a2a3b1188ff8a732cfb4d7b26ad25172bb5eadf3"},
+    {file = "pyobjc_framework_AppleScriptObjC-8.5-py2.py3-none-any.whl", hash = "sha256:68ed0548de2d99b7f6c989ac499986136162f48a996a75fd1a6131507c1bb8d5"},
+]
+pyobjc-framework-applicationservices = [
+    {file = "pyobjc-framework-ApplicationServices-8.5.tar.gz", hash = "sha256:fa3015ef8e3add90af3447d7fdcc7f8dd083cc2a1d58f99a569480a2df10d2b1"},
+    {file = "pyobjc_framework_ApplicationServices-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:436b16ebe448a829a8312e10208eec81a2adcae1fff674dbcc3262e1bd76e0ca"},
+    {file = "pyobjc_framework_ApplicationServices-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:408958d14aa7fcf46f2163754c211078bc63be1368934d86188202914dce077d"},
+    {file = "pyobjc_framework_ApplicationServices-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1d6cd4ce192859a22e208da4d7177a1c3ceb1ef2f64c339fd881102b1210cadd"},
+    {file = "pyobjc_framework_ApplicationServices-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0251d092adb1d2d116fd9f147ceef0e53b158a46c21245131c40b9d7b786d0db"},
+    {file = "pyobjc_framework_ApplicationServices-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9742e69fe6d4545d0e02b0ad0a7a2432bc9944569ee07d6e90ffa5ef614df9f7"},
+    {file = "pyobjc_framework_ApplicationServices-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16f5677c14ea903c6aaca1dd121521825c39e816cae696d6ae32c0b287252ab2"},
+]
+pyobjc-framework-apptrackingtransparency = [
+    {file = "pyobjc-framework-AppTrackingTransparency-8.5.tar.gz", hash = "sha256:1c3e2e2bb80df9e02532fe1762e84468f05646acdc131e5f29fa18e2fb14cee3"},
+    {file = "pyobjc_framework_AppTrackingTransparency-8.5-py2.py3-none-any.whl", hash = "sha256:0aed6d40245aae09bcb3bb2616b80b6c6debcbb2c4efc875b60fe6c35f77eaa0"},
+]
+pyobjc-framework-audiovideobridging = [
+    {file = "pyobjc-framework-AudioVideoBridging-8.5.tar.gz", hash = "sha256:756230612a5d418043e860bc67162a61e754ce71dc34f486d7dd756c4789bee4"},
+    {file = "pyobjc_framework_AudioVideoBridging-8.5-py2.py3-none-any.whl", hash = "sha256:d2a0cf6bb696a385722cfb7d33afa5bd08c79e231fba22879cb743236e63b63d"},
+]
+pyobjc-framework-authenticationservices = [
+    {file = "pyobjc-framework-AuthenticationServices-8.5.tar.gz", hash = "sha256:f88d2d1d9c5f55836421d20010dea06a5ac0839b503b56415d3c3103f4d84fa2"},
+    {file = "pyobjc_framework_AuthenticationServices-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7834944b941fc636e86bc30d3aba6bbc5ebdcb98c81d11d3c5f11e09f7fb0a0b"},
+    {file = "pyobjc_framework_AuthenticationServices-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f00a34c89178b6c09d980fa04ef480e1b4c5e1435b754f0725611f0a1be587b8"},
+    {file = "pyobjc_framework_AuthenticationServices-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d1589a01d758126d22a332e5328b78e62defabea0327344893e765b80d3033ba"},
+]
+pyobjc-framework-automaticassessmentconfiguration = [
+    {file = "pyobjc-framework-AutomaticAssessmentConfiguration-8.5.tar.gz", hash = "sha256:ce67b419fa5adf994f6fc4d2a3dacf48e8b433ba09ce22af9b617d4bd97e4ebd"},
+    {file = "pyobjc_framework_AutomaticAssessmentConfiguration-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f3566dc05f06d464f84383596d0b055eb90d24a8ada4b447fbd4114cf1a8dcaa"},
+    {file = "pyobjc_framework_AutomaticAssessmentConfiguration-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e452df0d1be76f4997b9242186add0c8cfb1498977ec3e3fc136ec09867c3da"},
+    {file = "pyobjc_framework_AutomaticAssessmentConfiguration-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:65bcc9b85159c93249854ce1c4ddef6bfaf85227f98fb89c311536b30dcb5258"},
+]
+pyobjc-framework-automator = [
+    {file = "pyobjc-framework-Automator-8.5.tar.gz", hash = "sha256:335a7e65a8a2e8b8689a55192a4092a9199a376e3287458e9a92f5981c7c3dbd"},
+    {file = "pyobjc_framework_Automator-8.5-py2.py3-none-any.whl", hash = "sha256:de6fb84837307e65710cd24d3f79adfe610784df2eb287ea4d40ebcd22c66523"},
+]
+pyobjc-framework-avfoundation = [
+    {file = "pyobjc-framework-AVFoundation-8.5.tar.gz", hash = "sha256:5872245447703535c71839ee9db22472bc3dcf4a2468d72fb48b0e29933bb248"},
+    {file = "pyobjc_framework_AVFoundation-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:19a4e89159c3ad9277fe20846ce340ed2c5a1ad2a696c1f421999255a9e90e3a"},
+    {file = "pyobjc_framework_AVFoundation-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:562f994558bbf4c6032e8f0a7d1eb2ed49fc2f817562b17c0c8febf0471f1ab1"},
+    {file = "pyobjc_framework_AVFoundation-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a5b14982d213aebdfad3630f84a464c62948d7636ce2e552852426bdec1ab9a9"},
+]
+pyobjc-framework-avkit = [
+    {file = "pyobjc-framework-AVKit-8.5.tar.gz", hash = "sha256:ec1283fe4f805ab156d04f6cdc76a03c99235e1989026bea0aa97532c1510ebc"},
+    {file = "pyobjc_framework_AVKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:12af251b2abf06a6cbdc2e114e4a72ca80f0b0b95e2c43739f9cff1ddf6a98d9"},
+    {file = "pyobjc_framework_AVKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4d58f8e74b6f39a2cfc51b91bf1a501736a138104242d6cd5638acba1ffc16c6"},
+    {file = "pyobjc_framework_AVKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:196b6d47780fc3f5173c49cbd83c48b755d921f30874da52b19c8c2bea6ca032"},
+]
+pyobjc-framework-businesschat = [
+    {file = "pyobjc-framework-BusinessChat-8.5.tar.gz", hash = "sha256:3990664262bd29701e2092b98999b6098145cab2a6491ccbde96dd09e900ba0d"},
+    {file = "pyobjc_framework_BusinessChat-8.5-py2.py3-none-any.whl", hash = "sha256:c2be517d75370d8fe0bc00a0ef182d8c79b5628f619b0922efe03a3358256781"},
+]
+pyobjc-framework-calendarstore = [
+    {file = "pyobjc-framework-CalendarStore-8.5.tar.gz", hash = "sha256:4df02c2e99cfb8c1ed753c63c313da552dfac210ebb72a9b8cd5dd33466894b0"},
+    {file = "pyobjc_framework_CalendarStore-8.5-py2.py3-none-any.whl", hash = "sha256:efdbd64154e351e5383aaea38cd37a8ac49963baf70d51c17edb80e95c5daa9f"},
+]
+pyobjc-framework-callkit = [
+    {file = "pyobjc-framework-CallKit-8.5.tar.gz", hash = "sha256:877a9861b89fb483491d6395838c49241cd8457bc49c721a32dc2de573bec7d8"},
+    {file = "pyobjc_framework_CallKit-8.5-py2.py3-none-any.whl", hash = "sha256:f3cccdb264aac23b9241c838c09b8a4e3ec3ebc1c8d76eb2b7a18d0a21dcc23c"},
+]
+pyobjc-framework-cfnetwork = [
+    {file = "pyobjc-framework-CFNetwork-8.5.tar.gz", hash = "sha256:6c588d1846faa623b4611a1a22132c1d794330b90190b3ff1ab14fdb6d884c34"},
+    {file = "pyobjc_framework_CFNetwork-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9be7d9da59911cbef9e83a3cc7d90b6ac3de118a900427815e22a2c3486773cb"},
+    {file = "pyobjc_framework_CFNetwork-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:91ffa69b1e738c8dd641468aaf835e46b60e37307ec4c3f10234e6e196c1b75a"},
+    {file = "pyobjc_framework_CFNetwork-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7c327f7bbf53cc8971746f78b5dd3f0ab0d70c8e57dbaf591011f63db955bc6a"},
+]
+pyobjc-framework-classkit = [
+    {file = "pyobjc-framework-ClassKit-8.5.tar.gz", hash = "sha256:d65af93ab96f1c4b95c0b3379d2352a965a8f200198b440d6866beade683cde7"},
+    {file = "pyobjc_framework_ClassKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1f122870a791c0160e38b532c5cad68ffa68fe5fd5e6c9663f3732309d5d6d69"},
+    {file = "pyobjc_framework_ClassKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:97551791a2f14bd22409eab25d215919ba3e1dbd39437f6235bcb9fb168d98e3"},
+    {file = "pyobjc_framework_ClassKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:9bae42fa97ffaf5937ac205db7df0f5f935de51826a179352e6a0c793be1ce7c"},
+]
+pyobjc-framework-cloudkit = [
+    {file = "pyobjc-framework-CloudKit-8.5.tar.gz", hash = "sha256:eae6d07b7951f41d0d22658f8918022c7f88bbb022b6ccfddebc069ff66a3fe3"},
+    {file = "pyobjc_framework_CloudKit-8.5-py2.py3-none-any.whl", hash = "sha256:2beb0509ef5b3dc8f6110517939b43317d5011aeda79c134f93b9d84d76f5f43"},
+]
+pyobjc-framework-cocoa = [
+    {file = "pyobjc-framework-Cocoa-8.5.tar.gz", hash = "sha256:569bd3a020f64b536fb2d1c085b37553e50558c9f907e08b73ffc16ae68e1861"},
+    {file = "pyobjc_framework_Cocoa-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7a7c160416696bf6035dfcdf0e603aaa52858d6afcddfcc5ab41733619ac2529"},
+    {file = "pyobjc_framework_Cocoa-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6ceba444282030be8596b812260e8d28b671254a51052ad778d32da6e17db847"},
+    {file = "pyobjc_framework_Cocoa-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f46b2b161b8dd40c7b9e00bc69636c3e6480b2704a69aee22ee0154befbe163a"},
+    {file = "pyobjc_framework_Cocoa-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b31d425aee8698cbf62b187338f5ca59427fa4dca2153a73866f7cb410713119"},
+    {file = "pyobjc_framework_Cocoa-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:898359ac1f76eedec8aa156847682378a8950824421c40edb89391286e607dc4"},
+    {file = "pyobjc_framework_Cocoa-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:baa2947f76b119a3360973d74d57d6dada87ac527bab9a88f31596af392f123c"},
+]
+pyobjc-framework-collaboration = [
+    {file = "pyobjc-framework-Collaboration-8.5.tar.gz", hash = "sha256:4396edf4e6ead90c5a4dce3d932e4314fa71b0cea57478b2427b1bf06422f331"},
+    {file = "pyobjc_framework_Collaboration-8.5-py2.py3-none-any.whl", hash = "sha256:7cda382202199ae599bddeda136503e82de453f2790400caf8ec2be41962e17b"},
+]
+pyobjc-framework-colorsync = [
+    {file = "pyobjc-framework-ColorSync-8.5.tar.gz", hash = "sha256:52e1bec607ec89fd04d083be4d7d1fc244c35269409015345c4793a023d88df8"},
+    {file = "pyobjc_framework_ColorSync-8.5-py2.py3-none-any.whl", hash = "sha256:9cbf45dee34e97ad4807c303095b8e97fd601f1c442dfb18f4c84351807d3f8b"},
+]
+pyobjc-framework-contacts = [
+    {file = "pyobjc-framework-Contacts-8.5.tar.gz", hash = "sha256:2f82b3986582f7a5417579d2c3ed52aeeb5ab7f364ac527a664c762e8ca2c855"},
+    {file = "pyobjc_framework_Contacts-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7dca48bb488f2d583f029aaf08b1bdfa0d303d0dbedc63e0596eb6f763f46a14"},
+    {file = "pyobjc_framework_Contacts-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3abf52f986b38a00996d00ce5fe51630ca91f46992ffc686e00afb00e0bb5de9"},
+    {file = "pyobjc_framework_Contacts-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3c23a50bae495470db9d20b603f65ea3a802a081fb8684d91387c97c6cb8a4b1"},
+]
+pyobjc-framework-contactsui = [
+    {file = "pyobjc-framework-ContactsUI-8.5.tar.gz", hash = "sha256:72d01c265250d2cbb4e13aff46da44a1da5dbc7b45119dcc6d7a82bc384f05cd"},
+    {file = "pyobjc_framework_ContactsUI-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f2ecb7bd0334fd5dc7a76156eeacd64521135b469af903882c47c8330d9e6b9f"},
+    {file = "pyobjc_framework_ContactsUI-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0c1dd9a505d1e69ba6e3df46816cbc7d306a277f1e887ffa1f864f8da6c262bf"},
+    {file = "pyobjc_framework_ContactsUI-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:db9f58a855c632d6dec39239c7a8f1225eec210466cf6ca5905138d27d67f46e"},
+]
+pyobjc-framework-coreaudio = [
+    {file = "pyobjc-framework-CoreAudio-8.5.tar.gz", hash = "sha256:2ffe0b6ec3404e092b61ff4a54fe7aebdac2f4c470b215e32596823a361910f3"},
+    {file = "pyobjc_framework_CoreAudio-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a12c78757fc3a8cb32cd2a860842f5de9fe8f0bb8ae48cf0bfe1dcfe5dfaa7b5"},
+    {file = "pyobjc_framework_CoreAudio-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4eb529d8ba514361cd0d0eac154fff97532e909198d9c4ba3619eb10b866395f"},
+    {file = "pyobjc_framework_CoreAudio-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f9ad39d2c42dcf80ae054263b385a5e5a4f1684340d2f20b60f37ea7afb583d9"},
+    {file = "pyobjc_framework_CoreAudio-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fb4c1be35fd7098b64a28b07d2b9e2919f0e39ba7139aa378ca7f5eb63f0290f"},
+    {file = "pyobjc_framework_CoreAudio-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:be5ab23abeb3d8bfe3f79b65209aeff6fdeaf8d4ddc9634803584bb3e2257c10"},
+    {file = "pyobjc_framework_CoreAudio-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a8c2f8be2fff6dad1c880354124345562a4ac91302f98afa32fc68bd9824467f"},
+]
+pyobjc-framework-coreaudiokit = [
+    {file = "pyobjc-framework-CoreAudioKit-8.5.tar.gz", hash = "sha256:4134ae64aaa3bf40df4a65e0f3ce0499a540aee457722f9ff135b1c083f5a2d6"},
+    {file = "pyobjc_framework_CoreAudioKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a254c73b13b39fe62b7306784b2ced372a1b7ff84625dcdaaef36f20f6982cbb"},
+    {file = "pyobjc_framework_CoreAudioKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c99af3ab27ad50fa07a92b3b8fc70bf4fcf083388ad874f33c5c7291714065ad"},
+    {file = "pyobjc_framework_CoreAudioKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:734b64f046c6c272c489d004e887583208a5ad5f5e0e200b778affc87a118c5d"},
+]
+pyobjc-framework-corebluetooth = [
+    {file = "pyobjc-framework-CoreBluetooth-8.5.tar.gz", hash = "sha256:d83928083b0fc1aa9f653b3bbc4c22558559adbd82689aa461f4ccb295669dd2"},
+    {file = "pyobjc_framework_CoreBluetooth-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:19b42a2020ee36e2b0e9b8ae64fb130084a609612fcdedafea7cb53234d3cb63"},
+    {file = "pyobjc_framework_CoreBluetooth-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ef319beb88d8e75af61eb8f0fef01c6fe186d9a271718bcfaafc68c599af8c37"},
+    {file = "pyobjc_framework_CoreBluetooth-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:57ae20e1dc54b8f0805cda8681a5293b11a499d053df5bdae459d4ca8c67756c"},
+]
+pyobjc-framework-coredata = [
+    {file = "pyobjc-framework-CoreData-8.5.tar.gz", hash = "sha256:a4f0c3fdb69112a337f8262cdf65f6813b343cec88fd459a532f472f2fc20ae4"},
+    {file = "pyobjc_framework_CoreData-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b2d82637e976077c82833d2a7fae50f55d7837c8d47420bb09701db72e741c8a"},
+    {file = "pyobjc_framework_CoreData-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8bdee5e451391e81ef906de6da660648e31396766d550f140d5732580835b913"},
+    {file = "pyobjc_framework_CoreData-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:9109b516eb07da375f3fccbcb8a12f344d39e0df12c46e5ac783febac03fcdcc"},
+]
+pyobjc-framework-corehaptics = [
+    {file = "pyobjc-framework-CoreHaptics-8.5.tar.gz", hash = "sha256:688ffcae3e6a781247bb72942cdaf2665f235f792f1fb9ca9fce035ec42aa2a7"},
+    {file = "pyobjc_framework_CoreHaptics-8.5-py2.py3-none-any.whl", hash = "sha256:3b13b00d5d518a7cac3a24aaec1f2eb07b67d9658a5e4afc74d23658fba3b856"},
+]
+pyobjc-framework-corelocation = [
+    {file = "pyobjc-framework-CoreLocation-8.5.tar.gz", hash = "sha256:f748573675afddf43440f3768d890d691efbd3e76d04596f412dbe2bc9a40267"},
+    {file = "pyobjc_framework_CoreLocation-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:11abb231ff4e75d7b35b84e70d81c31e8136d05170e19391e5f0a22597fb0b9a"},
+    {file = "pyobjc_framework_CoreLocation-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3e4661a8bf2a698147eb59fb37425b57d7cc375a67272a0523251b0f823fb6c0"},
+    {file = "pyobjc_framework_CoreLocation-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f2dc153448f8251586c28660403d405ce68ddcaf11ed1c076e87af7257294fb2"},
+]
+pyobjc-framework-coremedia = [
+    {file = "pyobjc-framework-CoreMedia-8.5.tar.gz", hash = "sha256:6802b8ea7d86844470a95b2ac1394c2a0b5d20848d9d027583927a1211bbf3db"},
+    {file = "pyobjc_framework_CoreMedia-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d43ee60d304446706c559d204f6a54e2481f510e0980f69abcc3f8603039ffa0"},
+    {file = "pyobjc_framework_CoreMedia-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:398271aaa58316f345b8347eaadcfb6631bddac842689e8a42e39473164a1758"},
+    {file = "pyobjc_framework_CoreMedia-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f964b764cbbfe0041d58f1b20f5f1fa87d63d8fe90784f915149b958e2bcc668"},
+    {file = "pyobjc_framework_CoreMedia-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d47f09089845ae7808002860e2bc904a1e5a5156c7bf3265f55843b9cde24fe"},
+    {file = "pyobjc_framework_CoreMedia-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7fe3ff3a26f2239a97f5a4a386a8ea76fd514f2cdc34ac6a587c4949d24467fc"},
+    {file = "pyobjc_framework_CoreMedia-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c2e58af0409ca4d0366672725b98eb2b4ce518b26d7cf9e4161d6242beb528e1"},
+]
+pyobjc-framework-coremediaio = [
+    {file = "pyobjc-framework-CoreMediaIO-8.5.tar.gz", hash = "sha256:0f6c5c0c5fb8b2e2875a465eda127949574f46989df05a1a099019c9aac0a126"},
+    {file = "pyobjc_framework_CoreMediaIO-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f3203ccb2f73dd896de65f206ec72ec672786ba5fa4798906398582f5c253978"},
+    {file = "pyobjc_framework_CoreMediaIO-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:23fb28ac9f08fd4c0a0bc66803d097c08194dae9ac41d22f839d33909fa6cbbb"},
+    {file = "pyobjc_framework_CoreMediaIO-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0400292a55f184aef9ba642dd7aa9944cc2e386a534c0bc360e9922a96a181c1"},
+]
+pyobjc-framework-coremidi = [
+    {file = "pyobjc-framework-CoreMIDI-8.5.tar.gz", hash = "sha256:c82821e753f62c2301b64c5b9efa9e5c5177b33f2560c2f39b52638d7e39a5ae"},
+    {file = "pyobjc_framework_CoreMIDI-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6ee8dc3c4c2a077f05906723a8fc4e276f9cb6a20855054dd82c78ceb884a235"},
+    {file = "pyobjc_framework_CoreMIDI-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fb43a9fc71a32796991e6cf05c9e244a01bd427471a0a9a3334aa67c28a0108a"},
+    {file = "pyobjc_framework_CoreMIDI-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4ac939d3596092b98dc7f351f75fb4f912c02c45242e0f2a597f406ae08d3f86"},
+]
+pyobjc-framework-coreml = [
+    {file = "pyobjc-framework-CoreML-8.5.tar.gz", hash = "sha256:9da426d5df78cc232a4ed5d8e5d2b36d2dfd8d5c3cc1cdd92159afa4901f4136"},
+    {file = "pyobjc_framework_CoreML-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:767281cda745ed464b67b6672d390a8654f3aeab90ec85188be4d82b00ef5fbe"},
+    {file = "pyobjc_framework_CoreML-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d7c3df1688f3eb123b97020ca83978b3cc8623db5010cb2bae3fa858d819a261"},
+    {file = "pyobjc_framework_CoreML-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d7de7f6a1a67179f250070cb5c91c1a0e707f5f5f692a16be72e4c2b929abdde"},
+]
+pyobjc-framework-coremotion = [
+    {file = "pyobjc-framework-CoreMotion-8.5.tar.gz", hash = "sha256:f9755faf401bcf9c5493a3a583a4203313ba91115895da025b634337d4dbe0d4"},
+    {file = "pyobjc_framework_CoreMotion-8.5-py2.py3-none-any.whl", hash = "sha256:d3c24dbf01309b69ac75e24f7368e8a52a5d8d84beaa064c459ae88b4575ba55"},
+]
+pyobjc-framework-coreservices = [
+    {file = "pyobjc-framework-CoreServices-8.5.tar.gz", hash = "sha256:58bad844c8e5ee82852d860b117d1238c3ed2db8dd57f754feb6bd5801fe878d"},
+    {file = "pyobjc_framework_CoreServices-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:00d5956a6c0570c446f3494301ca607b7b403d1a4023807a63963bac3b8b1221"},
+    {file = "pyobjc_framework_CoreServices-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f39791561ed4a6979c11aa2be15a38305c35842a211262ded6b5b3d9a763617b"},
+    {file = "pyobjc_framework_CoreServices-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a3b403435e206c8adcdf87ee5bc10db84e1d7b7e7428611e6ecd131aa208d23f"},
+]
+pyobjc-framework-corespotlight = [
+    {file = "pyobjc-framework-CoreSpotlight-8.5.tar.gz", hash = "sha256:ab90c64c38d8c3c6945c6db4ffd93333854a992fcca4ac5d9ece98ad575a9254"},
+    {file = "pyobjc_framework_CoreSpotlight-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:18884b99872fb081e79b55a20c82c98182b9917ed915d05c9c57d23c8442bc90"},
+    {file = "pyobjc_framework_CoreSpotlight-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6060b6252c95207c695a59e3d938d8102834cc23856ee9ab82ebaa6531997408"},
+    {file = "pyobjc_framework_CoreSpotlight-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:35a775bbfa5d056b9333c4e60eb80d447c135321e8187a6583f30de52385b022"},
+]
+pyobjc-framework-coretext = [
+    {file = "pyobjc-framework-CoreText-8.5.tar.gz", hash = "sha256:541b662897cb97ac770a0467bf50707030f8b31f70e3ba5a957fff5d4e916f78"},
+    {file = "pyobjc_framework_CoreText-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f0f9da01ec94cc54a03db517bdf8060ef8d78e1c53072e714a39733d5b964929"},
+    {file = "pyobjc_framework_CoreText-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:30386a4081351eef9801a82cd0641e47f7cff16a6499d4a5d283481f81415a03"},
+    {file = "pyobjc_framework_CoreText-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e75d3f2334642924d0b58c02640dfb07528f948caedc469fd423e82a0d1775d1"},
+    {file = "pyobjc_framework_CoreText-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4b53be529c8abeb3bff648b146d23ccb67e19bb31f9c6da11de88f74ed745fdd"},
+    {file = "pyobjc_framework_CoreText-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:590cd503c64fbda0bffec4e6571df1f46a3e3e672d9dcdef1e89bed490c72b4e"},
+    {file = "pyobjc_framework_CoreText-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f0805a07617ce015d1f519a3994d8ab84e8ece1a388805c68b074117726cccd"},
+]
+pyobjc-framework-corewlan = [
+    {file = "pyobjc-framework-CoreWLAN-8.5.tar.gz", hash = "sha256:c2713d772ac0d0b0f1c5b596057b4fb4da90c2aadd2d2515153ebd618cbec42d"},
+    {file = "pyobjc_framework_CoreWLAN-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:513315f2358cda41e28f578cf6156f73b0a63da065b9cb26a52f03a22e5f2d7a"},
+    {file = "pyobjc_framework_CoreWLAN-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1d652a485bd94ffa4d42f9a7caff6de74b5ecd55f145851cd64688db41ff5e9d"},
+    {file = "pyobjc_framework_CoreWLAN-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c63222ae48a250fde8cd5f228ec3bb964440b10f528d8191c165109a524aed4a"},
+]
+pyobjc-framework-cryptotokenkit = [
+    {file = "pyobjc-framework-CryptoTokenKit-8.5.tar.gz", hash = "sha256:9d25d49eb5b8fd6e1992a2323426fa8a8cd432c801f789e1f1dd53b3721cc1b8"},
+    {file = "pyobjc_framework_CryptoTokenKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2cb022aca72fb169944746e8c9a2a4a59f2a5f9286899ef6da9558606943871a"},
+    {file = "pyobjc_framework_CryptoTokenKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:79ed3d155b70f989fde01180137ff2a312e19e8102f31de1ad6474eb6eb5b13c"},
+    {file = "pyobjc_framework_CryptoTokenKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8427521d23e0a792afdf26804a4e7954be03779fd412350e1066d0fac5e8e185"},
+]
+pyobjc-framework-datadetection = [
+    {file = "pyobjc-framework-DataDetection-8.5.tar.gz", hash = "sha256:95e36e024371880134795567b20cbde9a81b26797b6dc2fbecde431d0b7207e4"},
+    {file = "pyobjc_framework_DataDetection-8.5-py2.py3-none-any.whl", hash = "sha256:784cb6c68f9870d51c0f6220da811c4e4308c4523eab0ac7d5a9c2ea2c928117"},
+]
+pyobjc-framework-devicecheck = [
+    {file = "pyobjc-framework-DeviceCheck-8.5.tar.gz", hash = "sha256:41d0fa81166b197b8d8e9b08b61bc88248cf314609fcaab20d1917b96a4da3a5"},
+    {file = "pyobjc_framework_DeviceCheck-8.5-py2.py3-none-any.whl", hash = "sha256:518b052263fa43f183be4f293ba9f8b29d64f6113af3ca2625c4c18a428eaca4"},
+]
+pyobjc-framework-dictionaryservices = [
+    {file = "pyobjc-framework-DictionaryServices-8.5.tar.gz", hash = "sha256:34f198c76ec7d9190327368ec5eafd82157483204190e6d47d73ae3c94e6ef16"},
+    {file = "pyobjc_framework_DictionaryServices-8.5-py2.py3-none-any.whl", hash = "sha256:1df49a178970711a2b5fa7c4a4bf7bccd806c21c855ef6da41a1b303a80fde29"},
+]
+pyobjc-framework-discrecording = [
+    {file = "pyobjc-framework-DiscRecording-8.5.tar.gz", hash = "sha256:dc3f3fa26d482a5a470e4f09fe909647f5125df241a27ed8eb5c6a71c534a01e"},
+    {file = "pyobjc_framework_DiscRecording-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3f9d920726f85af5e3e33c71efd8c39e64e41e71824e2e1304a0eed8aa795a6a"},
+    {file = "pyobjc_framework_DiscRecording-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e4b92532ecc180cc9ed382da6fe7c6ef8ac9621b08b52c20c75bbc62fd57326c"},
+    {file = "pyobjc_framework_DiscRecording-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8c5551a56021d0c46d9f9db76242f05186a9d10ed326dedb5eedc7444361f5e5"},
+]
+pyobjc-framework-discrecordingui = [
+    {file = "pyobjc-framework-DiscRecordingUI-8.5.tar.gz", hash = "sha256:648dad2082e4dc6965fd6ac70a20bc3e3a1efb3da4548aa29381cc6722cfa266"},
+    {file = "pyobjc_framework_DiscRecordingUI-8.5-py2.py3-none-any.whl", hash = "sha256:821d6b7413ad4ba7770700c1dc7f6788b68bbc588619578798bbfe780a6b3a07"},
+]
+pyobjc-framework-diskarbitration = [
+    {file = "pyobjc-framework-DiskArbitration-8.5.tar.gz", hash = "sha256:c59d8c00fa83bfe087d91ea63cebd6ffe45cc32a39601dd5174c6448555cf578"},
+    {file = "pyobjc_framework_DiskArbitration-8.5-py2.py3-none-any.whl", hash = "sha256:506ac6b88be5f828d6c2d5d4f49a093eead8151384433b97834d066c3b4be0a1"},
+]
+pyobjc-framework-dvdplayback = [
+    {file = "pyobjc-framework-DVDPlayback-8.5.tar.gz", hash = "sha256:315e19387456916ab0dcb6fcac43697e7eee86403ae5a1b508ae1e7a92cb463f"},
+    {file = "pyobjc_framework_DVDPlayback-8.5-py2.py3-none-any.whl", hash = "sha256:7708ae636614f059a0c36f43e61727593bc31c119d4aaf0782603e38269b2e10"},
+]
+pyobjc-framework-eventkit = [
+    {file = "pyobjc-framework-EventKit-8.5.tar.gz", hash = "sha256:a095cb800a1d4284e92025c359295f945e20f569aa08a5812f1008ed3a5d4a37"},
+    {file = "pyobjc_framework_EventKit-8.5-py2.py3-none-any.whl", hash = "sha256:6c77880ec39c47a8c016735f60d830324df65ddcbbd63cb106fed82f4fed0522"},
+]
+pyobjc-framework-exceptionhandling = [
+    {file = "pyobjc-framework-ExceptionHandling-8.5.tar.gz", hash = "sha256:cfac42ba49655c654580aff87ac16f7bcdc44ee330a77acc177b0ebfd414facb"},
+    {file = "pyobjc_framework_ExceptionHandling-8.5-py2.py3-none-any.whl", hash = "sha256:c2014ccd1c78c4b4a8aeae7ba62cb86d1c9d46f523b1e8efd1d47bb4da99cc2d"},
+]
+pyobjc-framework-executionpolicy = [
+    {file = "pyobjc-framework-ExecutionPolicy-8.5.tar.gz", hash = "sha256:21faa2c76bbb27db4f80a12bf76ca425b5a44a16ff0530cd6a1730c668e870ee"},
+    {file = "pyobjc_framework_ExecutionPolicy-8.5-py2.py3-none-any.whl", hash = "sha256:bf1a1f43d25ef4ab85f1abcdc60d3197a8c8fa15f1a7b38240c4666d4f74cd9f"},
+]
+pyobjc-framework-externalaccessory = [
+    {file = "pyobjc-framework-ExternalAccessory-8.5.tar.gz", hash = "sha256:37e8d782fedcedf062140d1c3df6b5e145e1bbe692f3c8db6bc7d736bc6f2c17"},
+    {file = "pyobjc_framework_ExternalAccessory-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cd9fbc2762fab7d92ea3a41787dba3c2ac1326912db45dab63a681aeffa160ba"},
+    {file = "pyobjc_framework_ExternalAccessory-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:173024f500fa7280b7fa4737277de75c3bb70efc6c012e3eec4045d3ed60ef7d"},
+    {file = "pyobjc_framework_ExternalAccessory-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b87c2fd9cf6780579bc346845794d82dafbe297c8ee5e43893425538268d6f30"},
+]
+pyobjc-framework-fileprovider = [
+    {file = "pyobjc-framework-FileProvider-8.5.tar.gz", hash = "sha256:9500dc18f6091f4127d882ba71d9e2c174d3051acc1b070b6547810189a0bfd1"},
+    {file = "pyobjc_framework_FileProvider-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2bf12e0ee8e9a0a2accc39b27ed6d201a66209e5019b085b0f5763a9eef3d30c"},
+    {file = "pyobjc_framework_FileProvider-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5fdaab6b2d92a8e5191ac530a61b17715f19c299c02bb84c57f26c4e9504f435"},
+    {file = "pyobjc_framework_FileProvider-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:536bc2dc568ce4a883b84f3aa6b09959c0dff7c9ec091f360cba09f7b0e7fb87"},
+    {file = "pyobjc_framework_FileProvider-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ff1f3cf757e2fd4eefe16ea388b5d4488543e6491ad7598641c372832ea83df7"},
+    {file = "pyobjc_framework_FileProvider-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d3f518cb26f16fe3a8b31f91b2bc32a02f21a45483bab501e9e115501324948d"},
+    {file = "pyobjc_framework_FileProvider-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:153f1957b6b58973d70a8bc2a2c9c8a202b5497c22b011a2a36fd775ad01bda8"},
+]
+pyobjc-framework-fileproviderui = [
+    {file = "pyobjc-framework-FileProviderUI-8.5.tar.gz", hash = "sha256:a17a1392fe54cd2fe100f70cb5656b10e1c1aba3b698d20e16515c0661228373"},
+    {file = "pyobjc_framework_FileProviderUI-8.5-py2.py3-none-any.whl", hash = "sha256:f650a75374e2795800ca0b8efb5e5d0a78ac3cacaadf46c86af5d85aafdd66b0"},
+]
+pyobjc-framework-findersync = [
+    {file = "pyobjc-framework-FinderSync-8.5.tar.gz", hash = "sha256:c5ecad2081b78579965c564bef9d5a6e97d2c5dcc3d47109e94876ebed4b41d4"},
+    {file = "pyobjc_framework_FinderSync-8.5-py2.py3-none-any.whl", hash = "sha256:4b707078362dc9441a8058d8a472f54d2caba344c258408bbf937c1bedbd86de"},
+]
+pyobjc-framework-fsevents = [
+    {file = "pyobjc-framework-FSEvents-8.5.tar.gz", hash = "sha256:21928fd0d17ad69f45d41f89228b7446d8faf0d1bba0d71e8e23451196701004"},
+    {file = "pyobjc_framework_FSEvents-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:46e435b2047b9376115464e53f495298918adf8382253bef836bc9d193b349bf"},
+    {file = "pyobjc_framework_FSEvents-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6fee5528522664b7386e82cfcaf74d2462d2652ace9b1169b41dda9908b652b9"},
+    {file = "pyobjc_framework_FSEvents-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d1c07712898b58487265484c62f18e4480b31d70192364574a485fecf8722ffa"},
+]
+pyobjc-framework-gamecenter = [
+    {file = "pyobjc-framework-GameCenter-8.5.tar.gz", hash = "sha256:fd357cb824468ac0bc484cfa4110551378788cf411f24a8f942a9d33c8ba74f4"},
+    {file = "pyobjc_framework_GameCenter-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3125b6a61a4338c9b291548c228e6e96a8848020dce97d6e1d6741c70a1bd2d3"},
+    {file = "pyobjc_framework_GameCenter-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c07dbb72900f0c4b6fc203567b044fcbf4579718ff2b90f81a906a719caab396"},
+    {file = "pyobjc_framework_GameCenter-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a25f1c0ca7c61d77abc87a86d4f611d39d4fe9aa89acb779b7c98163d8c781cc"},
+]
+pyobjc-framework-gamecontroller = [
+    {file = "pyobjc-framework-GameController-8.5.tar.gz", hash = "sha256:e89839baee98556d05d2f09b53a1e8e25ce46f891c2541a4db430c742c67da5f"},
+    {file = "pyobjc_framework_GameController-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:afc8505c0c5c6433706ae669586b483b67466417a6df9151338f44e782b0257e"},
+    {file = "pyobjc_framework_GameController-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b3fb797205c4718dc5c9a26564d438575a8daccc32cf0df633eaf1eb0470c8a6"},
+    {file = "pyobjc_framework_GameController-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1778cdda0409d72f9ef3f4c2d573890825e98ea95bff33c63f78567a9ceec5df"},
+]
+pyobjc-framework-gamekit = [
+    {file = "pyobjc-framework-GameKit-8.5.tar.gz", hash = "sha256:612284664ff2234f2d36fa8d928a65160a7dd40c90c5044e6155db652926fae2"},
+    {file = "pyobjc_framework_GameKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9f96cfa5c25fb956f54af686282e2e70ad106461bede400e59b379eca57b7211"},
+    {file = "pyobjc_framework_GameKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a91d632f09751f6d05c96040fcd79685f1d31f4b4f7d8a4fce5af682bf827e18"},
+    {file = "pyobjc_framework_GameKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f97085d5b5f98f4237074dd431042aa3c90c2b72ebea420b1f83abc55024a6d6"},
+]
+pyobjc-framework-gameplaykit = [
+    {file = "pyobjc-framework-GameplayKit-8.5.tar.gz", hash = "sha256:18872cb334e070b2c843f17d8fc5351c1957042cfdc653d73f4bd0dd33ca83b0"},
+    {file = "pyobjc_framework_GameplayKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:53e505ce650c383908b450ee2975f2869dd130f4eddf6b3f3adf828031f6e838"},
+    {file = "pyobjc_framework_GameplayKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:48c6bb1463845e2205257a0dd45af47b9e212c74aaca035b6e8c382fd04aebbc"},
+    {file = "pyobjc_framework_GameplayKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:40294c5e32f719c6216e30fb7fa1314fcf4486434c8f07a46cedc388b9554a45"},
+]
+pyobjc-framework-imagecapturecore = [
+    {file = "pyobjc-framework-ImageCaptureCore-8.5.tar.gz", hash = "sha256:b7bd515affee27737d0292bc6aab49c0248077454dbcf01beda8e3f231791d38"},
+    {file = "pyobjc_framework_ImageCaptureCore-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3b47f5441f164c69e1ae7669526f0c61f5a1c1c268bb41026bd56374375f6ac1"},
+    {file = "pyobjc_framework_ImageCaptureCore-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0393dd36340b2c8d177d7daa8e6c817d46ec7d418e6e5d858ee8ec928d9fc195"},
+    {file = "pyobjc_framework_ImageCaptureCore-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:399bd0bdcb9764cd7f1407599fe30eaff23682b08b34a24e240cfb483199011d"},
+]
+pyobjc-framework-imserviceplugin = [
+    {file = "pyobjc-framework-IMServicePlugIn-8.5.tar.gz", hash = "sha256:29c90421d0a649631441864757edfc8081f1581b9714ecb283a65372f11abe45"},
+    {file = "pyobjc_framework_IMServicePlugIn-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e460648db321ed08eb3ef87a5d7a8bac54be4e05199fe31436baf40becb2e8cc"},
+    {file = "pyobjc_framework_IMServicePlugIn-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7a96226a5d0c5cbd4af1dc69ac84344c21bc9327b22e71155016790d18c64975"},
+    {file = "pyobjc_framework_IMServicePlugIn-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:65d9abca38742453f5219bdd6c584b151e3c9dc2504cfb8192b94362a02f4f37"},
+]
+pyobjc-framework-inputmethodkit = [
+    {file = "pyobjc-framework-InputMethodKit-8.5.tar.gz", hash = "sha256:dfe85508af982fca673803404fec623c4aa0bc3a77488cf29b9bc83d31a36ed1"},
+    {file = "pyobjc_framework_InputMethodKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9fde77ad8bc8601fc3982f453a0c3b4ff21ffcefa29333cdef3fc6b5b0aca12f"},
+    {file = "pyobjc_framework_InputMethodKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c32bb371905c610034fd737c82011dcdb76de62c15dbbdd67de751e1991ac98"},
+    {file = "pyobjc_framework_InputMethodKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:eb6c706b26f27a034e3917245ca431178cb4fcc0acbd2b0d80e4a4bf35163212"},
+]
+pyobjc-framework-installerplugins = [
+    {file = "pyobjc-framework-InstallerPlugins-8.5.tar.gz", hash = "sha256:b602a3e5f78650b9671f5f051c0d5e45544a25a353bf88284a3b1c69ad2cdd22"},
+    {file = "pyobjc_framework_InstallerPlugins-8.5-py2.py3-none-any.whl", hash = "sha256:b2de297cb2e07e971ec068fad1f4d492a42e2a0d0e42a52681fbce231c3f3930"},
+]
+pyobjc-framework-instantmessage = [
+    {file = "pyobjc-framework-InstantMessage-8.5.tar.gz", hash = "sha256:a94690f9430d6543efba58ee538d029da3a2887ef9cd7cc89c03d6b59925ef1c"},
+    {file = "pyobjc_framework_InstantMessage-8.5-py2.py3-none-any.whl", hash = "sha256:4f4c1f49a63ff223e856a8ac89eb884e10920d202df82674d8e13679300f75d0"},
+]
+pyobjc-framework-intents = [
+    {file = "pyobjc-framework-Intents-8.5.tar.gz", hash = "sha256:da7eb47977de518a129ce6457e826b0884efe809bb15ff6a9c4f5e77fe6d2313"},
+    {file = "pyobjc_framework_Intents-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b098842bb1d69b000e9d85f202fdefc0b97936d3c6f845dc529e29728be3098d"},
+    {file = "pyobjc_framework_Intents-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cb32e822754b24495769347176342433ede59621596c2c4561700ca26df34074"},
+    {file = "pyobjc_framework_Intents-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:70f5f80005c308e4a5b369dadf17f5b2b774bc4fd60a0e4ce5ed1d4c9d0ea014"},
+]
+pyobjc-framework-intentsui = [
+    {file = "pyobjc-framework-IntentsUI-8.5.tar.gz", hash = "sha256:402ab099d20979d1b739dcc29a88e5c07c1fcfcbdc5706eb8f6958f8b2e0f653"},
+    {file = "pyobjc_framework_IntentsUI-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7dc3d2572a2b686b45d9899236eccec4c1ee767be020e8cf0401f7c6fa3a92a1"},
+    {file = "pyobjc_framework_IntentsUI-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:eef8b26d69a4f7021ce18524f0123a06351c6854ff6bb757aa16d0a6d4281b68"},
+    {file = "pyobjc_framework_IntentsUI-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:793c6769ad171d848d38f0d0c6008792e3139e3f2490edde2152d619bad75dba"},
+    {file = "pyobjc_framework_IntentsUI-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ffda0d45bbe11e8cec78512b021e3650a8a2db344cabb5636088c6b759e43d1b"},
+    {file = "pyobjc_framework_IntentsUI-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:f0c2b1c7a586d029c58dd029e19b5c43fe5e8224f84ccdf685912a721e67e388"},
+    {file = "pyobjc_framework_IntentsUI-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d4f2bd05a96c3ab4ea1f22ba0b84f54bf87bd30d45a14eed08f7c646a0ef0602"},
+]
+pyobjc-framework-iosurface = [
+    {file = "pyobjc-framework-IOSurface-8.5.tar.gz", hash = "sha256:518ea60ebbcd0c2ea88748b88a0905466a2b2cabaebfc716996fbdc281187458"},
+    {file = "pyobjc_framework_IOSurface-8.5-py2.py3-none-any.whl", hash = "sha256:f5809d25b4bc97c03ab694e83151d1fdab5efe2e871f3833a9112fc060c75496"},
+]
+pyobjc-framework-ituneslibrary = [
+    {file = "pyobjc-framework-iTunesLibrary-8.5.tar.gz", hash = "sha256:1379ad8633128ea67ec227ab1ea48700275358ed0600827bf74d22cfdc67ce05"},
+    {file = "pyobjc_framework_iTunesLibrary-8.5-py2.py3-none-any.whl", hash = "sha256:972d814cca7821c5b00008065e3184fee92bf75a22115b4929d0af152012d20a"},
+]
+pyobjc-framework-kernelmanagement = [
+    {file = "pyobjc-framework-KernelManagement-8.5.tar.gz", hash = "sha256:be7695f0f24937f557b5354f43f55dc25812dd7eda22603d77eccd6f48070aa9"},
+    {file = "pyobjc_framework_KernelManagement-8.5-py2.py3-none-any.whl", hash = "sha256:bc4d2109c0c9faebc26246e8c90a63e647cea790c08431ca28a5d4cf0524a23b"},
+]
+pyobjc-framework-latentsemanticmapping = [
+    {file = "pyobjc-framework-LatentSemanticMapping-8.5.tar.gz", hash = "sha256:fdc25797fa6d6adb7fa71c394117b5050820239ca3a7b82efe4a6a6e529c490b"},
+    {file = "pyobjc_framework_LatentSemanticMapping-8.5-py2.py3-none-any.whl", hash = "sha256:3eb2cd0758b61f68cfe58f7ec05acc020c0a633735c0b604a8701929d20f6189"},
+]
+pyobjc-framework-launchservices = [
+    {file = "pyobjc-framework-LaunchServices-8.5.tar.gz", hash = "sha256:0c999612bcc961361baf93ae3fe13e69a673bfecbf526e921e53f2e04005cd43"},
+    {file = "pyobjc_framework_LaunchServices-8.5-py2.py3-none-any.whl", hash = "sha256:f8d0c8577db3f4a7223a4c18e6453d3431d97c3041462a234492a08da1cde010"},
+]
+pyobjc-framework-libdispatch = [
+    {file = "pyobjc-framework-libdispatch-8.5.tar.gz", hash = "sha256:f610a0e57e9bb31878776db0a1c1cfd279f4e43e26e3195c6647786b4522b1c4"},
+    {file = "pyobjc_framework_libdispatch-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:63808d104951f7f721be6ad3de194f23c8e2f7a93c771e07961c63d70f2628c3"},
+    {file = "pyobjc_framework_libdispatch-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8c67972b6e068ce168611852742cbabe59cbb4a33d3750a351171a7c062771f9"},
+    {file = "pyobjc_framework_libdispatch-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a1cc3bb6014c28a4223ad9f2257057f7d2861087c87c81c9649813fc7ec43a6"},
+    {file = "pyobjc_framework_libdispatch-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c22da1d79a5b0b22e3f040f40c63c51cd46e275a82f143cf2630f772ffc1a4ef"},
+    {file = "pyobjc_framework_libdispatch-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:05d20953557924f4280a6186600600cf5ea4391f5612b43155b3b2a7dfda6b61"},
+    {file = "pyobjc_framework_libdispatch-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fa9d4b446dc62c15fd04c65decbb36530bf866231f2630262a6435e11d53bf77"},
+]
+pyobjc-framework-linkpresentation = [
+    {file = "pyobjc-framework-LinkPresentation-8.5.tar.gz", hash = "sha256:91ea12e3a48abd53e34ca18484abc1c329f75a9e3ec27d6af07aeec37d1e646a"},
+    {file = "pyobjc_framework_LinkPresentation-8.5-py2.py3-none-any.whl", hash = "sha256:7334ffdfb7b033e4684f7cac6fac460a6f26229bfad690ed23144546265ee866"},
+]
+pyobjc-framework-localauthentication = [
+    {file = "pyobjc-framework-LocalAuthentication-8.5.tar.gz", hash = "sha256:c66ab1292e8d94ad91f863586116719116b34e872b83cda0989b31a1eb31d3d7"},
+    {file = "pyobjc_framework_LocalAuthentication-8.5-py2.py3-none-any.whl", hash = "sha256:ed996158246336b02e291f3bc797fded94a0d7c3ba4347fa2246d3b0dd08140a"},
+]
+pyobjc-framework-localauthenticationembeddedui = [
+    {file = "pyobjc-framework-LocalAuthenticationEmbeddedUI-8.5.tar.gz", hash = "sha256:6976d5d56079073d61d7d7e55c55d16a44486ecdf9f456f6b366010041fbbc82"},
+    {file = "pyobjc_framework_LocalAuthenticationEmbeddedUI-8.5-py2.py3-none-any.whl", hash = "sha256:168ea2e0c0871393734459169f289103c608d137140e7a24637745d47aca6b73"},
+]
+pyobjc-framework-mailkit = [
+    {file = "pyobjc-framework-MailKit-8.5.tar.gz", hash = "sha256:c441d4a1f408320ea4cd06603801a99a59d24c27429d660044fbefad05bef2cd"},
+    {file = "pyobjc_framework_MailKit-8.5-py2.py3-none-any.whl", hash = "sha256:2fb79f64cf54672ba8a3aadc80cc1c25285a7bb263e3f4b57e8b7b7cd7c01f43"},
+]
+pyobjc-framework-mapkit = [
+    {file = "pyobjc-framework-MapKit-8.5.tar.gz", hash = "sha256:fb9060ad279dd9253caaf1c8e31940678799f5b8ee6d74bc5de6507715e3f4c9"},
+    {file = "pyobjc_framework_MapKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2a364a137a14ebd033cfc76aa33fec7fb2513191ecdf5091aec90526bc37d30a"},
+    {file = "pyobjc_framework_MapKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:67aed69f9ac244fea75711478bbc3020b03f8fe2dd67058af73362e9877acc96"},
+    {file = "pyobjc_framework_MapKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c75e18d3f416bea99af94c940f26022bef7acd0bc7bd8f5fd996a00cb47b4c18"},
+]
+pyobjc-framework-mediaaccessibility = [
+    {file = "pyobjc-framework-MediaAccessibility-8.5.tar.gz", hash = "sha256:530329872e22402fec8928b5f2437b17ed4cfb928ad96e0952d9782fa35da006"},
+    {file = "pyobjc_framework_MediaAccessibility-8.5-py2.py3-none-any.whl", hash = "sha256:c558e8d891e53bbd0f5a7c84a10fe3a4399937562c1b74fbddb8052301b9c1ec"},
+]
+pyobjc-framework-medialibrary = [
+    {file = "pyobjc-framework-MediaLibrary-8.5.tar.gz", hash = "sha256:dc22671c57e1e956977b4656905562cbe87ea32132159637009c73b221c3f1c3"},
+    {file = "pyobjc_framework_MediaLibrary-8.5-py2.py3-none-any.whl", hash = "sha256:90e9db486c23f2346eb6a7f2fc0abb1e1cfa0a172d93373070413b685ee592e5"},
+]
+pyobjc-framework-mediaplayer = [
+    {file = "pyobjc-framework-MediaPlayer-8.5.tar.gz", hash = "sha256:e5f84fab34694a830fd818aa0a658afd2801ae385e0b2eb510c38ce064d55b19"},
+    {file = "pyobjc_framework_MediaPlayer-8.5-py2.py3-none-any.whl", hash = "sha256:45495c6c32adb94c6c672726837e14ba507a6b8455b76eabf170faa921edc136"},
+]
+pyobjc-framework-mediatoolbox = [
+    {file = "pyobjc-framework-MediaToolbox-8.5.tar.gz", hash = "sha256:46d777892de00abc492adcbbb59752780f838ecde3ec168de618a95db50eaa0f"},
+    {file = "pyobjc_framework_MediaToolbox-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d7cbb3338dc8c32d5a06685c6d11e36a0574786312daac98a4b746649b1a6101"},
+    {file = "pyobjc_framework_MediaToolbox-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:21a6561e6859e0752a0baa99cd3cfe9f2a3c1c80a9fa39c19b40a21b8d9f21a2"},
+    {file = "pyobjc_framework_MediaToolbox-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8b851d122c235dec90bb630e288625933f6f10e8e83974bc6121c4ddff2cc61c"},
+]
+pyobjc-framework-message = [
+    {file = "pyobjc-framework-Message-8.5.tar.gz", hash = "sha256:2a6bb4f679dc46c135542ac65159cc4a5be1d350bd44d64bfaa4dbec6357e1e6"},
+    {file = "pyobjc_framework_Message-8.5-py2.py3-none-any.whl", hash = "sha256:ae36377f6ce9b0190601e5eebd758bf34c4b5d7c40f24ec82cecbde246671724"},
+]
+pyobjc-framework-metal = [
+    {file = "pyobjc-framework-Metal-8.5.tar.gz", hash = "sha256:da7e20987ee087a6e7bf213305449b5b7345c8c55f3506b9e26a1b05215da679"},
+    {file = "pyobjc_framework_Metal-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:68b12b1fbe564e4dfcb36717847d7527e9e4a8c4922413e2615a88ae3c7373fc"},
+    {file = "pyobjc_framework_Metal-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4d16ae87263e450a88eb1bc3e49ef650935e02173df8e7594998bfc29a34cde4"},
+    {file = "pyobjc_framework_Metal-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f76f814635fc3320e0703f3f18573e1f9d2d2c3e560cdef20a2b538f95298b01"},
+]
+pyobjc-framework-metalkit = [
+    {file = "pyobjc-framework-MetalKit-8.5.tar.gz", hash = "sha256:95f373deadee11c2bf2e5fa37fee101c56b40cf8fe2f94bb6a4bb4065a3001ff"},
+    {file = "pyobjc_framework_MetalKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ab6260784513bc63e2063322840dd411acb7221d82588ccbad552230b525c4f0"},
+    {file = "pyobjc_framework_MetalKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7d88a8c53dd6a799472bc8847b985be1775b609ce7355c3347ca586d717bca49"},
+    {file = "pyobjc_framework_MetalKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:56e56b5d384349180f789009af440cd8e99486bed8213efa55767b93eba29cdb"},
+]
+pyobjc-framework-metalperformanceshaders = [
+    {file = "pyobjc-framework-MetalPerformanceShaders-8.5.tar.gz", hash = "sha256:9219b19709bcc1d85c900ae1ea3f5f8fc0c03be62daf25565ff313839ad41b4e"},
+    {file = "pyobjc_framework_MetalPerformanceShaders-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9944fa78fe37d31fce4e9adaee0fda5f538edf525debdf3d01df424e2795be70"},
+    {file = "pyobjc_framework_MetalPerformanceShaders-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:eb7c3835f775a1efc3719dcd6783512afebea0821da60020a3dc02b122bbea93"},
+    {file = "pyobjc_framework_MetalPerformanceShaders-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1539bb50361939c1528114cdd0012cf14330aa1c249e94139b97d6fb492611b7"},
+]
+pyobjc-framework-metalperformanceshadersgraph = [
+    {file = "pyobjc-framework-MetalPerformanceShadersGraph-8.5.tar.gz", hash = "sha256:e05cb7553d17693e3ca468d7d68d5ced4f80f04d3503a963fcf0a226e3443415"},
+    {file = "pyobjc_framework_MetalPerformanceShadersGraph-8.5-py2.py3-none-any.whl", hash = "sha256:c98c2025b8916e6cd726e2776fdd44b5d606e1966f83ea90c08a0d218ff9bd8d"},
+]
+pyobjc-framework-metrickit = [
+    {file = "pyobjc-framework-MetricKit-8.5.tar.gz", hash = "sha256:82d73117cd9df768948552ea46fe6651ed48a2747b026d1667e11a3d44e765c9"},
+    {file = "pyobjc_framework_MetricKit-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2aa3fea54a0eaeab02c78a199941a2456cc7fa08c8862765d9af3285a9d204f3"},
+    {file = "pyobjc_framework_MetricKit-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:55ef00109ce58b1873e55413747724169b1f797c9a44b5ddac8610c83757549d"},
+    {file = "pyobjc_framework_MetricKit-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:90a74551b986957ddad8d01758b1d318b4dc22baf5a0532bf2433c1d8beffcc1"},
+    {file = "pyobjc_framework_MetricKit-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:faf33b7b5e23b7a9dd8f581516cf5ca22b9b68269f6cf1f33e23a3ea4adc1ef3"},
+    {file = "pyobjc_framework_MetricKit-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:516ccc98787f0ef65d292ef2873bd8ae128591a4ab5bd74739b5039ffd86f9eb"},
+    {file = "pyobjc_framework_MetricKit-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b1eba90ef99197d40fdced83ffc6d3b5a1a3a7fce2858bb0b6f4da5a38d13ceb"},
+]
+pyobjc-framework-mlcompute = [
+    {file = "pyobjc-framework-MLCompute-8.5.tar.gz", hash = "sha256:494800007edf445f5d64f51b6550584522d795d7aefa6ca6e0d76ff9039892cc"},
+    {file = "pyobjc_framework_MLCompute-8.5-py2.py3-none-any.whl", hash = "sha256:0b7d365f1a36913a1a1b02a5bae34bc4ace0d2adc950d3e0f0c0d07e21d9bb20"},
+]
+pyobjc-framework-modelio = [
+    {file = "pyobjc-framework-ModelIO-8.5.tar.gz", hash = "sha256:9db7f7992f71ecdef3b03a0006d4988fc661dde0fe049c04d9c6a8e040d3af4d"},
+    {file = "pyobjc_framework_ModelIO-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac50eb8c6fa40b10c32f33e5d43a228674c389c2b83ccc85209dda8c9ad33dfb"},
+    {file = "pyobjc_framework_ModelIO-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3941e4efe1edb6a4f6ff1685bd2463932170a91888104c6166207f42f1dbe8f5"},
+    {file = "pyobjc_framework_ModelIO-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c2d8c3cd53b99123b530fbc199f101bd19e31eb2670614c0271762abf8f6dece"},
+]
+pyobjc-framework-multipeerconnectivity = [
+    {file = "pyobjc-framework-MultipeerConnectivity-8.5.tar.gz", hash = "sha256:82f677ddba1861802a236a26beee6710cc36fe19f1c37e3bfa5b794476aa4155"},
+    {file = "pyobjc_framework_MultipeerConnectivity-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f83ca29aef25a7ea220a67b9d24ed3eac4dcb84021825c3369515dfe82438f50"},
+    {file = "pyobjc_framework_MultipeerConnectivity-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:82b9fe3cd1e279dbee30e751700c0c2e83f7c4837051e751484fff3440fd1627"},
+    {file = "pyobjc_framework_MultipeerConnectivity-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:30c9e6ec7e54bbd14e2bf0a5ec796b13c7fa5aa5f050b6902c1fd9ed9f6be56e"},
+]
+pyobjc-framework-naturallanguage = [
+    {file = "pyobjc-framework-NaturalLanguage-8.5.tar.gz", hash = "sha256:5be1db5c4234805a2dccdc88bc1f1764f46c6913ec59ba2818f22e15f17802c3"},
+    {file = "pyobjc_framework_NaturalLanguage-8.5-py2.py3-none-any.whl", hash = "sha256:89c01c581392deeda7f11fd9847d067621cd4104ac5c4ac0cab82f9b5784d811"},
+]
+pyobjc-framework-netfs = [
+    {file = "pyobjc-framework-NetFS-8.5.tar.gz", hash = "sha256:d36ef8f8f07130ddefb27b6e020922e8cc34cede7e1547dba7473a87a68ae32b"},
+    {file = "pyobjc_framework_NetFS-8.5-py2.py3-none-any.whl", hash = "sha256:9823def9da58b2f67f5c40193f01da621513a1add6328dde024417f4dc302281"},
+]
+pyobjc-framework-network = [
+    {file = "pyobjc-framework-Network-8.5.tar.gz", hash = "sha256:387b79527d287bb743fbd77bd0ab41d82d04e76b059f31e3b7095280e7aa632c"},
+    {file = "pyobjc_framework_Network-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a4250521ed2deb79c85906d7e93c0f8369c0e525f02fe50f05af8c9b063b9328"},
+    {file = "pyobjc_framework_Network-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:40521db2c6f5336f9805909b23ce81a8bbef9013bc793352f827b7f5a55da451"},
+    {file = "pyobjc_framework_Network-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:23e13e146854ae4f9fa6a966eafcc1d8422e4a96a8bc5d6e2448a685038713b4"},
+]
+pyobjc-framework-networkextension = [
+    {file = "pyobjc-framework-NetworkExtension-8.5.tar.gz", hash = "sha256:6605eae194672772d64f1b39a19b0b3fed38b39435f93bc80a80c9dc12cc07ce"},
+    {file = "pyobjc_framework_NetworkExtension-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5dbee79e3796344ec0c20254f89d286834ad7e28bfd9a717f9a026e0edc84bab"},
+    {file = "pyobjc_framework_NetworkExtension-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:664fa1410c7e76d67004a57431579b110c6c211f4504731538d3fec0bb5ec926"},
+    {file = "pyobjc_framework_NetworkExtension-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:bd962b5ab85b64653893547162dd579979bec9f9bf14e582abc89c0839dd8c76"},
+]
+pyobjc-framework-notificationcenter = [
+    {file = "pyobjc-framework-NotificationCenter-8.5.tar.gz", hash = "sha256:23fce23e4f8eab0849f2db9870a05433c1de0ef538664faf444cf8013c707cb3"},
+    {file = "pyobjc_framework_NotificationCenter-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b5ddc158f4d3eace2de881fa502915fe880ccda40febe6ddd2e272a63c4525bf"},
+    {file = "pyobjc_framework_NotificationCenter-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ce5a276737c6b5549ad3e1902f5cb248b0048f7fae4ed1a082dd0f9c3c230a3b"},
+    {file = "pyobjc_framework_NotificationCenter-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:2b89173583461d79e30582db4f91db1df82a9bb724ed9dc827a7484c4eb17f3a"},
+]
+pyobjc-framework-opendirectory = [
+    {file = "pyobjc-framework-OpenDirectory-8.5.tar.gz", hash = "sha256:706f09cc38307a0c860a929d9b6bf826e0bccf3a536286024b345787555141f7"},
+    {file = "pyobjc_framework_OpenDirectory-8.5-py2.py3-none-any.whl", hash = "sha256:5fcdab699dab2577f700ee4a4435520723db89faaa985ad4630ba67dfca21df8"},
+]
+pyobjc-framework-osakit = [
+    {file = "pyobjc-framework-OSAKit-8.5.tar.gz", hash = "sha256:74b745ec684b702967f78c4e7723c4a08ab271fe602efc5e35f441bb63c64365"},
+    {file = "pyobjc_framework_OSAKit-8.5-py2.py3-none-any.whl", hash = "sha256:161f665b37acac32938d2f698ea3df652e9a721b36b08a507cf39f80f5b03af8"},
+]
+pyobjc-framework-oslog = [
+    {file = "pyobjc-framework-OSLog-8.5.tar.gz", hash = "sha256:63551865ca3554f0f85cb3a7799b2471c0f89146b23cb12e939dad7d11c9e08a"},
+    {file = "pyobjc_framework_OSLog-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c4d320476ed67f06594dc698ce3fc6ecde52dfabba1453e115ee4f5c27f5845a"},
+    {file = "pyobjc_framework_OSLog-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cf334436f2d19e99ada3106e119914b7facc51e4ebb119d70c182da109021f7d"},
+    {file = "pyobjc_framework_OSLog-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:471fcdb5f317cc2c4432dd57c63820fcb1a18bffb9b7b78b42c4c49eb9adecaa"},
+]
+pyobjc-framework-passkit = [
+    {file = "pyobjc-framework-PassKit-8.5.tar.gz", hash = "sha256:ec3bc9daf0a8289630df95fe78bc3c6b985f6711fca12d2f4289e5c6932aea86"},
+    {file = "pyobjc_framework_PassKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:03523ceb800946086e35f285afd93fe8b8b7fc23c15558c8aa01867adb32d4c6"},
+    {file = "pyobjc_framework_PassKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:577ad5875a76697b4bcf7f2382839ce8a8fbbb3a478fe19a8694d315e6d3515e"},
+    {file = "pyobjc_framework_PassKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:94694691aef277cf7864c32922328a687cbc0fda803592a91a20d336d98bafa5"},
+]
+pyobjc-framework-pencilkit = [
+    {file = "pyobjc-framework-PencilKit-8.5.tar.gz", hash = "sha256:56a33b916649fd8cd35901978667745fda2fd28a918f79a723c7abfb395dabad"},
+    {file = "pyobjc_framework_PencilKit-8.5-py2.py3-none-any.whl", hash = "sha256:9a2eb68a4ce3d2e627516373ab4c282e94bb0dd9530c11947a538ca0fb9b04ed"},
+]
+pyobjc-framework-photos = [
+    {file = "pyobjc-framework-Photos-8.5.tar.gz", hash = "sha256:6ea5586d69472cec98737df6c66edbe38df7d4ad5c894b8081a9abbf1d6a1801"},
+    {file = "pyobjc_framework_Photos-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7f7f2a5561e0b205c619fe955690c1810ff563a7072c7d7cf6c0055665c01585"},
+    {file = "pyobjc_framework_Photos-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d2510faea3064dc6dab357b782c2a4099d72bc974b40ce4ede5b1b2b5b5a55bb"},
+    {file = "pyobjc_framework_Photos-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1fddcb606fa18a95193fb087110bee86fda503a6684eefe84fce80f65c20aaa3"},
+]
+pyobjc-framework-photosui = [
+    {file = "pyobjc-framework-PhotosUI-8.5.tar.gz", hash = "sha256:4ad65e684f4d2d1738a3b981cecc741cc26914ac69c000bbe18ebf27b98a1e4a"},
+    {file = "pyobjc_framework_PhotosUI-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6ef65f4253e92cdae8c05c655048ba662e36da0cd5995604e6fcad8fbfabdd35"},
+    {file = "pyobjc_framework_PhotosUI-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f1189a05b60c8cd3a6e2b52ab775add3285e618abe07610d01fe686fe2c24106"},
+    {file = "pyobjc_framework_PhotosUI-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:27cd95da91e231eb1b693cf2edab7b03428b79bc3f54ca3db3d17a339fb848fa"},
+]
+pyobjc-framework-preferencepanes = [
+    {file = "pyobjc-framework-PreferencePanes-8.5.tar.gz", hash = "sha256:e589da5a82b21162ecee5d7cc1bffa2ee0ac2042e61cef0639eea33d12d93648"},
+    {file = "pyobjc_framework_PreferencePanes-8.5-py2.py3-none-any.whl", hash = "sha256:d95ad33b484676ae093feddcccd6b65d1c751545ab8a1bde61f8c807a9ab16c9"},
+]
+pyobjc-framework-pubsub = [
+    {file = "pyobjc-framework-PubSub-8.5.tar.gz", hash = "sha256:e316d32a8d62494ae32ca59813bf41d2ed5590f8477345ae6bbf25d3bab72b99"},
+    {file = "pyobjc_framework_PubSub-8.5-py2.py3-none-any.whl", hash = "sha256:27d020fe7b9d23f2012f828d53f63dc3387274fc88f63b7c91baece7dfeb5fef"},
+]
+pyobjc-framework-pushkit = [
+    {file = "pyobjc-framework-PushKit-8.5.tar.gz", hash = "sha256:a198ced44b4128ed94a7fb5a31f1d1741b445f85647c26fe182f35bfd14360fc"},
+    {file = "pyobjc_framework_PushKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d517b14bd42e56146a36b016836878ef73d7bdfb09ca119f62bd4bce2ec75066"},
+    {file = "pyobjc_framework_PushKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e0555b347b6189d6a1a8d2162282084d01d24a7c3bea2807db299be65520b6ac"},
+    {file = "pyobjc_framework_PushKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d8034c95ba437f1b1d547e491b1f3511077bc0ed73e3cdca2d6062c2411a78ac"},
+]
+pyobjc-framework-quartz = [
+    {file = "pyobjc-framework-Quartz-8.5.tar.gz", hash = "sha256:d2bc5467a792ddc04814f12a1e9c2fcaf699a1c3ad3d4264cfdce6b9c7b10624"},
+    {file = "pyobjc_framework_Quartz-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e9f0fb663f7872c9de94169031ac42b91ad01bd4cad49a9f1a0164be8f028426"},
+    {file = "pyobjc_framework_Quartz-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:567eec91287cfe9a1b6433717192c585935de8f3daa28d82ce72fdd6c7ac00f6"},
+    {file = "pyobjc_framework_Quartz-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9f910ab41a712ffc7a8c3e3716a2d6f39ea4419004b26a2fd2d2f740ff5c262c"},
+    {file = "pyobjc_framework_Quartz-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:29d07066781628278bf0e5278abcfc96ef6724c66c5629a0b4c214d319a82e55"},
+    {file = "pyobjc_framework_Quartz-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:72abcde1a3d72be11f2c881c9b9872044c8f2de86d2047b67fe771713638b107"},
+    {file = "pyobjc_framework_Quartz-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8809b9a2df2f461697bdb45b6d1b5a4f881f88f09450e3990858e64e3e26c530"},
+]
+pyobjc-framework-quicklookthumbnailing = [
+    {file = "pyobjc-framework-QuickLookThumbnailing-8.5.tar.gz", hash = "sha256:46ff094cab5ccb63143e72ebbf411822e5b3196f54dfb85c29ff0d624931b052"},
+    {file = "pyobjc_framework_QuickLookThumbnailing-8.5-py2.py3-none-any.whl", hash = "sha256:ee7d935c3b7a14639d62de648501cf1660a8a3320af42e1612bba691b23acc3e"},
+]
+pyobjc-framework-replaykit = [
+    {file = "pyobjc-framework-ReplayKit-8.5.tar.gz", hash = "sha256:94cd956a3ee4a8d46a89f042645d34f30514ead22728efe9296cab2187b54a17"},
+    {file = "pyobjc_framework_ReplayKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c044f1c821d7fe03577fe02bea207104fe231fdc8c6a89883878dc5cb0d219b8"},
+    {file = "pyobjc_framework_ReplayKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:01d8bbc1c73005f4b4b80dbd992b2d610ea86902a0cb6d9cfd8b8dc0998671a9"},
+    {file = "pyobjc_framework_ReplayKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4ade9d890cf4cc685becb4a39036b009f93946dce6b9135bc0573d990f99f72d"},
+]
+pyobjc-framework-safariservices = [
+    {file = "pyobjc-framework-SafariServices-8.5.tar.gz", hash = "sha256:eb802ef43ad8c39aebcd2ff4a03db4d6d6ba3a2cbf65a377c0a5676003dd8da2"},
+    {file = "pyobjc_framework_SafariServices-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:968b2db6ce942a2dbad2121e5e46582af2633d35d5abc9fb5158b84efc813f82"},
+    {file = "pyobjc_framework_SafariServices-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ee03dbb92f1da4ebf757284f094fca348a34928937eb02c31a65f9a7a61d1e06"},
+    {file = "pyobjc_framework_SafariServices-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e72468c5d06bc842cf6aa2f87994c75fccbe628b22f5f6886dd8ab146beca9d5"},
+]
+pyobjc-framework-scenekit = [
+    {file = "pyobjc-framework-SceneKit-8.5.tar.gz", hash = "sha256:b2ff4d6003f4649441d4cc46170c17e7775a82dd4b3d2e197439d7bbf15c2918"},
+    {file = "pyobjc_framework_SceneKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f25fd2411181a1ddb41b10421dafdafc325d07b334acd0f1f81a3be307f65d10"},
+    {file = "pyobjc_framework_SceneKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea28654319144dab5da24a55f96c224e9cfb2bb15f1ab3bdc302992116610ba5"},
+    {file = "pyobjc_framework_SceneKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fffec750c0dafe3b0e0577a94bf860b3735c7307d3e170cb50da1941381b9ae4"},
+]
+pyobjc-framework-screencapturekit = [
+    {file = "pyobjc-framework-ScreenCaptureKit-8.5.tar.gz", hash = "sha256:25a995ba1d6a19a0eb9f4982052f94b6cfc23cdfd805f1ef1b5d8aec0e8800a7"},
+    {file = "pyobjc_framework_ScreenCaptureKit-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:513ebd1dfecce3ed3d3e02f047ec02e02b920e9625cdf80804d434ed5a2c2da8"},
+    {file = "pyobjc_framework_ScreenCaptureKit-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d388b302a86fff5a1b0793a7eac38564b38b5e0f79073f032c53d0796e29384e"},
+    {file = "pyobjc_framework_ScreenCaptureKit-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:61b1e1018399eef7901b63df82015ea853386e5413981ab4f78c64657bc567c7"},
+    {file = "pyobjc_framework_ScreenCaptureKit-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53d7428502f3d2e25108946e6c66c6fc4d3e5d9026949fd65ab23666a55bccef"},
+    {file = "pyobjc_framework_ScreenCaptureKit-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d920a708eb3115882805653e552d37fbd8f32267a2824af365dac52b40d7d40b"},
+    {file = "pyobjc_framework_ScreenCaptureKit-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:feb8bdbd0579badd85ebea84d9168a204001e76a7f567ac370de12b36b40ed62"},
+]
+pyobjc-framework-screensaver = [
+    {file = "pyobjc-framework-ScreenSaver-8.5.tar.gz", hash = "sha256:ee52cb4d7081faba606368c294baccbccb8e616bd2d2510b85101c8333032a1b"},
+    {file = "pyobjc_framework_ScreenSaver-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e8b93ae2578615d631311387b85bb63b3fe2e213a2e2e2f5aa121d7f8539f7bd"},
+    {file = "pyobjc_framework_ScreenSaver-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:884dbccf4e925cdf6ae1c6ffccdb71726b506c6cdc062f640dae680037551b2e"},
+    {file = "pyobjc_framework_ScreenSaver-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:bbc9a022d040ff5778777e718ef3faddcaf63908d8d5bcf2a81bb36c2453edcd"},
+]
+pyobjc-framework-screentime = [
+    {file = "pyobjc-framework-ScreenTime-8.5.tar.gz", hash = "sha256:f551b1487416bce23d15dc197a5a216eb43f5e829748c877f88d0bfa21b9d141"},
+    {file = "pyobjc_framework_ScreenTime-8.5-py2.py3-none-any.whl", hash = "sha256:45d15baad0ca3888ce208f73da5a1e3c4cf472b177c795037ee83a85d2a0e48f"},
+]
+pyobjc-framework-scriptingbridge = [
+    {file = "pyobjc-framework-ScriptingBridge-8.5.tar.gz", hash = "sha256:20df11bd2f57e8105d42b9bcde84881dc2fc6119727fd5d501fac50666f3fb00"},
+    {file = "pyobjc_framework_ScriptingBridge-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:470e21f18e381492568aa870c87676e3cecdefac886029885917f58182ab6ce8"},
+    {file = "pyobjc_framework_ScriptingBridge-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a13588f376eae1056b241b7780b0455048ce1e082225eb573a77f3772b435a75"},
+    {file = "pyobjc_framework_ScriptingBridge-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:2bb4a72e2ac94b9bb86b19b001d93d07362c0aee8e854cf6a38ed0632d27371c"},
+]
+pyobjc-framework-searchkit = [
+    {file = "pyobjc-framework-SearchKit-8.5.tar.gz", hash = "sha256:908db0952169c1646378bb3d39d316adc8e9da03e344c0e05333598327b734cf"},
+    {file = "pyobjc_framework_SearchKit-8.5-py2.py3-none-any.whl", hash = "sha256:f5e3cc43d5874c6b8abd8f82d9dba2d0f04ec2ed4998f973184202f3a85c399e"},
+]
+pyobjc-framework-security = [
+    {file = "pyobjc-framework-Security-8.5.tar.gz", hash = "sha256:6e9c26f37f73c3d697f815a868828a1010661711cde2dd04d31dab6d4429cce5"},
+    {file = "pyobjc_framework_Security-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ddf718abadc342acf768382eff132d116c0ee65f570ecfb391e73480f0697cfc"},
+    {file = "pyobjc_framework_Security-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1dd0894a27035d8f20d61aa5710f25519c11eacd07c9a296ac1c00d241e14979"},
+    {file = "pyobjc_framework_Security-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7248772eff0e9bcf36b29660a7d4b9f37f380ca8ee22b9feb4f098e328265b62"},
+    {file = "pyobjc_framework_Security-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94bb62309f00a42f8f0796a5e0ccadc9d41bb027936379ceed4e21606026dea"},
+    {file = "pyobjc_framework_Security-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:add55d1a3c230304ac6061e2f3708cb9ad8de724acb17bca2511da4037916968"},
+    {file = "pyobjc_framework_Security-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:28a373e33e8d24ff10eb3079484682d8f069fce981fa62d918b2a258ec04d2e5"},
+]
+pyobjc-framework-securityfoundation = [
+    {file = "pyobjc-framework-SecurityFoundation-8.5.tar.gz", hash = "sha256:fcdfc028a66a34b30c9143ec941a0c8fc566c2dc61269188a907182e5cf21540"},
+    {file = "pyobjc_framework_SecurityFoundation-8.5-py2.py3-none-any.whl", hash = "sha256:0d913e7ccc7db7e6adf3a7ed8db296dd28ec865e785f90b4b078eb14bdaeb152"},
+]
+pyobjc-framework-securityinterface = [
+    {file = "pyobjc-framework-SecurityInterface-8.5.tar.gz", hash = "sha256:a80882df36ba464fbd77d4c037e8a89ed547c302c94a32fee73248dfa4335d01"},
+    {file = "pyobjc_framework_SecurityInterface-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:de4fe7a321d8c7ace020f8cc44da1aa8c3e5ed8e7510cb41fa6c1c60492c8c26"},
+    {file = "pyobjc_framework_SecurityInterface-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f2024901c5880e4d689b5fdea8098b7687d7fe9999458008c72998932883b0ed"},
+    {file = "pyobjc_framework_SecurityInterface-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:da5dc276b4c617cabb78f92916cb44f9334e9bd0258d2782149cefe10b8603f3"},
+]
+pyobjc-framework-servernotification = [
+    {file = "pyobjc-framework-ServerNotification-8.5.tar.gz", hash = "sha256:4695b2025661eea96501a1bc5c756029a486d3b6cb31c6e6f89b6a1b0c01dd43"},
+    {file = "pyobjc_framework_ServerNotification-8.5-py2.py3-none-any.whl", hash = "sha256:8745dfdca143f3513331b6b118fcb806f9f883d625533fbe67a4037335db7ae1"},
+]
+pyobjc-framework-servicemanagement = [
+    {file = "pyobjc-framework-ServiceManagement-8.5.tar.gz", hash = "sha256:2d7e91f34baf94d863706a8545c0419500b383a7696560793d7d03f6b8d335cc"},
+    {file = "pyobjc_framework_ServiceManagement-8.5-py2.py3-none-any.whl", hash = "sha256:b7e5013c23102c32eadb9117ef85c4438a78dd60c8cadbf63005e1f56ecfa023"},
+]
+pyobjc-framework-shazamkit = [
+    {file = "pyobjc-framework-ShazamKit-8.5.tar.gz", hash = "sha256:72fe03ce245352364e99abddce86044c25ff0de6aa334efd97cf68d6d91c4d63"},
+    {file = "pyobjc_framework_ShazamKit-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:47a93c4dc9d228b78fe04e475aba3cb813bd2aa47eddddbd37111b2b4607e1e3"},
+    {file = "pyobjc_framework_ShazamKit-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:27b388ff2987fb92eca6b22aff24928f5bc291cd4681881cd9cdf65d0bb2a943"},
+    {file = "pyobjc_framework_ShazamKit-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3fc8cc106697e03d9719cfdf204c45b4edc98b70e0ff212e5e525fea252c302f"},
+    {file = "pyobjc_framework_ShazamKit-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eac9d9ff79d1fc1be05c9931e794c954174d00d5ecc1dcfecc1f8b6cec33ad5c"},
+    {file = "pyobjc_framework_ShazamKit-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:3bed62c821cde0f00cf336ee1e540ca6e7f2c243c4430f36eefc44bc3c1940d6"},
+    {file = "pyobjc_framework_ShazamKit-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fea6eb2b085c3279c3e0d025547ba4f6b0e98031b2022484573c57bc81af9ca1"},
+]
+pyobjc-framework-social = [
+    {file = "pyobjc-framework-Social-8.5.tar.gz", hash = "sha256:32735709280ddbd122d3a8d14ad278a615e39539b4b79d315c58358801cbf749"},
+    {file = "pyobjc_framework_Social-8.5-py2.py3-none-any.whl", hash = "sha256:2394f0f772bd6b22b176ce5ecf454a317a25e90d7e824a648fa110ae2fe3142d"},
+]
+pyobjc-framework-soundanalysis = [
+    {file = "pyobjc-framework-SoundAnalysis-8.5.tar.gz", hash = "sha256:2240293f27cb3fe7a85e8af7ea3486117c9893799b1ea8c557702c87dcfcd621"},
+    {file = "pyobjc_framework_SoundAnalysis-8.5-py2.py3-none-any.whl", hash = "sha256:edb1dc1f980578b633166599704f545218aea4ab4f4cf00252958cc1082de91d"},
+]
+pyobjc-framework-speech = [
+    {file = "pyobjc-framework-Speech-8.5.tar.gz", hash = "sha256:09a42fe7225c1baf19fb48e89853ba58b758e0796698105ce1dc4c2bdfd82522"},
+    {file = "pyobjc_framework_Speech-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:49f04372cdcf05221d3f72811f5f60b6ad1afefb5e85001ec24dc026eef1eb5d"},
+    {file = "pyobjc_framework_Speech-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a9079744646b70109674f08e1aee44af8048d9a91dfbd35435c0eb7921152818"},
+    {file = "pyobjc_framework_Speech-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:14eb398154d4c67760f3d76e27a6cbf419822b562faf513c2cc5aadbf2bc2052"},
+]
+pyobjc-framework-spritekit = [
+    {file = "pyobjc-framework-SpriteKit-8.5.tar.gz", hash = "sha256:c38ca87bafe8979fc876a2fc4803f03671151c5d17f0507095117f7635c28e99"},
+    {file = "pyobjc_framework_SpriteKit-8.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a6fcc01a422c4823192eaf3438550d06b0ea90da7ea09f47c433fcf4d8415f24"},
+    {file = "pyobjc_framework_SpriteKit-8.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:45f0af06fcc3765f969aaac593fa94678bea1fd91a6a74e5156a1a779924927f"},
+    {file = "pyobjc_framework_SpriteKit-8.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95449f0890bc5b622b5b67387a21ccf8e12186ec28d1f6aec14ec5b364b170cb"},
+    {file = "pyobjc_framework_SpriteKit-8.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:abc01543f786063e74f5ddc9fc1c422fa552602a91fa63c9130c6ce4080a096c"},
+    {file = "pyobjc_framework_SpriteKit-8.5-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:47fbdd6d7f5b3f76ee8aa6da1750faa60e21d054d684b049a7e68bb755155261"},
+    {file = "pyobjc_framework_SpriteKit-8.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:be87842ec7b41089c0dad693f18828fcd2caf4c2e13689be6fe63474b6d1f994"},
+]
+pyobjc-framework-storekit = [
+    {file = "pyobjc-framework-StoreKit-8.5.tar.gz", hash = "sha256:466486f3a2fc316e5db2324e85666ca814ad2a1ee963382ec8d24bd2aaac6dbc"},
+    {file = "pyobjc_framework_StoreKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6fb9b1c5abe1b28c6b318b5feefe534aef2c8008b9afa667db45fb8a776f2704"},
+    {file = "pyobjc_framework_StoreKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f9043d1598d0ffb83063e06e91449453de053063481232b430e121401428d174"},
+    {file = "pyobjc_framework_StoreKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f373b3acae2f6104979950e65f957ceb53497798b478cc51c90653461d39f945"},
+]
+pyobjc-framework-syncservices = [
+    {file = "pyobjc-framework-SyncServices-8.5.tar.gz", hash = "sha256:97d690570bb3d71b115b3b40a9983d7822b621e4c99bfd1e789c47ebceba8ce9"},
+    {file = "pyobjc_framework_SyncServices-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:fabdf61bad45ca06dbdf5f41f83337ed226d0e3a6fe6c342f105800cb9fd727e"},
+    {file = "pyobjc_framework_SyncServices-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5c8fa874885755b7bb662e18ae33420a15487b9cc51c5e3a17231f319890c92f"},
+    {file = "pyobjc_framework_SyncServices-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:77c8c559eb3f17173bf3ba676de64dfff60f6680a63ec2d3609da1c49bf0c156"},
+]
+pyobjc-framework-systemconfiguration = [
+    {file = "pyobjc-framework-SystemConfiguration-8.5.tar.gz", hash = "sha256:fb34bb38a9ae1597c4365b15ed8ffdd9243a20661b5619f7667691270206a1f4"},
+    {file = "pyobjc_framework_SystemConfiguration-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e5b5141953313896655010f9d6d93f43452cf2d00a64acde3fd6242bc65e5d1"},
+    {file = "pyobjc_framework_SystemConfiguration-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:42a688a84836b3eec7bc63524315a9f733afbe20cb5eb9e04e2b49dcbb8c37ae"},
+    {file = "pyobjc_framework_SystemConfiguration-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:356090d6c985efd700479c5f7d2be0038702820fd6693e26161808bcc08f25df"},
+]
+pyobjc-framework-systemextensions = [
+    {file = "pyobjc-framework-SystemExtensions-8.5.tar.gz", hash = "sha256:fdc61bb91a91e8a3335b7675b939fb2f63dc636de0676f4c344d0f43d21de413"},
+    {file = "pyobjc_framework_SystemExtensions-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:fb8f92b829975b959597cd9bd9938f6590c380685f1cafcc482464ec14eb3c0c"},
+    {file = "pyobjc_framework_SystemExtensions-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ec84170e051c23f3dcae9be9363287249e272a2bac24ea3b10b6472ed110a78c"},
+    {file = "pyobjc_framework_SystemExtensions-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:597f430d455b3acd67755af6b984ed0547e1e0fe84747008be56ac3a53583172"},
+]
+pyobjc-framework-uniformtypeidentifiers = [
+    {file = "pyobjc-framework-UniformTypeIdentifiers-8.5.tar.gz", hash = "sha256:d9ea05f6c7de222c8c7595e7f6b8e25762892ab8ee86703ce50f47523111f3d7"},
+    {file = "pyobjc_framework_UniformTypeIdentifiers-8.5-py2.py3-none-any.whl", hash = "sha256:b20d9bc73a9d291e7ce99ecc1ef69145256bed67b06f80d3b909d54823d9772c"},
+]
+pyobjc-framework-usernotifications = [
+    {file = "pyobjc-framework-UserNotifications-8.5.tar.gz", hash = "sha256:718116e7a4fe590eedf2fd083c78c616e8d4f866c59e46c3ebc1de6a00ad0f88"},
+    {file = "pyobjc_framework_UserNotifications-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a9d6169becd482c4cd92d30fcb58bc6f02bef729055b03b555052728938e0254"},
+    {file = "pyobjc_framework_UserNotifications-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:50b0a6653da810907a16a39c59fcb295c07b8e335c40f459dedd7a5db8ba9f3f"},
+    {file = "pyobjc_framework_UserNotifications-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d5686823596913b9263cb7622c154123f5b2687ef19cceb60a5a8a73c0773ed7"},
+]
+pyobjc-framework-usernotificationsui = [
+    {file = "pyobjc-framework-UserNotificationsUI-8.5.tar.gz", hash = "sha256:611b6cf9ae413e227c86df1ff349ee7ec111c9a417b268f3160e21a2c01c8484"},
+    {file = "pyobjc_framework_UserNotificationsUI-8.5-py2.py3-none-any.whl", hash = "sha256:41b65dae32691b0aea32ba4f27dd73756cc4254117a438447f20984134787750"},
+]
+pyobjc-framework-videosubscriberaccount = [
+    {file = "pyobjc-framework-VideoSubscriberAccount-8.5.tar.gz", hash = "sha256:afd59f2ac645780d7c4db7b552180f4864faabb80ec5206336ee1582d5e9c007"},
+    {file = "pyobjc_framework_VideoSubscriberAccount-8.5-py2.py3-none-any.whl", hash = "sha256:08b355939a2d595a0864cccc2693933159b3956deef3e1e24d3c55413ca297b9"},
+]
+pyobjc-framework-videotoolbox = [
+    {file = "pyobjc-framework-VideoToolbox-8.5.tar.gz", hash = "sha256:39a917ef3dda2013d01189bcffd8efcf69b879de982970b9423f3d5287ca3ee5"},
+    {file = "pyobjc_framework_VideoToolbox-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7f65daa5fc7bbaa53fcd0a4aa83a61711e3c1b209e1f74479661482f075c8ee2"},
+    {file = "pyobjc_framework_VideoToolbox-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:77032f38f32f5677243e93ca588e7122f2cb74ac7b77917547769e5199c844a6"},
+    {file = "pyobjc_framework_VideoToolbox-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8aa9aefe93c0bb70117ad9c322cf88fa51d70d7b82ceec9d8337e6bc99388568"},
+]
+pyobjc-framework-virtualization = [
+    {file = "pyobjc-framework-Virtualization-8.5.tar.gz", hash = "sha256:3059716d543abb10031b1e98e53302c9353d8519f5b7fa9732f8337623cbf5a7"},
+    {file = "pyobjc_framework_Virtualization-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7e3cb00e87f08334bffb7384471622bbd62ea1e01948b0c13b9166191337c9a5"},
+    {file = "pyobjc_framework_Virtualization-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c0111b291d7e06fde76d949cd2313070b8b2438089cfa4b51d9f4ac84eecd0f"},
+    {file = "pyobjc_framework_Virtualization-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:04c766fb49f63cfd49dfa51f14da5a5965f7d7a89f9e41e48d299a441c76ad91"},
+]
+pyobjc-framework-vision = [
+    {file = "pyobjc-framework-Vision-8.5.tar.gz", hash = "sha256:0c05ffd6195a7ed0329f55feca2956fbeb60b4369b384f246c8673539abbebdc"},
+    {file = "pyobjc_framework_Vision-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c9afe2ddc8e7998cfc4b67c3abed420862de4bc2160da589055f02417fc6cb3a"},
+    {file = "pyobjc_framework_Vision-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b32331ad174663ccde045dcaecffeae15607247cab0de63f337f47cdd06107fa"},
+    {file = "pyobjc_framework_Vision-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b99e929cf72dd6fc228bb615b3e417f9b42042a0b20b2b5fad144259fab6ad09"},
+]
+pyobjc-framework-webkit = [
+    {file = "pyobjc-framework-WebKit-8.5.tar.gz", hash = "sha256:b9c6d654be8a9be56abf72219b53ec40255ff77dcb610ab31d546632cccd740d"},
+    {file = "pyobjc_framework_WebKit-8.5-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cf7d61bcbfb280dc6bd35d91a121af77ee37ce9f43d2ff6b2fa65de9f2a2b4ab"},
+    {file = "pyobjc_framework_WebKit-8.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ee5b581d79166cbc186541981222949aef381d09af8d98f2d7b59cc97ac7bc0e"},
+    {file = "pyobjc_framework_WebKit-8.5-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:80357505d2724b753f36271a53b2628f6e10b80257cc7b426308cfa8a1054f69"},
+]
 pyparsing = [
     {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
     {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
 ]
+pypiwin32 = [
+    {file = "pypiwin32-223-py3-none-any.whl", hash = "sha256:67adf399debc1d5d14dffc1ab5acacb800da569754fafdc576b2a039485aa775"},
+    {file = "pypiwin32-223.tar.gz", hash = "sha256:71be40c1fbd28594214ecaecb58e7aa8b708eabfa0125c8a109ebd51edbd776a"},
+]
 pytest = [
     {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
     {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
@@ -1308,6 +3987,25 @@ python-dateutil = [
     {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
     {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
 ]
+pyttsx3 = [
+    {file = "pyttsx3-2.90-py3-none-any.whl", hash = "sha256:a585b6d8cffc19bd92db1e0ccbd8aa9c6528dd2baa5a47045d6fed542a44aa19"},
+]
+pywin32 = [
+    {file = "pywin32-304-cp310-cp310-win32.whl", hash = "sha256:3c7bacf5e24298c86314f03fa20e16558a4e4138fc34615d7de4070c23e65af3"},
+    {file = "pywin32-304-cp310-cp310-win_amd64.whl", hash = "sha256:4f32145913a2447736dad62495199a8e280a77a0ca662daa2332acf849f0be48"},
+    {file = "pywin32-304-cp310-cp310-win_arm64.whl", hash = "sha256:d3ee45adff48e0551d1aa60d2ec066fec006083b791f5c3527c40cd8aefac71f"},
+    {file = "pywin32-304-cp311-cp311-win32.whl", hash = "sha256:30c53d6ce44c12a316a06c153ea74152d3b1342610f1b99d40ba2795e5af0269"},
+    {file = "pywin32-304-cp311-cp311-win_amd64.whl", hash = "sha256:7ffa0c0fa4ae4077e8b8aa73800540ef8c24530057768c3ac57c609f99a14fd4"},
+    {file = "pywin32-304-cp311-cp311-win_arm64.whl", hash = "sha256:cbbe34dad39bdbaa2889a424d28752f1b4971939b14b1bb48cbf0182a3bcfc43"},
+    {file = "pywin32-304-cp36-cp36m-win32.whl", hash = "sha256:be253e7b14bc601718f014d2832e4c18a5b023cbe72db826da63df76b77507a1"},
+    {file = "pywin32-304-cp36-cp36m-win_amd64.whl", hash = "sha256:de9827c23321dcf43d2f288f09f3b6d772fee11e809015bdae9e69fe13213988"},
+    {file = "pywin32-304-cp37-cp37m-win32.whl", hash = "sha256:f64c0377cf01b61bd5e76c25e1480ca8ab3b73f0c4add50538d332afdf8f69c5"},
+    {file = "pywin32-304-cp37-cp37m-win_amd64.whl", hash = "sha256:bb2ea2aa81e96eee6a6b79d87e1d1648d3f8b87f9a64499e0b92b30d141e76df"},
+    {file = "pywin32-304-cp38-cp38-win32.whl", hash = "sha256:94037b5259701988954931333aafd39cf897e990852115656b014ce72e052e96"},
+    {file = "pywin32-304-cp38-cp38-win_amd64.whl", hash = "sha256:ead865a2e179b30fb717831f73cf4373401fc62fbc3455a0889a7ddac848f83e"},
+    {file = "pywin32-304-cp39-cp39-win32.whl", hash = "sha256:25746d841201fd9f96b648a248f731c1dec851c9a08b8e33da8b56148e4c65cc"},
+    {file = "pywin32-304-cp39-cp39-win_amd64.whl", hash = "sha256:d24a3382f013b21aa24a5cfbfad5a2cd9926610c0affde3e8ab5b3d7dbcf4ac9"},
+]
 requests = [
     {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
     {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
@@ -1349,8 +4047,8 @@ types-urllib3 = [
     {file = "types_urllib3-1.26.15-py3-none-any.whl", hash = "sha256:6011befa13f901fc934f59bb1fd6973be6f3acf4ebfce427593a27e7f492918f"},
 ]
 typing-extensions = [
-    {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"},
-    {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"},
+    {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"},
+    {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"},
 ]
 urllib3 = [
     {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"},
diff --git a/pyproject.toml b/pyproject.toml
index 4e57a9aa..9edb924d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -13,12 +13,14 @@ requests = { version = "^2.28.0", optional = true }
 boto3 = {version = "^1.24.21", optional = true}
 ibm-watson = {version = "^6.0.0", optional = true}
 google-cloud-texttospeech = {version = "^2.11.1", optional = true}
+pyttsx3 = {version = "^2.90", optional = true}
 
 [tool.poetry.extras]
 google = ["google-cloud-texttospeech"]
 watson = ["ibm-watson"]
 polly = ["boto3"]
 microsoft = ["requests"]
+sapi = ["pyttsx3"]
 
 [tool.poetry.dev-dependencies]
 pytest = "^6.2.1"
diff --git a/requirements.dev.txt b/requirements.dev.txt
index 1899753f..367303a7 100644
--- a/requirements.dev.txt
+++ b/requirements.dev.txt
@@ -25,4 +25,4 @@ types-boto3==1.0.2
 types-requests==2.28.0
 types-setuptools==57.4.18
 types-urllib3==1.26.15
-typing-extensions==4.2.0; python_version < "3.10" and python_full_version >= "3.6.2" and python_version >= "3.7"
+typing-extensions==4.3.0; python_version < "3.10" and python_full_version >= "3.6.2" and python_version >= "3.7"
diff --git a/requirements.txt b/requirements.txt
index 93d70c8b..09c057d1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -25,3 +25,4 @@ s3transfer==0.6.0; python_version >= "3.7"
 six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
 urllib3==1.26.9; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.5.0" and python_version < "4" and python_version >= "3.7"
 websocket-client==1.1.0; python_version >= "3.6"
+pyttsx3==2.90
diff --git a/tts_wrapper/engines/__init__.py b/tts_wrapper/engines/__init__.py
index 10fe2123..b1fe9ce0 100644
--- a/tts_wrapper/engines/__init__.py
+++ b/tts_wrapper/engines/__init__.py
@@ -2,4 +2,5 @@
 from .microsoft import *
 from .pico import *
 from .polly import *
+from .sapi import *
 from .watson import *
diff --git a/tts_wrapper/engines/microsoft/client.py b/tts_wrapper/engines/microsoft/client.py
index 72bfd563..b989b3bf 100644
--- a/tts_wrapper/engines/microsoft/client.py
+++ b/tts_wrapper/engines/microsoft/client.py
@@ -1,6 +1,5 @@
 from typing import List, Optional
 
-import requests
 from tts_wrapper.tts import FileFormat
 
 from ...exceptions import ModuleNotInstalled
diff --git a/tts_wrapper/engines/sapi/__init__.py b/tts_wrapper/engines/sapi/__init__.py
new file mode 100644
index 00000000..5058b15e
--- /dev/null
+++ b/tts_wrapper/engines/sapi/__init__.py
@@ -0,0 +1,2 @@
+from .client import *
+from .sapi import *
diff --git a/tts_wrapper/engines/sapi/client.py b/tts_wrapper/engines/sapi/client.py
new file mode 100644
index 00000000..80f86b60
--- /dev/null
+++ b/tts_wrapper/engines/sapi/client.py
@@ -0,0 +1,23 @@
+import pyttsx3  # type: ignore
+import os
+
+from ...exceptions import ModuleNotInstalled
+from ..utils import create_temp_filename
+
+
+class SAPIClient:
+    def __init__(self) -> None:
+        try:
+            self._client = pyttsx3.init("sapi5")
+        except ModuleNotFoundError:
+            raise ModuleNotInstalled("sapi")
+
+    def synth(self, text: str) -> bytes:
+        temp_filename = create_temp_filename(".wav")
+        self._client.save_to_file(text, temp_filename)
+        self._client.runAndWait()
+
+        with open(temp_filename, "rb") as temp_f:
+            content = temp_f.read()
+        os.remove(temp_filename)
+        return content
diff --git a/tts_wrapper/engines/sapi/sapi.py b/tts_wrapper/engines/sapi/sapi.py
new file mode 100644
index 00000000..66a14ad0
--- /dev/null
+++ b/tts_wrapper/engines/sapi/sapi.py
@@ -0,0 +1,19 @@
+from typing import Any, List
+
+from ...exceptions import UnsupportedFileFormat
+from ...tts import AbstractTTS, FileFormat
+from . import SAPIClient
+
+
+class SAPITTS(AbstractTTS):
+    @classmethod
+    def supported_formats(cls) -> List[FileFormat]:
+        return ["wav"]
+
+    def __init__(self, client: SAPIClient) -> None:
+        self.client = client
+
+    def synth_to_bytes(self, text: Any, format: FileFormat) -> bytes:
+        if format not in self.supported_formats():
+            raise UnsupportedFileFormat(format, self.__class__.__name__)
+        return self.client.synth(str(text))
diff --git a/tts_wrapper/engines/utils.py b/tts_wrapper/engines/utils.py
index 186ac3b4..5e9aa44e 100644
--- a/tts_wrapper/engines/utils.py
+++ b/tts_wrapper/engines/utils.py
@@ -1,3 +1,7 @@
+import os
+import random
+import string
+import tempfile
 import wave
 from io import BytesIO
 
@@ -8,3 +12,10 @@ def process_wav(raw: bytes) -> bytes:
         wav.setparams((1, 2, 16000, 0, "NONE", "NONE"))  # type: ignore
         wav.writeframes(raw)
     return bio.getvalue()
+
+
+def create_temp_filename(suffix="") -> str:
+    random_seq = "".join(random.choice(string.ascii_letters) for _ in range(10))
+    return os.path.join(
+        tempfile.gettempdir(), f"{tempfile.gettempprefix()}_{random_seq}{suffix}"
+    )


Test patch:
diff --git a/tests/engines/test_pico.py b/tests/engines/test_pico.py
index 54cde920..489fa0a4 100644
--- a/tests/engines/test_pico.py
+++ b/tests/engines/test_pico.py
@@ -1,3 +1,4 @@
+import sys
 import pytest
 from tts_wrapper import PicoClient, PicoTTS
 
@@ -14,6 +15,10 @@ class TestPicoOffline(BaseEngineTest):
 
 
 @pytest.mark.slow
+@pytest.mark.skipif(
+    sys.platform != "linux",
+    reason="Skipping PicoTTS synth because it is linux-only.",
+)
 @pytest.mark.parametrize(
     "formats,tts_cls,client",
     [(PicoTTS.supported_formats(), PicoTTS, create_client)],
diff --git a/tests/engines/test_sapi.py b/tests/engines/test_sapi.py
new file mode 100644
index 00000000..bb72b33c
--- /dev/null
+++ b/tests/engines/test_sapi.py
@@ -0,0 +1,29 @@
+import os
+import sys
+
+import pytest
+from tts_wrapper import SAPITTS, SAPIClient
+
+from . import BaseEngineTest
+
+
+def create_client():
+    return SAPIClient()
+
+
+@pytest.mark.parametrize("formats,tts_cls", [(["wav"], SAPITTS)])
+class TestSAPIOffline(BaseEngineTest):
+    pass
+
+
+@pytest.mark.slow
+@pytest.mark.skipif(
+    not sys.platform.startswith("win") or "CI" in os.environ,
+    reason="Skipping SAPI synth because it is windows-only (can only run on a box).",
+)
+@pytest.mark.parametrize(
+    "formats,tts_cls,client",
+    [(SAPITTS.supported_formats(), SAPITTS, create_client)],
+)
+class TestSAPIOnline(BaseEngineTest):
+    pass