From da1ecb1b3bf5a496f9f3cb20491db7d878fe5933 Mon Sep 17 00:00:00 2001
From: Marlon Bucciarelli <65083942+marlon-luca-bu@users.noreply.github.com>
Date: Thu, 5 Dec 2024 11:45:27 +0100
Subject: [PATCH 1/3] Create winnowing module for programming exercises (#315)
---
.../module_programming_apted.xml | 26 +
.../module_programming_winnowing.xml | 26 +
.prospector.yaml | 2 +
assessment_module_manager/modules.docker.ini | 8 +-
assessment_module_manager/modules.ini | 9 +-
docker-compose.prod.yml | 8 +
docker-compose.yml | 8 +
env_example/module_programming_winnowing.env | 3 +
.../module_example/module_example/__main__.py | 4 +-
.../module_programming_apted/poetry.lock | 628 +-
.../module_programming_apted/pyproject.toml | 2 +-
.../.dockerignore | 4 +
.../.vscode/settings.json | 4 +
.../module_programming_winnowing/Dockerfile | 29 +
.../module_programming_winnowing/README.md | 8 +
.../module_programming_winnowing/module.conf | 4 +
.../module_programming_winnowing/__init__.py | 0
.../module_programming_winnowing/__main__.py | 171 +
.../convert_code_to_ast/__init__.py | 0
.../extract_method_and_ast.py | 63 +
.../get_feedback_methods.py | 27 +
.../convert_code_to_ast/languages/__init__.py | 0
.../languages/java/JavaAstVisitor.py | 133 +
.../languages/java/JavaLexer.py | 815 +
.../java/JavaMethodParserListener.py | 73 +
.../languages/java/JavaParser.py | 20451 ++++++++++++++++
.../languages/java/JavaParserVisitor.py | 1240 +
.../languages/java/__init__.py | 0
.../languages/python/Python3Lexer.py | 791 +
.../languages/python/Python3LexerBase.py | 101 +
.../python/Python3MethodParserListener.py | 52 +
.../languages/python/Python3Parser.py | 10288 ++++++++
.../languages/python/Python3ParserBase.py | 10 +
.../languages/python/Python3ParserListener.py | 1083 +
.../languages/python/Python3ParserVisitor.py | 491 +
.../languages/python/PythonAstVisitor.py | 134 +
.../languages/python/__init__.py | 0
.../convert_code_to_ast/method_node.py | 15 +
.../feedback_suggestions/__init__.py | 0
.../feedback_suggestions/batch.py | 12 +
.../code_similarity_computer.py | 133 +
.../feedback_suggestions.py | 198 +
.../remove_overlapping.py | 40 +
.../feedback_suggestions/remove_suspicious.py | 47 +
.../feedback_suggestions/winnowing.py | 170 +
.../test_codes/1.py | 4 +
.../test_codes/__init__.py | 0
.../test_codes/example_simple_lang.sl | 15 +
.../test_codes/nested_for.py | 3 +
.../test_codes/test1.java | 11 +
.../test_codes/test1a.py | 7 +
.../test_codes/test1c.py | 10 +
.../test_codes/test2.java | 11 +
.../test_codes/test2a.py | 12 +
.../test_codes/test2b.py | 9 +
.../test_codes/test3a.py | 5 +
.../test_codes/test3b.py | 6 +
.../test_codes/test4a.py | 5 +
.../test_codes/test4b.py | 6 +
.../test_codes/test5a.py | 14 +
.../test_codes/test5b.py | 8 +
.../test_codes/test5c.py | 4 +
.../test_codes/test6a.py | 4 +
.../test_codes/test7a.py | 6 +
.../test_codes/test7b.py | 10 +
.../test_codes/test8a.py | 10 +
.../test_codes/test8b.py | 12 +
.../module_programming_winnowing/poetry.lock | 1197 +
.../pyproject.toml | 25 +
69 files changed, 38334 insertions(+), 371 deletions(-)
create mode 100644 .idea/runConfigurations/module_programming_apted.xml
create mode 100644 .idea/runConfigurations/module_programming_winnowing.xml
create mode 100644 env_example/module_programming_winnowing.env
create mode 100644 modules/programming/module_programming_winnowing/.dockerignore
create mode 100644 modules/programming/module_programming_winnowing/.vscode/settings.json
create mode 100644 modules/programming/module_programming_winnowing/Dockerfile
create mode 100644 modules/programming/module_programming_winnowing/README.md
create mode 100644 modules/programming/module_programming_winnowing/module.conf
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test4a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test4b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5c.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test6a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test7a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test7b.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py
create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py
create mode 100644 modules/programming/module_programming_winnowing/poetry.lock
create mode 100644 modules/programming/module_programming_winnowing/pyproject.toml
diff --git a/.idea/runConfigurations/module_programming_apted.xml b/.idea/runConfigurations/module_programming_apted.xml
new file mode 100644
index 000000000..0465f1c6b
--- /dev/null
+++ b/.idea/runConfigurations/module_programming_apted.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/module_programming_winnowing.xml b/.idea/runConfigurations/module_programming_winnowing.xml
new file mode 100644
index 000000000..5f57e786c
--- /dev/null
+++ b/.idea/runConfigurations/module_programming_winnowing.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.prospector.yaml b/.prospector.yaml
index 2add2d6b2..bd97b9978 100644
--- a/.prospector.yaml
+++ b/.prospector.yaml
@@ -8,6 +8,8 @@ ignore-paths:
- module_programming_themisml/extract_methods/languages
- module_programming_themisml/extract_methods/method_parser_listener.py
- module_programming_apted/convert_code_to_ast/languages
+ - module_programming_winnowing/convert_code_to_ast/languages
+ - module_programming_winnowing/test_codes
mypy:
run: true
diff --git a/assessment_module_manager/modules.docker.ini b/assessment_module_manager/modules.docker.ini
index 53a2b83f8..ba23b665b 100644
--- a/assessment_module_manager/modules.docker.ini
+++ b/assessment_module_manager/modules.docker.ini
@@ -38,7 +38,7 @@ url = http://module-programming-apted:5006
type = programming
supports_evaluation = false
supports_non_graded_feedback_requests = false
-supports_graded_feedback_requests = false
+supports_graded_feedback_requests = true
[module_modeling_llm]
url = http://module-modeling-llm:5008
@@ -47,3 +47,9 @@ supports_evaluation = false
supports_non_graded_feedback_requests = true
supports_graded_feedback_requests = true
+[module_programming_winnowing]
+url = http://module-programming-winnowing:5009
+type = programming
+supports_evaluation = false
+supports_non_graded_feedback_requests = false
+supports_graded_feedback_requests = true
diff --git a/assessment_module_manager/modules.ini b/assessment_module_manager/modules.ini
index cbe4a406c..6baa92caa 100644
--- a/assessment_module_manager/modules.ini
+++ b/assessment_module_manager/modules.ini
@@ -38,7 +38,7 @@ url = http://localhost:5006
type = programming
supports_evaluation = false
supports_non_graded_feedback_requests = false
-supports_graded_feedback_requests = false
+supports_graded_feedback_requests = true
[module_modeling_llm]
url = http://localhost:5008
@@ -47,3 +47,10 @@ supports_evaluation = false
supports_non_graded_feedback_requests = true
supports_graded_feedback_requests = true
+[module_programming_winnowing]
+url = http://localhost:5009
+type = programming
+supports_evaluation = false
+supports_non_graded_feedback_requests = false
+supports_graded_feedback_requests = true
+
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
index 35a9aef9d..09f54753a 100644
--- a/docker-compose.prod.yml
+++ b/docker-compose.prod.yml
@@ -71,6 +71,14 @@ services:
- postgres
image: ls1tum/athena_module_programming_apted:${ATHENA_TAG:-develop}
+ module_programming_winnowing:
+ hostname: module-programming-winnowing
+ env_file:
+ - ${ATHENA_ENV_DIR:-./env_example}/module_programming_winnowing.env
+ depends_on:
+ - postgres
+ image: ls1tum/athena_module_programming_winnowing:${ATHENA_TAG:-develop}
+
module_modeling_llm:
hostname: module-modeling-llm
env_file:
diff --git a/docker-compose.yml b/docker-compose.yml
index 54dcefbeb..64f4b221e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -82,3 +82,11 @@ services:
- llm_core
ports:
- "5008:5008"
+
+ module_programming_winnowing:
+ hostname: module-programming-winnowing
+ build: modules/programming/module_programming_winnowing
+ depends_on:
+ - athena
+ ports:
+ - "5009:5009"
diff --git a/env_example/module_programming_winnowing.env b/env_example/module_programming_winnowing.env
new file mode 100644
index 000000000..209f50dda
--- /dev/null
+++ b/env_example/module_programming_winnowing.env
@@ -0,0 +1,3 @@
+PRODUCTION=1
+SECRET=12345abcdef
+DATABASE_URL=postgresql://postgres:password@postgres:5432/athena
diff --git a/modules/programming/module_example/module_example/__main__.py b/modules/programming/module_example/module_example/__main__.py
index 182f160bb..df64d4369 100644
--- a/modules/programming/module_example/module_example/__main__.py
+++ b/modules/programming/module_example/module_example/__main__.py
@@ -1,5 +1,5 @@
"""
-Entry point for the module_example module.
+Entry point for the module_example.
"""
import random
from typing import List, Any
@@ -13,7 +13,7 @@
@config_schema_provider
class Configuration(BaseModel):
- """Example configuration for the module_example module."""
+ """Example configuration for the module_example."""
debug: bool = Field(False, description="Whether the module is in **debug mode**. This is an example config option.")
diff --git a/modules/programming/module_programming_apted/poetry.lock b/modules/programming/module_programming_apted/poetry.lock
index 2dfe709a1..8bfd637fe 100644
--- a/modules/programming/module_programming_apted/poetry.lock
+++ b/modules/programming/module_programming_apted/poetry.lock
@@ -13,13 +13,13 @@ files = [
[[package]]
name = "anyio"
-version = "4.4.0"
+version = "4.6.2.post1"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"},
- {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"},
+ {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"},
+ {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"},
]
[package.dependencies]
@@ -27,9 +27,9 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
-trio = ["trio (>=0.23)"]
+doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
+trio = ["trio (>=0.26.1)"]
[[package]]
name = "apted"
@@ -44,19 +44,15 @@ files = [
[[package]]
name = "astroid"
-version = "2.15.8"
+version = "3.3.5"
description = "An abstract syntax tree for Python with inference support."
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"},
- {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"},
+ {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"},
+ {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"},
]
-[package.dependencies]
-lazy-object-proxy = ">=1.4.0"
-wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}
-
[[package]]
name = "athena"
version = "1.0.0"
@@ -77,8 +73,8 @@ uvicorn = "^0.23.0"
[package.source]
type = "git"
url = "https://github.com/ls1intum/Athena.git"
-reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
-resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
+reference = "bbb2bb0"
+resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2"
subdirectory = "athena"
[[package]]
@@ -119,13 +115,13 @@ files = [
[[package]]
name = "dill"
-version = "0.3.8"
+version = "0.3.9"
description = "serialize all of Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
- {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
+ {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
]
[package.extras]
@@ -164,19 +160,19 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)"
[[package]]
name = "flake8"
-version = "5.0.4"
+version = "7.1.1"
description = "the modular source code checker: pep8 pyflakes and co"
optional = false
-python-versions = ">=3.6.1"
+python-versions = ">=3.8.1"
files = [
- {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"},
- {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"},
+ {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"},
+ {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"},
]
[package.dependencies]
mccabe = ">=0.7.0,<0.8.0"
-pycodestyle = ">=2.9.0,<2.10.0"
-pyflakes = ">=2.5.0,<2.6.0"
+pycodestyle = ">=2.12.0,<2.13.0"
+pyflakes = ">=3.2.0,<3.3.0"
[[package]]
name = "flake8-polyfill"
@@ -226,69 +222,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit",
[[package]]
name = "greenlet"
-version = "3.0.3"
+version = "3.1.1"
description = "Lightweight in-process concurrent programming"
optional = false
python-versions = ">=3.7"
files = [
- {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
- {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
- {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
- {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
- {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
- {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
- {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
- {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
- {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
- {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
- {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
- {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
- {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
- {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
- {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
- {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"},
+ {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"},
+ {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"},
+ {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"},
+ {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"},
+ {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"},
+ {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"},
+ {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"},
+ {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"},
+ {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"},
+ {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"},
+ {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"},
+ {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"},
+ {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"},
+ {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"},
]
[package.extras]
@@ -352,15 +363,18 @@ socks = ["socksio (==1.*)"]
[[package]]
name = "idna"
-version = "3.8"
+version = "3.10"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.6"
files = [
- {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"},
- {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"},
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
]
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
[[package]]
name = "isort"
version = "5.13.2"
@@ -393,52 +407,6 @@ url = "https://github.com/c2nes/javalang"
reference = "HEAD"
resolved_reference = "566963547575e93d305871d9cb26ce47ff1a036e"
-[[package]]
-name = "lazy-object-proxy"
-version = "1.10.0"
-description = "A fast and thorough lazy object proxy."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
- {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
-]
-
[[package]]
name = "mccabe"
version = "0.7.0"
@@ -452,38 +420,43 @@ files = [
[[package]]
name = "mypy"
-version = "1.11.2"
+version = "1.13.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"},
- {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"},
- {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"},
- {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"},
- {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"},
- {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"},
- {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"},
- {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"},
- {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"},
- {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"},
- {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"},
- {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"},
- {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"},
- {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"},
- {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"},
- {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"},
- {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"},
- {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"},
- {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
+ {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"},
+ {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"},
+ {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"},
+ {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"},
+ {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"},
+ {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"},
+ {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"},
+ {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"},
+ {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"},
+ {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"},
+ {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"},
+ {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"},
+ {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"},
+ {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"},
+ {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"},
+ {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"},
+ {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"},
+ {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"},
+ {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"},
+ {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"},
]
[package.dependencies]
@@ -492,6 +465,7 @@ typing-extensions = ">=4.6.0"
[package.extras]
dmypy = ["psutil (>=4.0)"]
+faster-cache = ["orjson"]
install-types = ["pip"]
mypyc = ["setuptools (>=50)"]
reports = ["lxml"]
@@ -509,13 +483,13 @@ files = [
[[package]]
name = "packaging"
-version = "24.1"
+version = "24.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
- {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
]
[[package]]
@@ -534,90 +508,85 @@ flake8-polyfill = ">=1.0.2,<2"
[[package]]
name = "platformdirs"
-version = "4.2.2"
+version = "4.3.6"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
python-versions = ">=3.8"
files = [
- {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
- {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
+ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
+ {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
]
[package.extras]
-docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
-type = ["mypy (>=1.8)"]
+docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"]
+type = ["mypy (>=1.11.2)"]
[[package]]
name = "prospector"
-version = "1.10.3"
+version = "1.13.3"
description = "Prospector is a tool to analyse Python code by aggregating the result of other tools."
optional = false
-python-versions = ">=3.7.2,<4.0"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"},
- {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"},
+ {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"},
+ {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"},
]
[package.dependencies]
dodgy = ">=0.2.1,<0.3.0"
-flake8 = "<6.0.0"
GitPython = ">=3.1.27,<4.0.0"
mccabe = ">=0.7.0,<0.8.0"
packaging = "*"
pep8-naming = ">=0.3.3,<=0.10.0"
pycodestyle = ">=2.9.0"
pydocstyle = ">=2.0.0"
-pyflakes = ">=2.2.0,<3"
-pylint = ">=2.8.3"
+pyflakes = ">=2.2.0"
+pylint = ">=3.0"
pylint-celery = "0.3"
-pylint-django = ">=2.5,<2.6"
+pylint-django = ">=2.6.1"
pylint-flask = "0.6"
-pylint-plugin-utils = ">=0.7,<0.8"
PyYAML = "*"
-requirements-detector = ">=1.2.0"
+requirements-detector = ">=1.3.2"
setoptconf-tmp = ">=0.3.1,<0.4.0"
toml = ">=0.10.2,<0.11.0"
[package.extras]
with-bandit = ["bandit (>=1.5.1)"]
-with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"]
+with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"]
with-mypy = ["mypy (>=0.600)"]
with-pyright = ["pyright (>=1.1.3)"]
with-pyroma = ["pyroma (>=2.4)"]
+with-ruff = ["ruff"]
with-vulture = ["vulture (>=1.5)"]
[[package]]
name = "psycopg2"
-version = "2.9.9"
+version = "2.9.10"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"},
- {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"},
- {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"},
- {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"},
- {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"},
- {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"},
- {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"},
- {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"},
- {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"},
- {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"},
- {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"},
+ {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"},
]
[[package]]
name = "pycodestyle"
-version = "2.9.1"
+version = "2.12.1"
description = "Python style guide checker"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"},
- {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"},
+ {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"},
+ {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"},
]
[[package]]
@@ -698,31 +667,31 @@ toml = ["tomli (>=1.2.3)"]
[[package]]
name = "pyflakes"
-version = "2.5.0"
+version = "3.2.0"
description = "passive checker of Python programs"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"},
- {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"},
+ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"},
+ {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"},
]
[[package]]
name = "pylint"
-version = "2.17.7"
+version = "3.3.2"
description = "python code static checker"
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"},
- {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"},
+ {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"},
+ {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"},
]
[package.dependencies]
-astroid = ">=2.15.8,<=2.17.0-dev0"
+astroid = ">=3.3.5,<=3.4.0-dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""}
-isort = ">=4.2.5,<6"
+isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2.0"
tomlkit = ">=0.10.1"
@@ -748,22 +717,21 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-django"
-version = "2.5.3"
+version = "2.6.1"
description = "A Pylint plugin to help Pylint understand the Django web framework"
optional = false
-python-versions = "*"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"},
- {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"},
+ {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"},
+ {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"},
]
[package.dependencies]
-pylint = ">=2.0,<3"
-pylint-plugin-utils = ">=0.7"
+pylint = ">=3.0,<4"
+pylint-plugin-utils = ">=0.8"
[package.extras]
-for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"]
-with-django = ["Django"]
+with-django = ["Django (>=2.2)"]
[[package]]
name = "pylint-flask"
@@ -780,13 +748,13 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-plugin-utils"
-version = "0.7"
+version = "0.8.2"
description = "Utilities and helpers for writing Pylint plugins"
optional = false
-python-versions = ">=3.6.2"
+python-versions = ">=3.7,<4.0"
files = [
- {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"},
- {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"},
+ {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"},
+ {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"},
]
[package.dependencies]
@@ -856,20 +824,19 @@ files = [
[[package]]
name = "requirements-detector"
-version = "1.2.2"
+version = "1.3.2"
description = "Python tool to find and list requirements of a Python project"
optional = false
-python-versions = ">=3.7,<4.0"
+python-versions = "<4.0,>=3.8"
files = [
- {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"},
- {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"},
+ {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"},
+ {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"},
]
[package.dependencies]
-astroid = ">=2.0,<3.0"
+astroid = ">=3.0,<4.0"
packaging = ">=21.3"
semver = ">=3.0.0,<4.0.0"
-toml = ">=0.10.2,<0.11.0"
[[package]]
name = "semver"
@@ -942,60 +909,68 @@ files = [
[[package]]
name = "sqlalchemy"
-version = "2.0.33"
+version = "2.0.36"
description = "Database Abstraction Library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"},
- {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"},
- {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"},
+ {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"},
+ {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"},
]
[package.dependencies]
@@ -1009,7 +984,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
asyncio = ["greenlet (!=0.4.17)"]
asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
-mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"]
mssql = ["pyodbc"]
mssql-pymssql = ["pymssql"]
mssql-pyodbc = ["pyodbc"]
@@ -1069,13 +1044,13 @@ files = [
[[package]]
name = "types-requests"
-version = "2.32.0.20240712"
+version = "2.32.0.20241016"
description = "Typing stubs for requests"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"},
- {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"},
+ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"},
+ {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"},
]
[package.dependencies]
@@ -1094,13 +1069,13 @@ files = [
[[package]]
name = "urllib3"
-version = "2.2.2"
+version = "2.2.3"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.8"
files = [
- {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
- {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
+ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"},
+ {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"},
]
[package.extras]
@@ -1127,86 +1102,7 @@ h11 = ">=0.8"
[package.extras]
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
-[[package]]
-name = "wrapt"
-version = "1.16.0"
-description = "Module for decorators, wrappers and monkey patching."
-optional = false
-python-versions = ">=3.6"
-files = [
- {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
- {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
- {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
- {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
- {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
- {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
- {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
- {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
- {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
- {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
- {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
- {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
- {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
- {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
- {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
- {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
- {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
- {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
-]
-
[metadata]
lock-version = "2.0"
python-versions = "3.11.*"
-content-hash = "a53e66a0790b33594a57d50f7007016f3c516ba3759b7b85bdfa15a215fc44b1"
+content-hash = "37947358b1074c5e12a32c34b7db21e77ea08ff533f2b01684dcd0821e6499ae"
diff --git a/modules/programming/module_programming_apted/pyproject.toml b/modules/programming/module_programming_apted/pyproject.toml
index ac3ef5ab0..dee26fc11 100644
--- a/modules/programming/module_programming_apted/pyproject.toml
+++ b/modules/programming/module_programming_apted/pyproject.toml
@@ -9,7 +9,7 @@ license = "MIT"
python = "3.11.*"
# if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible.
# athena = { path = "../athena", develop = true }
-athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"}
+athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"}
apted = "^1.0.3"
antlr4-python3-runtime = "^4.13.1"
javalang = {git = "https://github.com/c2nes/javalang"}
diff --git a/modules/programming/module_programming_winnowing/.dockerignore b/modules/programming/module_programming_winnowing/.dockerignore
new file mode 100644
index 000000000..892b6a92a
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/.dockerignore
@@ -0,0 +1,4 @@
+.venv
+.vscode
+__pycache__
+.DS_Store
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/.vscode/settings.json b/modules/programming/module_programming_winnowing/.vscode/settings.json
new file mode 100644
index 000000000..9a77d359f
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+ "python.pythonPath": "./.venv/bin/python",
+ "python.analysis.typeCheckingMode": "basic",
+}
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/Dockerfile b/modules/programming/module_programming_winnowing/Dockerfile
new file mode 100644
index 000000000..a0f0db55a
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/Dockerfile
@@ -0,0 +1,29 @@
+# syntax=docker/dockerfile:1
+
+# This is the Dockerfile for the module_programming_winnowing.
+
+FROM python:3.11
+LABEL org.opencontainers.image.source=https://github.com/ls1intum/Athena
+
+# Environment variable Python in Docker
+ENV PYTHONUNBUFFERED=1
+
+WORKDIR /code
+
+# Poetry
+RUN pip install --no-cache-dir poetry==1.5.0
+
+# Dependencies
+COPY pyproject.toml poetry.lock ./
+# athena module (from the Dockerfile in the athena folder)
+COPY --from=athena /code /athena
+# install dependencies
+RUN poetry config virtualenvs.create true \
+ && poetry config virtualenvs.in-project true \
+ && poetry install --no-interaction --no-ansi
+
+# Project files
+COPY . ./
+
+# poetry scripts don't work here
+CMD poetry run python -m module_*
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/README.md b/modules/programming/module_programming_winnowing/README.md
new file mode 100644
index 000000000..0bed60b25
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/README.md
@@ -0,0 +1,8 @@
+# Start Directly
+`poetry run module`
+
+# Start with Docker
+`docker-compose up --build`
+
+# Start with Docker in Production Mode
+`docker-compose up --env-file .env.production --build`
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module.conf b/modules/programming/module_programming_winnowing/module.conf
new file mode 100644
index 000000000..4de9dda80
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module.conf
@@ -0,0 +1,4 @@
+[module]
+name = module_programming_winnowing
+type = programming
+port = 5009
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py
new file mode 100644
index 000000000..0f9cfd43e
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py
@@ -0,0 +1,171 @@
+"""
+Entry point for the module_programming_winnowing module.
+"""
+import random
+from typing import List, Any, cast
+from pydantic import BaseModel, Field
+
+from athena import app, config_schema_provider, submissions_consumer, submission_selector, feedback_consumer, feedback_provider, evaluation_provider, emit_meta
+from athena.programming import Exercise, Submission, Feedback, get_stored_feedback_suggestions, \
+ count_stored_submissions, get_stored_submissions
+from athena.logger import logger
+from athena.storage import store_exercise, store_submissions, store_feedback, store_feedback_suggestions
+from module_programming_winnowing.convert_code_to_ast.get_feedback_methods import get_feedback_method
+from module_programming_winnowing.feedback_suggestions.feedback_suggestions import create_feedback_suggestions
+from module_programming_winnowing.feedback_suggestions.remove_overlapping import filter_overlapping_suggestions
+from module_programming_winnowing.feedback_suggestions.remove_suspicious import filter_suspicious
+
+
+@config_schema_provider
+class Configuration(BaseModel):
+ """Example configuration for the module_programming_winnowing module."""
+ debug: bool = Field(False, description="Whether the module is in **debug mode**. This is an example config option.")
+
+
+@submissions_consumer
+def receive_submissions(exercise: Exercise, submissions: List[Submission], module_config: Configuration):
+ logger.info("receive_submissions: Received %d submissions for exercise %d", len(submissions), exercise.id)
+ for submission in submissions:
+ logger.info("- Submission %d", submission.id)
+ zip_content = submission.get_zip()
+ # list the files in the zip
+ for file in zip_content.namelist():
+ logger.info(" - %s", file)
+ # Do something with the submissions
+ logger.info("Doing stuff")
+
+ # Example use module config
+ # If you are not using module_config for your module, you can remove it from the function signature
+ logger.info("Config: %s", module_config)
+ if module_config.debug:
+ emit_meta('debug', True)
+ emit_meta('comment', 'You can add any metadata you want here')
+
+ # Add data to exercise
+ exercise.meta["some_data"] = "some_value"
+ logger.info("- Exercise meta: %s", exercise.meta)
+
+ # Add data to submission
+ for submission in submissions:
+ submission.meta["some_data"] = "some_value"
+ logger.info("- Submission %d meta: %s", submission.id, submission.meta)
+
+ store_exercise(exercise)
+ store_submissions(submissions)
+
+
+@submission_selector
+def select_submission(exercise: Exercise, submissions: List[Submission]) -> Submission:
+ logger.info("select_submission: Received %d submissions for exercise %d", len(submissions), exercise.id)
+ for submission in submissions:
+ logger.info("- Submission %d", submission.id)
+ # Do something with the submissions and return the one that should be assessed next
+ return submissions[0]
+
+
+@feedback_consumer
+def process_incoming_feedback(exercise: Exercise, submission: Submission, feedbacks: List[Feedback]):
+ logger.info("process_feedback: Received %d feedbacks for submission %d of exercise %d", len(feedbacks),
+ submission.id, exercise.id)
+ logger.info("process_feedback: Feedbacks: %s", feedbacks)
+
+ programming_language = exercise.programming_language.lower()
+ # Currently only works with Java and Python - can be extended with more languages if the grammar is available
+ if programming_language not in ["java", "python"]:
+ logger.info("The winnowing module currently only works with Java and Python. Not consuming feedback.")
+ return
+
+ # Remove unreferenced feedbacks
+ feedbacks = list(filter(lambda f: f.file_path is not None and f.line_start is not None, feedbacks))
+
+ # Add method metadata to feedbacks
+ feedbacks_with_method = []
+ for feedback in feedbacks:
+ feedback_method = get_feedback_method(submission, feedback, programming_language)
+ if feedback_method is None:
+ # don't consider feedback without a method
+ continue
+ logger.debug("Feedback #%d: Found method %s", feedback.id, feedback_method.name)
+ feedback.meta["method_name"] = feedback_method.name
+ feedback.meta["method_code"] = feedback_method.source_code
+ feedback.meta["method_line_start"] = feedback_method.line_start
+ feedback.meta["method_line_end"] = feedback_method.line_end
+ feedback.meta["method_ast"] = feedback_method.ast
+ feedbacks_with_method.append(feedback)
+ feedbacks = feedbacks_with_method
+
+ # find all submissions for this exercise
+ exercise_submissions = cast(List[Submission], list(get_stored_submissions(exercise.id)))
+
+ # create feedback suggestions
+ logger.info("Creating feedback suggestions for %d feedbacks", len(feedbacks))
+ feedback_suggestions = create_feedback_suggestions(exercise_submissions, feedbacks, programming_language)
+
+ # additionally, store metadata about how impactful each feedback was, i.e. how many suggestions were given based on it
+ for feedback in feedbacks:
+ # count how many suggestions were given based on this feedback
+ feedback.meta["n_feedback_suggestions"] = len(
+ [f for f in feedback_suggestions if f.meta["original_feedback_id"] == feedback.id])
+ # store the information on the suggestions as well for quicker access later
+ for suggestion in feedback_suggestions:
+ if suggestion.meta["original_feedback_id"] == feedback.id:
+ suggestion.meta["n_feedback_suggestions"] = feedback.meta["n_feedback_suggestions"]
+
+ # save to database
+ # type: ignore
+ store_feedback_suggestions(feedback_suggestions)
+ for feedback in feedbacks:
+ store_feedback(feedback)
+
+ logger.debug("Feedbacks processed")
+
+@feedback_provider
+def suggest_feedback(exercise: Exercise, submission: Submission, is_graded: bool, module_config: Configuration) -> List[Feedback]:
+ logger.info("suggest_feedback: Suggestions for submission %d of exercise %d were requested", submission.id,
+ exercise.id)
+ # Do something with the submission and return a list of feedback
+ # ThemisML currently only works with Java
+ if exercise.programming_language.lower() not in ["java", "python"]:
+ logger.info("The Winnowing module currently only works with Java and Python. Returning no suggestions.")
+ return []
+
+ suggested_feedbacks = cast(List[Feedback], list(get_stored_feedback_suggestions(exercise.id, submission.id)))
+ logger.debug("Found %d feedback suggestions (unfiltered)", len(suggested_feedbacks))
+ suggested_feedbacks = filter_suspicious(suggested_feedbacks, count_stored_submissions(exercise.id))
+ logger.debug("Found %d feedback suggestions (removed suspicious suggestions)", len(suggested_feedbacks))
+ suggested_feedbacks = filter_overlapping_suggestions(suggested_feedbacks)
+ logger.debug("Found %d feedback suggestions (removed overlapping suggestions)", len(suggested_feedbacks))
+
+ logger.info("Suggesting %d filtered feedback suggestions", len(suggested_feedbacks))
+ logger.debug("Suggested Feedback suggestions: %s", suggested_feedbacks)
+
+ return suggested_feedbacks
+
+
+# Only if it makes sense for a module (Optional)
+@evaluation_provider
+def evaluate_feedback(exercise: Exercise, submission: Submission, true_feedbacks: List[Feedback], predicted_feedbacks: List[Feedback]) -> Any:
+ logger.info(
+ "evaluate_feedback: Evaluation for submission %d of exercise %d was requested with %d true and %d predicted feedbacks",
+ submission.id, exercise.id, len(true_feedbacks), len(predicted_feedbacks)
+ )
+
+ # Do something with the true and predicted feedback and return the evaluation result
+ # Generate some example evaluation result
+ evaluation_results = []
+ true_feedback_embeddings = [random.random() for _ in true_feedbacks]
+ predicted_feedback_embeddings = [random.random() for _ in predicted_feedbacks]
+ for feedback, embedding in zip(predicted_feedbacks, predicted_feedback_embeddings):
+ feedback_evaluation = {
+ "feedback_id": feedback.id,
+ "embedding": embedding,
+ "has_match": len([t for t in true_feedback_embeddings if abs(t - embedding) < 0.1]) > 0,
+ "correctness": random.random()
+ }
+ evaluation_results.append(feedback_evaluation)
+
+ return evaluation_results
+
+
+if __name__ == "__main__":
+ app.start()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py
new file mode 100644
index 000000000..19dd7d422
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py
@@ -0,0 +1,63 @@
+from antlr4 import CommonTokenStream, InputStream
+from antlr4.tree.Tree import ParseTreeWalker
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Lexer import Python3Lexer
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser
+from module_programming_winnowing.convert_code_to_ast.languages.java import JavaLexer
+from module_programming_winnowing.convert_code_to_ast.languages.java import JavaParser
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3MethodParserListener import \
+ MethodParserListener as PythonMethodParserListener
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaMethodParserListener import \
+ MethodParserListener as JavaMethodParserListener
+
+# Grammars for programming languages have different parse rules
+JAVA_PARSE_RULE = "compilationUnit"
+PYTHON_PARSE_RULE = "file_input"
+
+def parse_java_file(source_code: str):
+ return parse_file(source_code, JavaLexer, JavaParser, JAVA_PARSE_RULE, JavaMethodParserListener)
+
+
+def parse_python_file(source_code: str):
+ return parse_file(source_code, Python3Lexer, Python3Parser, PYTHON_PARSE_RULE, PythonMethodParserListener)
+
+
+def parse_file(source_code, lexer_class, parser_class, parse_rule, listener_class):
+ input_stream = InputStream(source_code)
+ lexer = lexer_class(input_stream)
+ stream = CommonTokenStream(lexer)
+ parser = parser_class(stream)
+ tree = getattr(parser, parse_rule)()
+
+ listener = listener_class(parser)
+ walker = ParseTreeWalker()
+ walker.walk(listener, tree)
+ print(listener.methods)
+
+ return listener.methods.copy()
+
+
+def parse(source_code: str, programming_language: str):
+ if programming_language == "java":
+ return parse_java_file(source_code)
+ if programming_language == "python":
+ return parse_python_file(source_code)
+ raise ValueError(f"Unsupported programming language: {programming_language}")
+
+
+if __name__ == "__main__":
+ # file_path2 = "../test_files/test_java_1.java"
+ # parse_java_file(file_path2)
+
+ code = """def process_numbers(numbers):
+ total = 0
+ for number in numbers:
+ if number % 2 == 1:
+ total += number
+ else:
+ total -= number
+ if total > 0:
+ print("Positive total:", total)
+ else:
+ print("Non-positive total:", total)"""
+ code1 = parse_python_file(code)
+ code2 = parse_python_file(code)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py
new file mode 100644
index 000000000..f1e26a5a8
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py
@@ -0,0 +1,27 @@
+from typing import Optional
+
+from athena.programming import Submission, Feedback
+from module_programming_winnowing.convert_code_to_ast.extract_method_and_ast import parse
+from module_programming_winnowing.convert_code_to_ast.method_node import MethodNode
+from athena.logger import logger
+
+
+def get_feedback_method(submission: Submission, feedback: Feedback, programming_language: str) -> Optional[MethodNode]:
+ """Find method that the feedback is on"""
+ if feedback.file_path is None or feedback.line_start is None:
+ return None
+ try:
+ code = submission.get_code(feedback.file_path)
+ except UnicodeDecodeError:
+ logger.warning("File %s in submission %d is not UTF-8 encoded.", feedback.file_path, submission.id)
+ return None
+ methods = parse(code, programming_language)
+ for m in methods:
+ if m.line_start is None or m.line_end is None:
+ continue
+ # method has to contain all feedback lines
+ if m.line_start <= feedback.line_start:
+ feedback_line_end = feedback.line_end if feedback.line_end is not None else feedback.line_start
+ if m.line_end >= feedback_line_end:
+ return m
+ return None
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py
new file mode 100644
index 000000000..583b82e04
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py
@@ -0,0 +1,133 @@
+from antlr4 import *
+
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaLexer import Java20Lexer
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParserVisitor import Java20ParserVisitor
+
+
+class RemoveVariableNames(Java20ParserVisitor):
+ def visitVariableDeclaratorId(self, ctx):
+ if ctx.Identifier():
+ token = ctx.Identifier().symbol
+ token.text = 'x'
+ return self.visitChildren(ctx)
+
+
+class CustomJavaVisitor(Java20ParserVisitor):
+ def __init__(self):
+ self.loop_count = 0
+ self.if_count = 0
+ self.method_count = 0
+
+ def visitWhileStatement(self, ctx):
+ self.loop_count += 1
+ return self.visitChildren(ctx)
+
+ def visitForStatement(self, ctx):
+ self.loop_count += 1
+ return self.visitChildren(ctx)
+
+ def visitIfStatement(self, ctx):
+ self.if_count += 1
+ return self.visitChildren(ctx)
+
+ def visitMethodDeclaration(self, ctx):
+ self.method_count += 1
+ return self.visitChildren(ctx)
+
+
+def mutate(source_code):
+ input_stream = InputStream(source_code)
+ lexer = Java20Lexer(input_stream)
+ stream = CommonTokenStream(lexer)
+ parser = Java20Parser(stream)
+ tree = parser.compilationUnit()
+
+ # Transform the AST
+ transformer = RemoveVariableNames()
+ transformer.visit(tree)
+
+ return tree
+
+
+level0 = []
+level1 = []
+level2 = []
+
+
+def find_levels(node, parser, level=0):
+ if level == 0:
+ level0.append(node.toStringTree(recog=parser))
+ elif level == 1:
+ level1.append(node.toStringTree(recog=parser))
+ elif level == 2:
+ level2.append(node.toStringTree(recog=parser))
+
+ for child in node.getChildren():
+ if isinstance(child, ParserRuleContext):
+ find_levels(child, parser, level=level + 1)
+
+
+def get_children(node, parser):
+ if isinstance(node, TerminalNode):
+ parent = node.getText()
+ children = []
+ else:
+ parent = node.toStringTree(recog=parser)
+ children = [child.toStringTree(recog=parser) if isinstance(child, ParserRuleContext) else child.getText() for
+ child in node.getChildren()]
+ return parent, children
+
+
+parents1 = []
+parents2 = []
+children1 = []
+children2 = []
+
+
+def get_parent_children_relation(root, parser, level=0):
+ for child in root.getChildren():
+ if isinstance(child, ParserRuleContext):
+ p, c = get_children(child, parser)
+ if level == 0:
+ parents1.append(p)
+ children1.append(c)
+ elif level == 1:
+ parents2.append(p)
+ children2.append(c)
+ get_parent_children_relation(child, parser, level + 1)
+
+
+def analyze(source_code):
+ input_tree = mutate(source_code)
+
+ parser = Java20Parser(CommonTokenStream(Java20Lexer(InputStream(source_code))))
+
+ visitor = CustomJavaVisitor()
+ visitor.visit(input_tree)
+ count_l = visitor.loop_count
+ count_if = visitor.if_count
+ count_f = visitor.method_count
+
+ # Finden der Ebenen
+ find_levels(input_tree, parser)
+
+ # Eltern-Kind-Beziehungen finden
+ get_parent_children_relation(input_tree, parser)
+
+ counts = [count_l, count_if, count_f]
+ levels = [level0, level1, level2]
+
+ return counts, levels
+
+
+if __name__ == "__main__":
+ file_path = """
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, wooorld!");
+ int test = 5;
+ }
+ """
+ counts, levels = analyze(file_path)
+ print(counts, levels)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py
new file mode 100644
index 000000000..6f1da3778
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py
@@ -0,0 +1,815 @@
+# Generated from JavaLexer.g4 by ANTLR 4.13.1
+from antlr4 import *
+from io import StringIO
+import sys
+
+if sys.version_info[1] > 5:
+ from typing import TextIO
+else:
+ from typing.io import TextIO
+
+
+def serializedATN():
+ return [
+ 4, 0, 126, 1264, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7,
+ 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12,
+ 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19,
+ 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25,
+ 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32,
+ 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38,
+ 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45,
+ 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51,
+ 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58,
+ 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64,
+ 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71,
+ 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77,
+ 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84,
+ 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90,
+ 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97,
+ 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103,
+ 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108,
+ 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114,
+ 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119,
+ 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125,
+ 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130,
+ 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136,
+ 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141,
+ 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147,
+ 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152,
+ 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158,
+ 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163,
+ 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169,
+ 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1,
+ 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1,
+ 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1,
+ 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1,
+ 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1,
+ 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1,
+ 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1,
+ 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1,
+ 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1,
+ 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1,
+ 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1,
+ 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1,
+ 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1,
+ 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1,
+ 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1,
+ 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1,
+ 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1,
+ 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1,
+ 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1,
+ 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1,
+ 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1,
+ 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1,
+ 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1,
+ 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1,
+ 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1,
+ 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1,
+ 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1,
+ 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1,
+ 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1,
+ 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1,
+ 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1,
+ 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1,
+ 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1,
+ 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 805, 8, 68, 1,
+ 69, 1, 69, 3, 69, 809, 8, 69, 1, 70, 1, 70, 3, 70, 813, 8, 70, 1, 71, 1, 71, 3, 71, 817,
+ 8, 71, 1, 72, 1, 72, 3, 72, 821, 8, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 3, 74, 828, 8,
+ 74, 1, 74, 1, 74, 1, 74, 3, 74, 833, 8, 74, 3, 74, 835, 8, 74, 1, 75, 1, 75, 3, 75, 839,
+ 8, 75, 1, 75, 3, 75, 842, 8, 75, 1, 76, 1, 76, 3, 76, 846, 8, 76, 1, 77, 1, 77, 1, 78, 4,
+ 78, 851, 8, 78, 11, 78, 12, 78, 852, 1, 79, 1, 79, 3, 79, 857, 8, 79, 1, 80, 4, 80, 860,
+ 8, 80, 11, 80, 12, 80, 861, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 870, 8, 82,
+ 1, 82, 3, 82, 873, 8, 82, 1, 83, 1, 83, 1, 84, 4, 84, 878, 8, 84, 11, 84, 12, 84, 879,
+ 1, 85, 1, 85, 3, 85, 884, 8, 85, 1, 86, 1, 86, 3, 86, 888, 8, 86, 1, 86, 1, 86, 1, 87, 1,
+ 87, 3, 87, 894, 8, 87, 1, 87, 3, 87, 897, 8, 87, 1, 88, 1, 88, 1, 89, 4, 89, 902, 8, 89,
+ 11, 89, 12, 89, 903, 1, 90, 1, 90, 3, 90, 908, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92,
+ 1, 92, 3, 92, 916, 8, 92, 1, 92, 3, 92, 919, 8, 92, 1, 93, 1, 93, 1, 94, 4, 94, 924, 8,
+ 94, 11, 94, 12, 94, 925, 1, 95, 1, 95, 3, 95, 930, 8, 95, 1, 96, 1, 96, 3, 96, 934, 8,
+ 96, 1, 97, 1, 97, 1, 97, 3, 97, 939, 8, 97, 1, 97, 3, 97, 942, 8, 97, 1, 97, 3, 97, 945,
+ 8, 97, 1, 97, 1, 97, 1, 97, 3, 97, 950, 8, 97, 1, 97, 3, 97, 953, 8, 97, 1, 97, 1, 97, 1,
+ 97, 3, 97, 958, 8, 97, 1, 97, 1, 97, 1, 97, 3, 97, 963, 8, 97, 1, 98, 1, 98, 1, 98, 1, 99,
+ 1, 99, 1, 100, 3, 100, 971, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1,
+ 103, 1, 103, 1, 103, 3, 103, 982, 8, 103, 1, 104, 1, 104, 3, 104, 986, 8, 104, 1, 104,
+ 1, 104, 1, 104, 3, 104, 991, 8, 104, 1, 104, 1, 104, 3, 104, 995, 8, 104, 1, 105, 1,
+ 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107,
+ 1, 107, 1, 107, 3, 107, 1011, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108,
+ 1, 108, 1, 108, 3, 108, 1021, 8, 108, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 1027,
+ 8, 110, 1, 110, 1, 110, 1, 111, 4, 111, 1032, 8, 111, 11, 111, 12, 111, 1033, 1, 112,
+ 1, 112, 3, 112, 1038, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 5, 113, 1045,
+ 8, 113, 10, 113, 12, 113, 1048, 9, 113, 1, 113, 1, 113, 5, 113, 1052, 8, 113, 10, 113,
+ 12, 113, 1055, 9, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114,
+ 3, 114, 1065, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115,
+ 1, 115, 1, 115, 1, 115, 3, 115, 1078, 8, 115, 1, 116, 1, 116, 1, 117, 1, 117, 4, 117,
+ 1084, 8, 117, 11, 117, 12, 117, 1085, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118,
+ 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122,
+ 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127,
+ 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131,
+ 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137,
+ 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141,
+ 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144,
+ 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 149,
+ 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154,
+ 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158,
+ 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162,
+ 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165,
+ 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 5, 166, 1221, 8, 166, 10, 166, 12, 166,
+ 1224, 9, 166, 1, 167, 3, 167, 1227, 8, 167, 1, 168, 1, 168, 3, 168, 1231, 8, 168, 1,
+ 169, 4, 169, 1234, 8, 169, 11, 169, 12, 169, 1235, 1, 169, 1, 169, 1, 170, 1, 170,
+ 1, 170, 1, 170, 5, 170, 1244, 8, 170, 10, 170, 12, 170, 1247, 9, 170, 1, 170, 1, 170,
+ 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 5, 171, 1258, 8, 171, 10, 171,
+ 12, 171, 1261, 9, 171, 1, 171, 1, 171, 1, 1245, 0, 172, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11,
+ 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17,
+ 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28,
+ 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39,
+ 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50,
+ 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119,
+ 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69,
+ 139, 0, 141, 0, 143, 0, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, 0, 157, 0, 159,
+ 0, 161, 0, 163, 0, 165, 0, 167, 0, 169, 0, 171, 0, 173, 0, 175, 0, 177, 0, 179, 0, 181,
+ 0, 183, 0, 185, 0, 187, 0, 189, 0, 191, 0, 193, 70, 195, 0, 197, 0, 199, 0, 201, 0, 203,
+ 0, 205, 0, 207, 0, 209, 0, 211, 0, 213, 0, 215, 71, 217, 72, 219, 0, 221, 73, 223, 0,
+ 225, 0, 227, 74, 229, 0, 231, 0, 233, 0, 235, 0, 237, 75, 239, 76, 241, 77, 243, 78,
+ 245, 79, 247, 80, 249, 81, 251, 82, 253, 83, 255, 84, 257, 85, 259, 86, 261, 87, 263,
+ 88, 265, 89, 267, 90, 269, 91, 271, 92, 273, 93, 275, 94, 277, 95, 279, 96, 281, 97,
+ 283, 98, 285, 99, 287, 100, 289, 101, 291, 102, 293, 103, 295, 104, 297, 105, 299,
+ 106, 301, 107, 303, 108, 305, 109, 307, 110, 309, 111, 311, 112, 313, 113, 315,
+ 114, 317, 115, 319, 116, 321, 117, 323, 118, 325, 119, 327, 120, 329, 121, 331,
+ 122, 333, 123, 335, 0, 337, 0, 339, 124, 341, 125, 343, 126, 1, 0, 21, 2, 0, 76, 76,
+ 108, 108, 1, 0, 49, 57, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48,
+ 55, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 4,
+ 0, 68, 68, 70, 70, 100, 100, 102, 102, 2, 0, 80, 80, 112, 112, 4, 0, 10, 10, 13, 13,
+ 39, 39, 92, 92, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10,
+ 13, 13, 3, 0, 8, 8, 13, 13, 46, 46, 8, 0, 34, 34, 39, 39, 92, 92, 98, 98, 102, 102, 110,
+ 110, 114, 114, 116, 116, 1, 0, 48, 51, 402, 0, 36, 36, 65, 90, 95, 95, 97, 122, 162,
+ 165, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736,
+ 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904,
+ 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369,
+ 1369, 1377, 1415, 1423, 1423, 1488, 1514, 1520, 1522, 1547, 1547, 1568, 1610,
+ 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791,
+ 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037,
+ 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144,
+ 2154, 2208, 2228, 2230, 2237, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401,
+ 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486,
+ 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2547, 2555, 2556,
+ 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616,
+ 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728,
+ 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2801,
+ 2801, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867,
+ 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949,
+ 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980,
+ 2984, 2986, 2990, 3001, 3024, 3024, 3065, 3065, 3077, 3084, 3086, 3088, 3090,
+ 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3168, 3169, 3200, 3200, 3205, 3212,
+ 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296,
+ 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406,
+ 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517,
+ 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3647, 3654, 3713, 3714, 3716, 3716,
+ 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749,
+ 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780,
+ 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096,
+ 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208,
+ 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348,
+ 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749,
+ 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824,
+ 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740,
+ 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5900, 5902, 5905, 5920,
+ 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6107, 6108,
+ 6176, 6263, 6272, 6276, 6279, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480,
+ 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823,
+ 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245,
+ 7247, 7258, 7293, 7296, 7304, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615,
+ 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027,
+ 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132,
+ 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255,
+ 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8352, 8383, 8450, 8450,
+ 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488,
+ 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584,
+ 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520,
+ 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670,
+ 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720,
+ 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329,
+ 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540,
+ 12543, 12549, 12590, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893,
+ 19968, 40938, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538,
+ 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888,
+ 42891, 42926, 42928, 42935, 42999, 43009, 43011, 43013, 43015, 43018, 43020,
+ 43042, 43064, 43064, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259,
+ 43261, 43261, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471,
+ 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586,
+ 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701,
+ 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754,
+ 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816,
+ 43822, 43824, 43866, 43868, 43877, 43888, 44002, 44032, 55203, 55216, 55238,
+ 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285,
+ 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321,
+ 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008,
+ 65020, 65075, 65076, 65101, 65103, 65129, 65129, 65136, 65140, 65142, 65276,
+ 65284, 65284, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474,
+ 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65504, 65505, 65509, 65510,
+ 228, 0, 48, 57, 127, 159, 173, 173, 768, 879, 1155, 1159, 1425, 1469, 1471, 1471,
+ 1473, 1474, 1476, 1477, 1479, 1479, 1536, 1541, 1552, 1562, 1564, 1564, 1611,
+ 1641, 1648, 1648, 1750, 1757, 1759, 1764, 1767, 1768, 1770, 1773, 1776, 1785,
+ 1807, 1807, 1809, 1809, 1840, 1866, 1958, 1968, 1984, 1993, 2027, 2035, 2070,
+ 2073, 2075, 2083, 2085, 2087, 2089, 2093, 2137, 2139, 2260, 2307, 2362, 2364,
+ 2366, 2383, 2385, 2391, 2402, 2403, 2406, 2415, 2433, 2435, 2492, 2492, 2494,
+ 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2530, 2531, 2534, 2543, 2561, 2563,
+ 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2662, 2673, 2677,
+ 2677, 2689, 2691, 2748, 2748, 2750, 2757, 2759, 2761, 2763, 2765, 2786, 2787,
+ 2790, 2799, 2810, 2815, 2817, 2819, 2876, 2876, 2878, 2884, 2887, 2888, 2891,
+ 2893, 2902, 2903, 2914, 2915, 2918, 2927, 2946, 2946, 3006, 3010, 3014, 3016,
+ 3018, 3021, 3031, 3031, 3046, 3055, 3072, 3075, 3134, 3140, 3142, 3144, 3146,
+ 3149, 3157, 3158, 3170, 3171, 3174, 3183, 3201, 3203, 3260, 3260, 3262, 3268,
+ 3270, 3272, 3274, 3277, 3285, 3286, 3298, 3299, 3302, 3311, 3328, 3331, 3387,
+ 3388, 3390, 3396, 3398, 3400, 3402, 3405, 3415, 3415, 3426, 3427, 3430, 3439,
+ 3458, 3459, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570,
+ 3571, 3633, 3633, 3636, 3642, 3655, 3662, 3664, 3673, 3761, 3761, 3764, 3769,
+ 3771, 3772, 3784, 3789, 3792, 3801, 3864, 3865, 3872, 3881, 3893, 3893, 3895,
+ 3895, 3897, 3897, 3902, 3903, 3953, 3972, 3974, 3975, 3981, 3991, 3993, 4028,
+ 4038, 4038, 4139, 4158, 4160, 4169, 4182, 4185, 4190, 4192, 4194, 4196, 4199,
+ 4205, 4209, 4212, 4226, 4237, 4239, 4253, 4957, 4959, 5906, 5908, 5938, 5940,
+ 5970, 5971, 6002, 6003, 6068, 6099, 6109, 6109, 6112, 6121, 6155, 6158, 6160,
+ 6169, 6277, 6278, 6313, 6313, 6432, 6443, 6448, 6459, 6470, 6479, 6608, 6617,
+ 6679, 6683, 6741, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6832, 6845, 6912,
+ 6916, 6964, 6980, 6992, 7001, 7019, 7027, 7040, 7042, 7073, 7085, 7088, 7097,
+ 7142, 7155, 7204, 7223, 7232, 7241, 7248, 7257, 7376, 7378, 7380, 7400, 7405,
+ 7405, 7410, 7412, 7415, 7417, 7616, 7673, 7675, 7679, 8203, 8207, 8234, 8238,
+ 8288, 8292, 8294, 8303, 8400, 8412, 8417, 8417, 8421, 8432, 11503, 11505, 11647,
+ 11647, 11744, 11775, 12330, 12335, 12441, 12442, 42528, 42537, 42607, 42607,
+ 42612, 42621, 42654, 42655, 42736, 42737, 43010, 43010, 43014, 43014, 43019,
+ 43019, 43043, 43047, 43136, 43137, 43188, 43205, 43216, 43225, 43232, 43249,
+ 43264, 43273, 43302, 43309, 43335, 43347, 43392, 43395, 43443, 43456, 43472,
+ 43481, 43493, 43493, 43504, 43513, 43561, 43574, 43587, 43587, 43596, 43597,
+ 43600, 43609, 43643, 43645, 43696, 43696, 43698, 43700, 43703, 43704, 43710,
+ 43711, 43713, 43713, 43755, 43759, 43765, 43766, 44003, 44010, 44012, 44013,
+ 44016, 44025, 64286, 64286, 65024, 65039, 65056, 65071, 65279, 65279, 65296,
+ 65305, 65529, 65531, 3, 0, 9, 10, 12, 13, 32, 32, 1278, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0,
+ 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0,
+ 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0,
+ 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0,
+ 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0,
+ 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0,
+ 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0,
+ 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0,
+ 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0,
+ 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0,
+ 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0,
+ 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113,
+ 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0,
+ 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1,
+ 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0,
+ 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 237, 1, 0,
+ 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247,
+ 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0,
+ 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1,
+ 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0,
+ 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0,
+ 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293,
+ 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0,
+ 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1,
+ 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0,
+ 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0,
+ 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343,
+ 1, 0, 0, 0, 1, 345, 1, 0, 0, 0, 3, 353, 1, 0, 0, 0, 5, 360, 1, 0, 0, 0, 7, 371, 1, 0, 0, 0,
+ 9, 374, 1, 0, 0, 0, 11, 379, 1, 0, 0, 0, 13, 385, 1, 0, 0, 0, 15, 393, 1, 0, 0, 0, 17, 402,
+ 1, 0, 0, 0, 19, 409, 1, 0, 0, 0, 21, 418, 1, 0, 0, 0, 23, 425, 1, 0, 0, 0, 25, 428, 1, 0,
+ 0, 0, 27, 439, 1, 0, 0, 0, 29, 444, 1, 0, 0, 0, 31, 448, 1, 0, 0, 0, 33, 453, 1, 0, 0, 0,
+ 35, 459, 1, 0, 0, 0, 37, 468, 1, 0, 0, 0, 39, 475, 1, 0, 0, 0, 41, 483, 1, 0, 0, 0, 43, 489,
+ 1, 0, 0, 0, 45, 494, 1, 0, 0, 0, 47, 499, 1, 0, 0, 0, 49, 505, 1, 0, 0, 0, 51, 510, 1, 0,
+ 0, 0, 53, 516, 1, 0, 0, 0, 55, 522, 1, 0, 0, 0, 57, 531, 1, 0, 0, 0, 59, 539, 1, 0, 0, 0,
+ 61, 542, 1, 0, 0, 0, 63, 549, 1, 0, 0, 0, 65, 554, 1, 0, 0, 0, 67, 559, 1, 0, 0, 0, 69, 567,
+ 1, 0, 0, 0, 71, 573, 1, 0, 0, 0, 73, 581, 1, 0, 0, 0, 75, 587, 1, 0, 0, 0, 77, 591, 1, 0,
+ 0, 0, 79, 594, 1, 0, 0, 0, 81, 599, 1, 0, 0, 0, 83, 610, 1, 0, 0, 0, 85, 617, 1, 0, 0, 0,
+ 87, 628, 1, 0, 0, 0, 89, 632, 1, 0, 0, 0, 91, 642, 1, 0, 0, 0, 93, 647, 1, 0, 0, 0, 95, 654,
+ 1, 0, 0, 0, 97, 658, 1, 0, 0, 0, 99, 666, 1, 0, 0, 0, 101, 674, 1, 0, 0, 0, 103, 684, 1,
+ 0, 0, 0, 105, 691, 1, 0, 0, 0, 107, 698, 1, 0, 0, 0, 109, 704, 1, 0, 0, 0, 111, 711, 1,
+ 0, 0, 0, 113, 720, 1, 0, 0, 0, 115, 726, 1, 0, 0, 0, 117, 733, 1, 0, 0, 0, 119, 746, 1,
+ 0, 0, 0, 121, 751, 1, 0, 0, 0, 123, 757, 1, 0, 0, 0, 125, 764, 1, 0, 0, 0, 127, 774, 1,
+ 0, 0, 0, 129, 778, 1, 0, 0, 0, 131, 783, 1, 0, 0, 0, 133, 792, 1, 0, 0, 0, 135, 798, 1,
+ 0, 0, 0, 137, 804, 1, 0, 0, 0, 139, 806, 1, 0, 0, 0, 141, 810, 1, 0, 0, 0, 143, 814, 1,
+ 0, 0, 0, 145, 818, 1, 0, 0, 0, 147, 822, 1, 0, 0, 0, 149, 834, 1, 0, 0, 0, 151, 836, 1,
+ 0, 0, 0, 153, 845, 1, 0, 0, 0, 155, 847, 1, 0, 0, 0, 157, 850, 1, 0, 0, 0, 159, 856, 1,
+ 0, 0, 0, 161, 859, 1, 0, 0, 0, 163, 863, 1, 0, 0, 0, 165, 867, 1, 0, 0, 0, 167, 874, 1,
+ 0, 0, 0, 169, 877, 1, 0, 0, 0, 171, 883, 1, 0, 0, 0, 173, 885, 1, 0, 0, 0, 175, 891, 1,
+ 0, 0, 0, 177, 898, 1, 0, 0, 0, 179, 901, 1, 0, 0, 0, 181, 907, 1, 0, 0, 0, 183, 909, 1,
+ 0, 0, 0, 185, 913, 1, 0, 0, 0, 187, 920, 1, 0, 0, 0, 189, 923, 1, 0, 0, 0, 191, 929, 1,
+ 0, 0, 0, 193, 933, 1, 0, 0, 0, 195, 962, 1, 0, 0, 0, 197, 964, 1, 0, 0, 0, 199, 967, 1,
+ 0, 0, 0, 201, 970, 1, 0, 0, 0, 203, 974, 1, 0, 0, 0, 205, 976, 1, 0, 0, 0, 207, 978, 1,
+ 0, 0, 0, 209, 994, 1, 0, 0, 0, 211, 996, 1, 0, 0, 0, 213, 999, 1, 0, 0, 0, 215, 1010, 1,
+ 0, 0, 0, 217, 1020, 1, 0, 0, 0, 219, 1022, 1, 0, 0, 0, 221, 1024, 1, 0, 0, 0, 223, 1031,
+ 1, 0, 0, 0, 225, 1037, 1, 0, 0, 0, 227, 1039, 1, 0, 0, 0, 229, 1064, 1, 0, 0, 0, 231, 1077,
+ 1, 0, 0, 0, 233, 1079, 1, 0, 0, 0, 235, 1081, 1, 0, 0, 0, 237, 1092, 1, 0, 0, 0, 239, 1097,
+ 1, 0, 0, 0, 241, 1099, 1, 0, 0, 0, 243, 1101, 1, 0, 0, 0, 245, 1103, 1, 0, 0, 0, 247, 1105,
+ 1, 0, 0, 0, 249, 1107, 1, 0, 0, 0, 251, 1109, 1, 0, 0, 0, 253, 1111, 1, 0, 0, 0, 255, 1113,
+ 1, 0, 0, 0, 257, 1115, 1, 0, 0, 0, 259, 1119, 1, 0, 0, 0, 261, 1121, 1, 0, 0, 0, 263, 1124,
+ 1, 0, 0, 0, 265, 1126, 1, 0, 0, 0, 267, 1128, 1, 0, 0, 0, 269, 1130, 1, 0, 0, 0, 271, 1132,
+ 1, 0, 0, 0, 273, 1134, 1, 0, 0, 0, 275, 1136, 1, 0, 0, 0, 277, 1138, 1, 0, 0, 0, 279, 1141,
+ 1, 0, 0, 0, 281, 1144, 1, 0, 0, 0, 283, 1147, 1, 0, 0, 0, 285, 1150, 1, 0, 0, 0, 287, 1153,
+ 1, 0, 0, 0, 289, 1156, 1, 0, 0, 0, 291, 1159, 1, 0, 0, 0, 293, 1162, 1, 0, 0, 0, 295, 1165,
+ 1, 0, 0, 0, 297, 1167, 1, 0, 0, 0, 299, 1169, 1, 0, 0, 0, 301, 1171, 1, 0, 0, 0, 303, 1173,
+ 1, 0, 0, 0, 305, 1175, 1, 0, 0, 0, 307, 1177, 1, 0, 0, 0, 309, 1179, 1, 0, 0, 0, 311, 1181,
+ 1, 0, 0, 0, 313, 1184, 1, 0, 0, 0, 315, 1187, 1, 0, 0, 0, 317, 1190, 1, 0, 0, 0, 319, 1193,
+ 1, 0, 0, 0, 321, 1196, 1, 0, 0, 0, 323, 1199, 1, 0, 0, 0, 325, 1202, 1, 0, 0, 0, 327, 1205,
+ 1, 0, 0, 0, 329, 1209, 1, 0, 0, 0, 331, 1213, 1, 0, 0, 0, 333, 1218, 1, 0, 0, 0, 335, 1226,
+ 1, 0, 0, 0, 337, 1230, 1, 0, 0, 0, 339, 1233, 1, 0, 0, 0, 341, 1239, 1, 0, 0, 0, 343, 1253,
+ 1, 0, 0, 0, 345, 346, 5, 101, 0, 0, 346, 347, 5, 120, 0, 0, 347, 348, 5, 112, 0, 0, 348,
+ 349, 5, 111, 0, 0, 349, 350, 5, 114, 0, 0, 350, 351, 5, 116, 0, 0, 351, 352, 5, 115,
+ 0, 0, 352, 2, 1, 0, 0, 0, 353, 354, 5, 109, 0, 0, 354, 355, 5, 111, 0, 0, 355, 356, 5,
+ 100, 0, 0, 356, 357, 5, 117, 0, 0, 357, 358, 5, 108, 0, 0, 358, 359, 5, 101, 0, 0, 359,
+ 4, 1, 0, 0, 0, 360, 361, 5, 110, 0, 0, 361, 362, 5, 111, 0, 0, 362, 363, 5, 110, 0, 0,
+ 363, 364, 5, 45, 0, 0, 364, 365, 5, 115, 0, 0, 365, 366, 5, 101, 0, 0, 366, 367, 5, 97,
+ 0, 0, 367, 368, 5, 108, 0, 0, 368, 369, 5, 101, 0, 0, 369, 370, 5, 100, 0, 0, 370, 6,
+ 1, 0, 0, 0, 371, 372, 5, 60, 0, 0, 372, 373, 5, 62, 0, 0, 373, 8, 1, 0, 0, 0, 374, 375,
+ 5, 111, 0, 0, 375, 376, 5, 112, 0, 0, 376, 377, 5, 101, 0, 0, 377, 378, 5, 110, 0, 0,
+ 378, 10, 1, 0, 0, 0, 379, 380, 5, 111, 0, 0, 380, 381, 5, 112, 0, 0, 381, 382, 5, 101,
+ 0, 0, 382, 383, 5, 110, 0, 0, 383, 384, 5, 115, 0, 0, 384, 12, 1, 0, 0, 0, 385, 386, 5,
+ 112, 0, 0, 386, 387, 5, 101, 0, 0, 387, 388, 5, 114, 0, 0, 388, 389, 5, 109, 0, 0, 389,
+ 390, 5, 105, 0, 0, 390, 391, 5, 116, 0, 0, 391, 392, 5, 115, 0, 0, 392, 14, 1, 0, 0, 0,
+ 393, 394, 5, 112, 0, 0, 394, 395, 5, 114, 0, 0, 395, 396, 5, 111, 0, 0, 396, 397, 5,
+ 118, 0, 0, 397, 398, 5, 105, 0, 0, 398, 399, 5, 100, 0, 0, 399, 400, 5, 101, 0, 0, 400,
+ 401, 5, 115, 0, 0, 401, 16, 1, 0, 0, 0, 402, 403, 5, 114, 0, 0, 403, 404, 5, 101, 0, 0,
+ 404, 405, 5, 99, 0, 0, 405, 406, 5, 111, 0, 0, 406, 407, 5, 114, 0, 0, 407, 408, 5, 100,
+ 0, 0, 408, 18, 1, 0, 0, 0, 409, 410, 5, 114, 0, 0, 410, 411, 5, 101, 0, 0, 411, 412, 5,
+ 113, 0, 0, 412, 413, 5, 117, 0, 0, 413, 414, 5, 105, 0, 0, 414, 415, 5, 114, 0, 0, 415,
+ 416, 5, 101, 0, 0, 416, 417, 5, 115, 0, 0, 417, 20, 1, 0, 0, 0, 418, 419, 5, 115, 0, 0,
+ 419, 420, 5, 101, 0, 0, 420, 421, 5, 97, 0, 0, 421, 422, 5, 108, 0, 0, 422, 423, 5, 101,
+ 0, 0, 423, 424, 5, 100, 0, 0, 424, 22, 1, 0, 0, 0, 425, 426, 5, 116, 0, 0, 426, 427, 5,
+ 111, 0, 0, 427, 24, 1, 0, 0, 0, 428, 429, 5, 116, 0, 0, 429, 430, 5, 114, 0, 0, 430, 431,
+ 5, 97, 0, 0, 431, 432, 5, 110, 0, 0, 432, 433, 5, 115, 0, 0, 433, 434, 5, 105, 0, 0, 434,
+ 435, 5, 116, 0, 0, 435, 436, 5, 105, 0, 0, 436, 437, 5, 118, 0, 0, 437, 438, 5, 101,
+ 0, 0, 438, 26, 1, 0, 0, 0, 439, 440, 5, 117, 0, 0, 440, 441, 5, 115, 0, 0, 441, 442, 5,
+ 101, 0, 0, 442, 443, 5, 115, 0, 0, 443, 28, 1, 0, 0, 0, 444, 445, 5, 118, 0, 0, 445, 446,
+ 5, 97, 0, 0, 446, 447, 5, 114, 0, 0, 447, 30, 1, 0, 0, 0, 448, 449, 5, 119, 0, 0, 449,
+ 450, 5, 105, 0, 0, 450, 451, 5, 116, 0, 0, 451, 452, 5, 104, 0, 0, 452, 32, 1, 0, 0, 0,
+ 453, 454, 5, 121, 0, 0, 454, 455, 5, 105, 0, 0, 455, 456, 5, 101, 0, 0, 456, 457, 5,
+ 108, 0, 0, 457, 458, 5, 100, 0, 0, 458, 34, 1, 0, 0, 0, 459, 460, 5, 97, 0, 0, 460, 461,
+ 5, 98, 0, 0, 461, 462, 5, 115, 0, 0, 462, 463, 5, 116, 0, 0, 463, 464, 5, 114, 0, 0, 464,
+ 465, 5, 97, 0, 0, 465, 466, 5, 99, 0, 0, 466, 467, 5, 116, 0, 0, 467, 36, 1, 0, 0, 0, 468,
+ 469, 5, 97, 0, 0, 469, 470, 5, 115, 0, 0, 470, 471, 5, 115, 0, 0, 471, 472, 5, 101, 0,
+ 0, 472, 473, 5, 114, 0, 0, 473, 474, 5, 116, 0, 0, 474, 38, 1, 0, 0, 0, 475, 476, 5, 98,
+ 0, 0, 476, 477, 5, 111, 0, 0, 477, 478, 5, 111, 0, 0, 478, 479, 5, 108, 0, 0, 479, 480,
+ 5, 101, 0, 0, 480, 481, 5, 97, 0, 0, 481, 482, 5, 110, 0, 0, 482, 40, 1, 0, 0, 0, 483,
+ 484, 5, 98, 0, 0, 484, 485, 5, 114, 0, 0, 485, 486, 5, 101, 0, 0, 486, 487, 5, 97, 0,
+ 0, 487, 488, 5, 107, 0, 0, 488, 42, 1, 0, 0, 0, 489, 490, 5, 98, 0, 0, 490, 491, 5, 121,
+ 0, 0, 491, 492, 5, 116, 0, 0, 492, 493, 5, 101, 0, 0, 493, 44, 1, 0, 0, 0, 494, 495, 5,
+ 99, 0, 0, 495, 496, 5, 97, 0, 0, 496, 497, 5, 115, 0, 0, 497, 498, 5, 101, 0, 0, 498,
+ 46, 1, 0, 0, 0, 499, 500, 5, 99, 0, 0, 500, 501, 5, 97, 0, 0, 501, 502, 5, 116, 0, 0, 502,
+ 503, 5, 99, 0, 0, 503, 504, 5, 104, 0, 0, 504, 48, 1, 0, 0, 0, 505, 506, 5, 99, 0, 0, 506,
+ 507, 5, 104, 0, 0, 507, 508, 5, 97, 0, 0, 508, 509, 5, 114, 0, 0, 509, 50, 1, 0, 0, 0,
+ 510, 511, 5, 99, 0, 0, 511, 512, 5, 108, 0, 0, 512, 513, 5, 97, 0, 0, 513, 514, 5, 115,
+ 0, 0, 514, 515, 5, 115, 0, 0, 515, 52, 1, 0, 0, 0, 516, 517, 5, 99, 0, 0, 517, 518, 5,
+ 111, 0, 0, 518, 519, 5, 110, 0, 0, 519, 520, 5, 115, 0, 0, 520, 521, 5, 116, 0, 0, 521,
+ 54, 1, 0, 0, 0, 522, 523, 5, 99, 0, 0, 523, 524, 5, 111, 0, 0, 524, 525, 5, 110, 0, 0,
+ 525, 526, 5, 116, 0, 0, 526, 527, 5, 105, 0, 0, 527, 528, 5, 110, 0, 0, 528, 529, 5,
+ 117, 0, 0, 529, 530, 5, 101, 0, 0, 530, 56, 1, 0, 0, 0, 531, 532, 5, 100, 0, 0, 532, 533,
+ 5, 101, 0, 0, 533, 534, 5, 102, 0, 0, 534, 535, 5, 97, 0, 0, 535, 536, 5, 117, 0, 0, 536,
+ 537, 5, 108, 0, 0, 537, 538, 5, 116, 0, 0, 538, 58, 1, 0, 0, 0, 539, 540, 5, 100, 0, 0,
+ 540, 541, 5, 111, 0, 0, 541, 60, 1, 0, 0, 0, 542, 543, 5, 100, 0, 0, 543, 544, 5, 111,
+ 0, 0, 544, 545, 5, 117, 0, 0, 545, 546, 5, 98, 0, 0, 546, 547, 5, 108, 0, 0, 547, 548,
+ 5, 101, 0, 0, 548, 62, 1, 0, 0, 0, 549, 550, 5, 101, 0, 0, 550, 551, 5, 108, 0, 0, 551,
+ 552, 5, 115, 0, 0, 552, 553, 5, 101, 0, 0, 553, 64, 1, 0, 0, 0, 554, 555, 5, 101, 0, 0,
+ 555, 556, 5, 110, 0, 0, 556, 557, 5, 117, 0, 0, 557, 558, 5, 109, 0, 0, 558, 66, 1, 0,
+ 0, 0, 559, 560, 5, 101, 0, 0, 560, 561, 5, 120, 0, 0, 561, 562, 5, 116, 0, 0, 562, 563,
+ 5, 101, 0, 0, 563, 564, 5, 110, 0, 0, 564, 565, 5, 100, 0, 0, 565, 566, 5, 115, 0, 0,
+ 566, 68, 1, 0, 0, 0, 567, 568, 5, 102, 0, 0, 568, 569, 5, 105, 0, 0, 569, 570, 5, 110,
+ 0, 0, 570, 571, 5, 97, 0, 0, 571, 572, 5, 108, 0, 0, 572, 70, 1, 0, 0, 0, 573, 574, 5,
+ 102, 0, 0, 574, 575, 5, 105, 0, 0, 575, 576, 5, 110, 0, 0, 576, 577, 5, 97, 0, 0, 577,
+ 578, 5, 108, 0, 0, 578, 579, 5, 108, 0, 0, 579, 580, 5, 121, 0, 0, 580, 72, 1, 0, 0, 0,
+ 581, 582, 5, 102, 0, 0, 582, 583, 5, 108, 0, 0, 583, 584, 5, 111, 0, 0, 584, 585, 5,
+ 97, 0, 0, 585, 586, 5, 116, 0, 0, 586, 74, 1, 0, 0, 0, 587, 588, 5, 102, 0, 0, 588, 589,
+ 5, 111, 0, 0, 589, 590, 5, 114, 0, 0, 590, 76, 1, 0, 0, 0, 591, 592, 5, 105, 0, 0, 592,
+ 593, 5, 102, 0, 0, 593, 78, 1, 0, 0, 0, 594, 595, 5, 103, 0, 0, 595, 596, 5, 111, 0, 0,
+ 596, 597, 5, 116, 0, 0, 597, 598, 5, 111, 0, 0, 598, 80, 1, 0, 0, 0, 599, 600, 5, 105,
+ 0, 0, 600, 601, 5, 109, 0, 0, 601, 602, 5, 112, 0, 0, 602, 603, 5, 108, 0, 0, 603, 604,
+ 5, 101, 0, 0, 604, 605, 5, 109, 0, 0, 605, 606, 5, 101, 0, 0, 606, 607, 5, 110, 0, 0,
+ 607, 608, 5, 116, 0, 0, 608, 609, 5, 115, 0, 0, 609, 82, 1, 0, 0, 0, 610, 611, 5, 105,
+ 0, 0, 611, 612, 5, 109, 0, 0, 612, 613, 5, 112, 0, 0, 613, 614, 5, 111, 0, 0, 614, 615,
+ 5, 114, 0, 0, 615, 616, 5, 116, 0, 0, 616, 84, 1, 0, 0, 0, 617, 618, 5, 105, 0, 0, 618,
+ 619, 5, 110, 0, 0, 619, 620, 5, 115, 0, 0, 620, 621, 5, 116, 0, 0, 621, 622, 5, 97, 0,
+ 0, 622, 623, 5, 110, 0, 0, 623, 624, 5, 99, 0, 0, 624, 625, 5, 101, 0, 0, 625, 626, 5,
+ 111, 0, 0, 626, 627, 5, 102, 0, 0, 627, 86, 1, 0, 0, 0, 628, 629, 5, 105, 0, 0, 629, 630,
+ 5, 110, 0, 0, 630, 631, 5, 116, 0, 0, 631, 88, 1, 0, 0, 0, 632, 633, 5, 105, 0, 0, 633,
+ 634, 5, 110, 0, 0, 634, 635, 5, 116, 0, 0, 635, 636, 5, 101, 0, 0, 636, 637, 5, 114,
+ 0, 0, 637, 638, 5, 102, 0, 0, 638, 639, 5, 97, 0, 0, 639, 640, 5, 99, 0, 0, 640, 641,
+ 5, 101, 0, 0, 641, 90, 1, 0, 0, 0, 642, 643, 5, 108, 0, 0, 643, 644, 5, 111, 0, 0, 644,
+ 645, 5, 110, 0, 0, 645, 646, 5, 103, 0, 0, 646, 92, 1, 0, 0, 0, 647, 648, 5, 110, 0, 0,
+ 648, 649, 5, 97, 0, 0, 649, 650, 5, 116, 0, 0, 650, 651, 5, 105, 0, 0, 651, 652, 5, 118,
+ 0, 0, 652, 653, 5, 101, 0, 0, 653, 94, 1, 0, 0, 0, 654, 655, 5, 110, 0, 0, 655, 656, 5,
+ 101, 0, 0, 656, 657, 5, 119, 0, 0, 657, 96, 1, 0, 0, 0, 658, 659, 5, 112, 0, 0, 659, 660,
+ 5, 97, 0, 0, 660, 661, 5, 99, 0, 0, 661, 662, 5, 107, 0, 0, 662, 663, 5, 97, 0, 0, 663,
+ 664, 5, 103, 0, 0, 664, 665, 5, 101, 0, 0, 665, 98, 1, 0, 0, 0, 666, 667, 5, 112, 0, 0,
+ 667, 668, 5, 114, 0, 0, 668, 669, 5, 105, 0, 0, 669, 670, 5, 118, 0, 0, 670, 671, 5,
+ 97, 0, 0, 671, 672, 5, 116, 0, 0, 672, 673, 5, 101, 0, 0, 673, 100, 1, 0, 0, 0, 674, 675,
+ 5, 112, 0, 0, 675, 676, 5, 114, 0, 0, 676, 677, 5, 111, 0, 0, 677, 678, 5, 116, 0, 0,
+ 678, 679, 5, 101, 0, 0, 679, 680, 5, 99, 0, 0, 680, 681, 5, 116, 0, 0, 681, 682, 5, 101,
+ 0, 0, 682, 683, 5, 100, 0, 0, 683, 102, 1, 0, 0, 0, 684, 685, 5, 112, 0, 0, 685, 686,
+ 5, 117, 0, 0, 686, 687, 5, 98, 0, 0, 687, 688, 5, 108, 0, 0, 688, 689, 5, 105, 0, 0, 689,
+ 690, 5, 99, 0, 0, 690, 104, 1, 0, 0, 0, 691, 692, 5, 114, 0, 0, 692, 693, 5, 101, 0, 0,
+ 693, 694, 5, 116, 0, 0, 694, 695, 5, 117, 0, 0, 695, 696, 5, 114, 0, 0, 696, 697, 5,
+ 110, 0, 0, 697, 106, 1, 0, 0, 0, 698, 699, 5, 115, 0, 0, 699, 700, 5, 104, 0, 0, 700,
+ 701, 5, 111, 0, 0, 701, 702, 5, 114, 0, 0, 702, 703, 5, 116, 0, 0, 703, 108, 1, 0, 0,
+ 0, 704, 705, 5, 115, 0, 0, 705, 706, 5, 116, 0, 0, 706, 707, 5, 97, 0, 0, 707, 708, 5,
+ 116, 0, 0, 708, 709, 5, 105, 0, 0, 709, 710, 5, 99, 0, 0, 710, 110, 1, 0, 0, 0, 711, 712,
+ 5, 115, 0, 0, 712, 713, 5, 116, 0, 0, 713, 714, 5, 114, 0, 0, 714, 715, 5, 105, 0, 0,
+ 715, 716, 5, 99, 0, 0, 716, 717, 5, 116, 0, 0, 717, 718, 5, 102, 0, 0, 718, 719, 5, 112,
+ 0, 0, 719, 112, 1, 0, 0, 0, 720, 721, 5, 115, 0, 0, 721, 722, 5, 117, 0, 0, 722, 723,
+ 5, 112, 0, 0, 723, 724, 5, 101, 0, 0, 724, 725, 5, 114, 0, 0, 725, 114, 1, 0, 0, 0, 726,
+ 727, 5, 115, 0, 0, 727, 728, 5, 119, 0, 0, 728, 729, 5, 105, 0, 0, 729, 730, 5, 116,
+ 0, 0, 730, 731, 5, 99, 0, 0, 731, 732, 5, 104, 0, 0, 732, 116, 1, 0, 0, 0, 733, 734, 5,
+ 115, 0, 0, 734, 735, 5, 121, 0, 0, 735, 736, 5, 110, 0, 0, 736, 737, 5, 99, 0, 0, 737,
+ 738, 5, 104, 0, 0, 738, 739, 5, 114, 0, 0, 739, 740, 5, 111, 0, 0, 740, 741, 5, 110,
+ 0, 0, 741, 742, 5, 105, 0, 0, 742, 743, 5, 122, 0, 0, 743, 744, 5, 101, 0, 0, 744, 745,
+ 5, 100, 0, 0, 745, 118, 1, 0, 0, 0, 746, 747, 5, 116, 0, 0, 747, 748, 5, 104, 0, 0, 748,
+ 749, 5, 105, 0, 0, 749, 750, 5, 115, 0, 0, 750, 120, 1, 0, 0, 0, 751, 752, 5, 116, 0,
+ 0, 752, 753, 5, 104, 0, 0, 753, 754, 5, 114, 0, 0, 754, 755, 5, 111, 0, 0, 755, 756,
+ 5, 119, 0, 0, 756, 122, 1, 0, 0, 0, 757, 758, 5, 116, 0, 0, 758, 759, 5, 104, 0, 0, 759,
+ 760, 5, 114, 0, 0, 760, 761, 5, 111, 0, 0, 761, 762, 5, 119, 0, 0, 762, 763, 5, 115,
+ 0, 0, 763, 124, 1, 0, 0, 0, 764, 765, 5, 116, 0, 0, 765, 766, 5, 114, 0, 0, 766, 767,
+ 5, 97, 0, 0, 767, 768, 5, 110, 0, 0, 768, 769, 5, 115, 0, 0, 769, 770, 5, 105, 0, 0, 770,
+ 771, 5, 101, 0, 0, 771, 772, 5, 110, 0, 0, 772, 773, 5, 116, 0, 0, 773, 126, 1, 0, 0,
+ 0, 774, 775, 5, 116, 0, 0, 775, 776, 5, 114, 0, 0, 776, 777, 5, 121, 0, 0, 777, 128,
+ 1, 0, 0, 0, 778, 779, 5, 118, 0, 0, 779, 780, 5, 111, 0, 0, 780, 781, 5, 105, 0, 0, 781,
+ 782, 5, 100, 0, 0, 782, 130, 1, 0, 0, 0, 783, 784, 5, 118, 0, 0, 784, 785, 5, 111, 0,
+ 0, 785, 786, 5, 108, 0, 0, 786, 787, 5, 97, 0, 0, 787, 788, 5, 116, 0, 0, 788, 789, 5,
+ 105, 0, 0, 789, 790, 5, 108, 0, 0, 790, 791, 5, 101, 0, 0, 791, 132, 1, 0, 0, 0, 792,
+ 793, 5, 119, 0, 0, 793, 794, 5, 104, 0, 0, 794, 795, 5, 105, 0, 0, 795, 796, 5, 108,
+ 0, 0, 796, 797, 5, 101, 0, 0, 797, 134, 1, 0, 0, 0, 798, 799, 5, 95, 0, 0, 799, 136, 1,
+ 0, 0, 0, 800, 805, 3, 139, 69, 0, 801, 805, 3, 141, 70, 0, 802, 805, 3, 143, 71, 0, 803,
+ 805, 3, 145, 72, 0, 804, 800, 1, 0, 0, 0, 804, 801, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 804,
+ 803, 1, 0, 0, 0, 805, 138, 1, 0, 0, 0, 806, 808, 3, 149, 74, 0, 807, 809, 3, 147, 73,
+ 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 140, 1, 0, 0, 0, 810, 812, 3, 163,
+ 81, 0, 811, 813, 3, 147, 73, 0, 812, 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 142,
+ 1, 0, 0, 0, 814, 816, 3, 173, 86, 0, 815, 817, 3, 147, 73, 0, 816, 815, 1, 0, 0, 0, 816,
+ 817, 1, 0, 0, 0, 817, 144, 1, 0, 0, 0, 818, 820, 3, 183, 91, 0, 819, 821, 3, 147, 73,
+ 0, 820, 819, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 146, 1, 0, 0, 0, 822, 823, 7, 0, 0,
+ 0, 823, 148, 1, 0, 0, 0, 824, 835, 5, 48, 0, 0, 825, 832, 3, 155, 77, 0, 826, 828, 3,
+ 151, 75, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 833, 1, 0, 0, 0, 829, 830,
+ 3, 161, 80, 0, 830, 831, 3, 151, 75, 0, 831, 833, 1, 0, 0, 0, 832, 827, 1, 0, 0, 0, 832,
+ 829, 1, 0, 0, 0, 833, 835, 1, 0, 0, 0, 834, 824, 1, 0, 0, 0, 834, 825, 1, 0, 0, 0, 835,
+ 150, 1, 0, 0, 0, 836, 841, 3, 153, 76, 0, 837, 839, 3, 157, 78, 0, 838, 837, 1, 0, 0,
+ 0, 838, 839, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 842, 3, 153, 76, 0, 841, 838, 1, 0,
+ 0, 0, 841, 842, 1, 0, 0, 0, 842, 152, 1, 0, 0, 0, 843, 846, 5, 48, 0, 0, 844, 846, 3, 155,
+ 77, 0, 845, 843, 1, 0, 0, 0, 845, 844, 1, 0, 0, 0, 846, 154, 1, 0, 0, 0, 847, 848, 7, 1,
+ 0, 0, 848, 156, 1, 0, 0, 0, 849, 851, 3, 159, 79, 0, 850, 849, 1, 0, 0, 0, 851, 852, 1,
+ 0, 0, 0, 852, 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 158, 1, 0, 0, 0, 854, 857, 3,
+ 153, 76, 0, 855, 857, 5, 95, 0, 0, 856, 854, 1, 0, 0, 0, 856, 855, 1, 0, 0, 0, 857, 160,
+ 1, 0, 0, 0, 858, 860, 5, 95, 0, 0, 859, 858, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 859,
+ 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 162, 1, 0, 0, 0, 863, 864, 5, 48, 0, 0, 864, 865,
+ 7, 2, 0, 0, 865, 866, 3, 165, 82, 0, 866, 164, 1, 0, 0, 0, 867, 872, 3, 167, 83, 0, 868,
+ 870, 3, 169, 84, 0, 869, 868, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871,
+ 873, 3, 167, 83, 0, 872, 869, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 166, 1, 0, 0, 0, 874,
+ 875, 7, 3, 0, 0, 875, 168, 1, 0, 0, 0, 876, 878, 3, 171, 85, 0, 877, 876, 1, 0, 0, 0, 878,
+ 879, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 170, 1, 0, 0, 0, 881,
+ 884, 3, 167, 83, 0, 882, 884, 5, 95, 0, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0,
+ 884, 172, 1, 0, 0, 0, 885, 887, 5, 48, 0, 0, 886, 888, 3, 161, 80, 0, 887, 886, 1, 0,
+ 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 890, 3, 175, 87, 0, 890, 174, 1,
+ 0, 0, 0, 891, 896, 3, 177, 88, 0, 892, 894, 3, 179, 89, 0, 893, 892, 1, 0, 0, 0, 893,
+ 894, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 897, 3, 177, 88, 0, 896, 893, 1, 0, 0, 0, 896,
+ 897, 1, 0, 0, 0, 897, 176, 1, 0, 0, 0, 898, 899, 7, 4, 0, 0, 899, 178, 1, 0, 0, 0, 900,
+ 902, 3, 181, 90, 0, 901, 900, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 903,
+ 904, 1, 0, 0, 0, 904, 180, 1, 0, 0, 0, 905, 908, 3, 177, 88, 0, 906, 908, 5, 95, 0, 0,
+ 907, 905, 1, 0, 0, 0, 907, 906, 1, 0, 0, 0, 908, 182, 1, 0, 0, 0, 909, 910, 5, 48, 0, 0,
+ 910, 911, 7, 5, 0, 0, 911, 912, 3, 185, 92, 0, 912, 184, 1, 0, 0, 0, 913, 918, 3, 187,
+ 93, 0, 914, 916, 3, 189, 94, 0, 915, 914, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917,
+ 1, 0, 0, 0, 917, 919, 3, 187, 93, 0, 918, 915, 1, 0, 0, 0, 918, 919, 1, 0, 0, 0, 919, 186,
+ 1, 0, 0, 0, 920, 921, 7, 6, 0, 0, 921, 188, 1, 0, 0, 0, 922, 924, 3, 191, 95, 0, 923, 922,
+ 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 923, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 190,
+ 1, 0, 0, 0, 927, 930, 3, 187, 93, 0, 928, 930, 5, 95, 0, 0, 929, 927, 1, 0, 0, 0, 929,
+ 928, 1, 0, 0, 0, 930, 192, 1, 0, 0, 0, 931, 934, 3, 195, 97, 0, 932, 934, 3, 207, 103,
+ 0, 933, 931, 1, 0, 0, 0, 933, 932, 1, 0, 0, 0, 934, 194, 1, 0, 0, 0, 935, 936, 3, 151,
+ 75, 0, 936, 938, 5, 46, 0, 0, 937, 939, 3, 151, 75, 0, 938, 937, 1, 0, 0, 0, 938, 939,
+ 1, 0, 0, 0, 939, 941, 1, 0, 0, 0, 940, 942, 3, 197, 98, 0, 941, 940, 1, 0, 0, 0, 941, 942,
+ 1, 0, 0, 0, 942, 944, 1, 0, 0, 0, 943, 945, 3, 205, 102, 0, 944, 943, 1, 0, 0, 0, 944,
+ 945, 1, 0, 0, 0, 945, 963, 1, 0, 0, 0, 946, 947, 5, 46, 0, 0, 947, 949, 3, 151, 75, 0,
+ 948, 950, 3, 197, 98, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 952, 1, 0, 0,
+ 0, 951, 953, 3, 205, 102, 0, 952, 951, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 963, 1,
+ 0, 0, 0, 954, 955, 3, 151, 75, 0, 955, 957, 3, 197, 98, 0, 956, 958, 3, 205, 102, 0,
+ 957, 956, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 963, 1, 0, 0, 0, 959, 960, 3, 151, 75,
+ 0, 960, 961, 3, 205, 102, 0, 961, 963, 1, 0, 0, 0, 962, 935, 1, 0, 0, 0, 962, 946, 1,
+ 0, 0, 0, 962, 954, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 963, 196, 1, 0, 0, 0, 964, 965, 3,
+ 199, 99, 0, 965, 966, 3, 201, 100, 0, 966, 198, 1, 0, 0, 0, 967, 968, 7, 7, 0, 0, 968,
+ 200, 1, 0, 0, 0, 969, 971, 3, 203, 101, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0,
+ 971, 972, 1, 0, 0, 0, 972, 973, 3, 151, 75, 0, 973, 202, 1, 0, 0, 0, 974, 975, 7, 8, 0,
+ 0, 975, 204, 1, 0, 0, 0, 976, 977, 7, 9, 0, 0, 977, 206, 1, 0, 0, 0, 978, 979, 3, 209,
+ 104, 0, 979, 981, 3, 211, 105, 0, 980, 982, 3, 205, 102, 0, 981, 980, 1, 0, 0, 0, 981,
+ 982, 1, 0, 0, 0, 982, 208, 1, 0, 0, 0, 983, 985, 3, 163, 81, 0, 984, 986, 5, 46, 0, 0,
+ 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 995, 1, 0, 0, 0, 987, 988, 5, 48, 0, 0,
+ 988, 990, 7, 2, 0, 0, 989, 991, 3, 165, 82, 0, 990, 989, 1, 0, 0, 0, 990, 991, 1, 0, 0,
+ 0, 991, 992, 1, 0, 0, 0, 992, 993, 5, 46, 0, 0, 993, 995, 3, 165, 82, 0, 994, 983, 1,
+ 0, 0, 0, 994, 987, 1, 0, 0, 0, 995, 210, 1, 0, 0, 0, 996, 997, 3, 213, 106, 0, 997, 998,
+ 3, 201, 100, 0, 998, 212, 1, 0, 0, 0, 999, 1000, 7, 10, 0, 0, 1000, 214, 1, 0, 0, 0, 1001,
+ 1002, 5, 116, 0, 0, 1002, 1003, 5, 114, 0, 0, 1003, 1004, 5, 117, 0, 0, 1004, 1011,
+ 5, 101, 0, 0, 1005, 1006, 5, 102, 0, 0, 1006, 1007, 5, 97, 0, 0, 1007, 1008, 5, 108,
+ 0, 0, 1008, 1009, 5, 115, 0, 0, 1009, 1011, 5, 101, 0, 0, 1010, 1001, 1, 0, 0, 0, 1010,
+ 1005, 1, 0, 0, 0, 1011, 216, 1, 0, 0, 0, 1012, 1013, 5, 39, 0, 0, 1013, 1014, 3, 219,
+ 109, 0, 1014, 1015, 5, 39, 0, 0, 1015, 1021, 1, 0, 0, 0, 1016, 1017, 5, 39, 0, 0, 1017,
+ 1018, 3, 229, 114, 0, 1018, 1019, 5, 39, 0, 0, 1019, 1021, 1, 0, 0, 0, 1020, 1012,
+ 1, 0, 0, 0, 1020, 1016, 1, 0, 0, 0, 1021, 218, 1, 0, 0, 0, 1022, 1023, 8, 11, 0, 0, 1023,
+ 220, 1, 0, 0, 0, 1024, 1026, 5, 34, 0, 0, 1025, 1027, 3, 223, 111, 0, 1026, 1025, 1,
+ 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1029, 5, 34, 0, 0, 1029,
+ 222, 1, 0, 0, 0, 1030, 1032, 3, 225, 112, 0, 1031, 1030, 1, 0, 0, 0, 1032, 1033, 1,
+ 0, 0, 0, 1033, 1031, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 224, 1, 0, 0, 0, 1035,
+ 1038, 8, 12, 0, 0, 1036, 1038, 3, 229, 114, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1036,
+ 1, 0, 0, 0, 1038, 226, 1, 0, 0, 0, 1039, 1040, 5, 34, 0, 0, 1040, 1041, 5, 34, 0, 0, 1041,
+ 1042, 5, 34, 0, 0, 1042, 1046, 1, 0, 0, 0, 1043, 1045, 7, 13, 0, 0, 1044, 1043, 1, 0,
+ 0, 0, 1045, 1048, 1, 0, 0, 0, 1046, 1044, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1049,
+ 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1049, 1053, 7, 14, 0, 0, 1050, 1052, 7, 15, 0, 0,
+ 1051, 1050, 1, 0, 0, 0, 1052, 1055, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1053, 1054,
+ 1, 0, 0, 0, 1054, 1056, 1, 0, 0, 0, 1055, 1053, 1, 0, 0, 0, 1056, 1057, 5, 34, 0, 0, 1057,
+ 1058, 5, 34, 0, 0, 1058, 1059, 5, 34, 0, 0, 1059, 228, 1, 0, 0, 0, 1060, 1061, 5, 92,
+ 0, 0, 1061, 1065, 7, 16, 0, 0, 1062, 1065, 3, 231, 115, 0, 1063, 1065, 3, 235, 117,
+ 0, 1064, 1060, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1064, 1063, 1, 0, 0, 0, 1065, 230,
+ 1, 0, 0, 0, 1066, 1067, 5, 92, 0, 0, 1067, 1078, 3, 177, 88, 0, 1068, 1069, 5, 92, 0,
+ 0, 1069, 1070, 3, 177, 88, 0, 1070, 1071, 3, 177, 88, 0, 1071, 1078, 1, 0, 0, 0, 1072,
+ 1073, 5, 92, 0, 0, 1073, 1074, 3, 233, 116, 0, 1074, 1075, 3, 177, 88, 0, 1075, 1076,
+ 3, 177, 88, 0, 1076, 1078, 1, 0, 0, 0, 1077, 1066, 1, 0, 0, 0, 1077, 1068, 1, 0, 0, 0,
+ 1077, 1072, 1, 0, 0, 0, 1078, 232, 1, 0, 0, 0, 1079, 1080, 7, 17, 0, 0, 1080, 234, 1,
+ 0, 0, 0, 1081, 1083, 5, 92, 0, 0, 1082, 1084, 5, 117, 0, 0, 1083, 1082, 1, 0, 0, 0, 1084,
+ 1085, 1, 0, 0, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1087, 1, 0, 0,
+ 0, 1087, 1088, 3, 167, 83, 0, 1088, 1089, 3, 167, 83, 0, 1089, 1090, 3, 167, 83, 0,
+ 1090, 1091, 3, 167, 83, 0, 1091, 236, 1, 0, 0, 0, 1092, 1093, 5, 110, 0, 0, 1093, 1094,
+ 5, 117, 0, 0, 1094, 1095, 5, 108, 0, 0, 1095, 1096, 5, 108, 0, 0, 1096, 238, 1, 0, 0,
+ 0, 1097, 1098, 5, 40, 0, 0, 1098, 240, 1, 0, 0, 0, 1099, 1100, 5, 41, 0, 0, 1100, 242,
+ 1, 0, 0, 0, 1101, 1102, 5, 123, 0, 0, 1102, 244, 1, 0, 0, 0, 1103, 1104, 5, 125, 0, 0,
+ 1104, 246, 1, 0, 0, 0, 1105, 1106, 5, 91, 0, 0, 1106, 248, 1, 0, 0, 0, 1107, 1108, 5,
+ 93, 0, 0, 1108, 250, 1, 0, 0, 0, 1109, 1110, 5, 59, 0, 0, 1110, 252, 1, 0, 0, 0, 1111,
+ 1112, 5, 44, 0, 0, 1112, 254, 1, 0, 0, 0, 1113, 1114, 5, 46, 0, 0, 1114, 256, 1, 0, 0,
+ 0, 1115, 1116, 5, 46, 0, 0, 1116, 1117, 5, 46, 0, 0, 1117, 1118, 5, 46, 0, 0, 1118,
+ 258, 1, 0, 0, 0, 1119, 1120, 5, 64, 0, 0, 1120, 260, 1, 0, 0, 0, 1121, 1122, 5, 58, 0,
+ 0, 1122, 1123, 5, 58, 0, 0, 1123, 262, 1, 0, 0, 0, 1124, 1125, 5, 61, 0, 0, 1125, 264,
+ 1, 0, 0, 0, 1126, 1127, 5, 62, 0, 0, 1127, 266, 1, 0, 0, 0, 1128, 1129, 5, 60, 0, 0, 1129,
+ 268, 1, 0, 0, 0, 1130, 1131, 5, 33, 0, 0, 1131, 270, 1, 0, 0, 0, 1132, 1133, 5, 126,
+ 0, 0, 1133, 272, 1, 0, 0, 0, 1134, 1135, 5, 63, 0, 0, 1135, 274, 1, 0, 0, 0, 1136, 1137,
+ 5, 58, 0, 0, 1137, 276, 1, 0, 0, 0, 1138, 1139, 5, 45, 0, 0, 1139, 1140, 5, 62, 0, 0,
+ 1140, 278, 1, 0, 0, 0, 1141, 1142, 5, 61, 0, 0, 1142, 1143, 5, 61, 0, 0, 1143, 280,
+ 1, 0, 0, 0, 1144, 1145, 5, 60, 0, 0, 1145, 1146, 5, 61, 0, 0, 1146, 282, 1, 0, 0, 0, 1147,
+ 1148, 5, 62, 0, 0, 1148, 1149, 5, 61, 0, 0, 1149, 284, 1, 0, 0, 0, 1150, 1151, 5, 33,
+ 0, 0, 1151, 1152, 5, 61, 0, 0, 1152, 286, 1, 0, 0, 0, 1153, 1154, 5, 38, 0, 0, 1154,
+ 1155, 5, 38, 0, 0, 1155, 288, 1, 0, 0, 0, 1156, 1157, 5, 124, 0, 0, 1157, 1158, 5, 124,
+ 0, 0, 1158, 290, 1, 0, 0, 0, 1159, 1160, 5, 43, 0, 0, 1160, 1161, 5, 43, 0, 0, 1161,
+ 292, 1, 0, 0, 0, 1162, 1163, 5, 45, 0, 0, 1163, 1164, 5, 45, 0, 0, 1164, 294, 1, 0, 0,
+ 0, 1165, 1166, 5, 43, 0, 0, 1166, 296, 1, 0, 0, 0, 1167, 1168, 5, 45, 0, 0, 1168, 298,
+ 1, 0, 0, 0, 1169, 1170, 5, 42, 0, 0, 1170, 300, 1, 0, 0, 0, 1171, 1172, 5, 47, 0, 0, 1172,
+ 302, 1, 0, 0, 0, 1173,
+74, 5, 38, 0, 0, 1174, 304, 1, 0, 0, 0, 1175, 1176, 5, 124,
+ 0, 0, 1176, 306, 1, 0, 0, 0, 1177, 1178, 5, 94, 0, 0, 1178, 308, 1, 0, 0, 0, 1179, 1180,
+ 5, 37, 0, 0, 1180, 310, 1, 0, 0, 0, 1181, 1182, 5, 43, 0, 0, 1182, 1183, 5, 61, 0, 0,
+ 1183, 312, 1, 0, 0, 0, 1184, 1185, 5, 45, 0, 0, 1185, 1186, 5, 61, 0, 0, 1186, 314,
+ 1, 0, 0, 0, 1187, 1188, 5, 42, 0, 0, 1188, 1189, 5, 61, 0, 0, 1189, 316, 1, 0, 0, 0, 1190,
+ 1191, 5, 47, 0, 0, 1191, 1192, 5, 61, 0, 0, 1192, 318, 1, 0, 0, 0, 1193, 1194, 5, 38,
+ 0, 0, 1194, 1195, 5, 61, 0, 0, 1195, 320, 1, 0, 0, 0, 1196, 1197, 5, 124, 0, 0, 1197,
+ 1198, 5, 61, 0, 0, 1198, 322, 1, 0, 0, 0, 1199, 1200, 5, 94, 0, 0, 1200, 1201, 5, 61,
+ 0, 0, 1201, 324, 1, 0, 0, 0, 1202, 1203, 5, 37, 0, 0, 1203, 1204, 5, 61, 0, 0, 1204,
+ 326, 1, 0, 0, 0, 1205, 1206, 5, 60, 0, 0, 1206, 1207, 5, 60, 0, 0, 1207, 1208, 5, 61,
+ 0, 0, 1208, 328, 1, 0, 0, 0, 1209, 1210, 5, 62, 0, 0, 1210, 1211, 5, 62, 0, 0, 1211,
+ 1212, 5, 61, 0, 0, 1212, 330, 1, 0, 0, 0, 1213, 1214, 5, 62, 0, 0, 1214, 1215, 5, 62,
+ 0, 0, 1215, 1216, 5, 62, 0, 0, 1216, 1217, 5, 61, 0, 0, 1217, 332, 1, 0, 0, 0, 1218,
+ 1222, 3, 335, 167, 0, 1219, 1221, 3, 337, 168, 0, 1220, 1219, 1, 0, 0, 0, 1221, 1224,
+ 1, 0, 0, 0, 1222, 1220, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 334, 1, 0, 0, 0, 1224,
+ 1222, 1, 0, 0, 0, 1225, 1227, 7, 18, 0, 0, 1226, 1225, 1, 0, 0, 0, 1227, 336, 1, 0, 0,
+ 0, 1228, 1231, 3, 335, 167, 0, 1229, 1231, 7, 19, 0, 0, 1230, 1228, 1, 0, 0, 0, 1230,
+ 1229, 1, 0, 0, 0, 1231, 338, 1, 0, 0, 0, 1232, 1234, 7, 20, 0, 0, 1233, 1232, 1, 0, 0,
+ 0, 1234, 1235, 1, 0, 0, 0, 1235, 1233, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1237,
+ 1, 0, 0, 0, 1237, 1238, 6, 169, 0, 0, 1238, 340, 1, 0, 0, 0, 1239, 1240, 5, 47, 0, 0,
+ 1240, 1241, 5, 42, 0, 0, 1241, 1245, 1, 0, 0, 0, 1242, 1244, 9, 0, 0, 0, 1243, 1242,
+ 1, 0, 0, 0, 1244, 1247, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1245, 1243, 1, 0, 0, 0, 1246,
+ 1248, 1, 0, 0, 0, 1247, 1245, 1, 0, 0, 0, 1248, 1249, 5, 42, 0, 0, 1249, 1250, 5, 47,
+ 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 6, 170, 1, 0, 1252, 342, 1, 0, 0, 0, 1253,
+ 1254, 5, 47, 0, 0, 1254, 1255, 5, 47, 0, 0, 1255, 1259, 1, 0, 0, 0, 1256, 1258, 8, 14,
+ 0, 0, 1257, 1256, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, 1257, 1, 0, 0, 0, 1259, 1260,
+ 1, 0, 0, 0, 1260, 1262, 1, 0, 0, 0, 1261, 1259, 1, 0, 0, 0, 1262, 1263, 6, 171, 1, 0,
+ 1263, 344, 1, 0, 0, 0, 57, 0, 804, 808, 812, 816, 820, 827, 832, 834, 838, 841, 845,
+ 852, 856, 861, 869, 872, 879, 883, 887, 893, 896, 903, 907, 915, 918, 925, 929,
+ 933, 938, 941, 944, 949, 952, 957, 962, 970, 981, 985, 990, 994, 1010, 1020, 1026,
+ 1033, 1037, 1046, 1053, 1064, 1077, 1085, 1222, 1226, 1230, 1235, 1245, 1259,
+ 2, 6, 0, 0, 0, 1, 0
+ ]
+
+
+class Java20Lexer(Lexer):
+ atn = ATNDeserializer().deserialize(serializedATN())
+
+ decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
+
+ EXPORTS = 1
+ MODULE = 2
+ NONSEALED = 3
+ OACA = 4
+ OPEN = 5
+ OPENS = 6
+ PERMITS = 7
+ PROVIDES = 8
+ RECORD = 9
+ REQUIRES = 10
+ SEALED = 11
+ TO = 12
+ TRANSITIVE = 13
+ USES = 14
+ VAR = 15
+ WITH = 16
+ YIELD = 17
+ ABSTRACT = 18
+ ASSERT = 19
+ BOOLEAN = 20
+ BREAK = 21
+ BYTE = 22
+ CASE = 23
+ CATCH = 24
+ CHAR = 25
+ CLASS = 26
+ CONST = 27
+ CONTINUE = 28
+ DEFAULT = 29
+ DO = 30
+ DOUBLE = 31
+ ELSE = 32
+ ENUM = 33
+ EXTENDS = 34
+ FINAL = 35
+ FINALLY = 36
+ FLOAT = 37
+ FOR = 38
+ IF = 39
+ GOTO = 40
+ IMPLEMENTS = 41
+ IMPORT = 42
+ INSTANCEOF = 43
+ INT = 44
+ INTERFACE = 45
+ LONG = 46
+ NATIVE = 47
+ NEW = 48
+ PACKAGE = 49
+ PRIVATE = 50
+ PROTECTED = 51
+ PUBLIC = 52
+ RETURN = 53
+ SHORT = 54
+ STATIC = 55
+ STRICTFP = 56
+ SUPER = 57
+ SWITCH = 58
+ SYNCHRONIZED = 59
+ THIS = 60
+ THROW = 61
+ THROWS = 62
+ TRANSIENT = 63
+ TRY = 64
+ VOID = 65
+ VOLATILE = 66
+ WHILE = 67
+ UNDER_SCORE = 68
+ IntegerLiteral = 69
+ FloatingPointLiteral = 70
+ BooleanLiteral = 71
+ CharacterLiteral = 72
+ StringLiteral = 73
+ TextBlock = 74
+ NullLiteral = 75
+ LPAREN = 76
+ RPAREN = 77
+ LBRACE = 78
+ RBRACE = 79
+ LBRACK = 80
+ RBRACK = 81
+ SEMI = 82
+ COMMA = 83
+ DOT = 84
+ ELLIPSIS = 85
+ AT = 86
+ COLONCOLON = 87
+ ASSIGN = 88
+ GT = 89
+ LT = 90
+ BANG = 91
+ TILDE = 92
+ QUESTION = 93
+ COLON = 94
+ ARROW = 95
+ EQUAL = 96
+ LE = 97
+ GE = 98
+ NOTEQUAL = 99
+ AND = 100
+ OR = 101
+ INC = 102
+ DEC = 103
+ ADD = 104
+ SUB = 105
+ MUL = 106
+ DIV = 107
+ BITAND = 108
+ BITOR = 109
+ CARET = 110
+ MOD = 111
+ ADD_ASSIGN = 112
+ SUB_ASSIGN = 113
+ MUL_ASSIGN = 114
+ DIV_ASSIGN = 115
+ AND_ASSIGN = 116
+ OR_ASSIGN = 117
+ XOR_ASSIGN = 118
+ MOD_ASSIGN = 119
+ LSHIFT_ASSIGN = 120
+ RSHIFT_ASSIGN = 121
+ URSHIFT_ASSIGN = 122
+ Identifier = 123
+ WS = 124
+ COMMENT = 125
+ LINE_COMMENT = 126
+
+ channelNames = [u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN"]
+
+ modeNames = ["DEFAULT_MODE"]
+
+ literalNames = ["",
+ "'exports'", "'module'", "'non-sealed'", "'<>'", "'open'", "'opens'",
+ "'permits'", "'provides'", "'record'", "'requires'", "'sealed'",
+ "'to'", "'transitive'", "'uses'", "'var'", "'with'", "'yield'",
+ "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'",
+ "'case'", "'catch'", "'char'", "'class'", "'const'", "'continue'",
+ "'default'", "'do'", "'double'", "'else'", "'enum'", "'extends'",
+ "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'",
+ "'implements'", "'import'", "'instanceof'", "'int'", "'interface'",
+ "'long'", "'native'", "'new'", "'package'", "'private'", "'protected'",
+ "'public'", "'return'", "'short'", "'static'", "'strictfp'",
+ "'super'", "'switch'", "'synchronized'", "'this'", "'throw'",
+ "'throws'", "'transient'", "'try'", "'void'", "'volatile'",
+ "'while'", "'_'", "'null'", "'('", "')'", "'{'", "'}'", "'['",
+ "']'", "';'", "','", "'.'", "'...'", "'@'", "'::'", "'='", "'>'",
+ "'<'", "'!'", "'~'", "'?'", "':'", "'->'", "'=='", "'<='", "'>='",
+ "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'", "'*'",
+ "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='", "'*='", "'/='",
+ "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", "'>>>='"]
+
+ symbolicNames = ["",
+ "EXPORTS", "MODULE", "NONSEALED", "OACA", "OPEN", "OPENS", "PERMITS",
+ "PROVIDES", "RECORD", "REQUIRES", "SEALED", "TO", "TRANSITIVE",
+ "USES", "VAR", "WITH", "YIELD", "ABSTRACT", "ASSERT", "BOOLEAN",
+ "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONST",
+ "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS",
+ "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS",
+ "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE",
+ "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN",
+ "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED",
+ "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE",
+ "WHILE", "UNDER_SCORE", "IntegerLiteral", "FloatingPointLiteral",
+ "BooleanLiteral", "CharacterLiteral", "StringLiteral", "TextBlock",
+ "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK",
+ "RBRACK", "SEMI", "COMMA", "DOT", "ELLIPSIS", "AT", "COLONCOLON",
+ "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON",
+ "ARROW", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC",
+ "DEC", "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET",
+ "MOD", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN",
+ "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", "WS", "COMMENT",
+ "LINE_COMMENT"]
+
+ ruleNames = ["EXPORTS", "MODULE", "NONSEALED", "OACA", "OPEN", "OPENS",
+ "PERMITS", "PROVIDES", "RECORD", "REQUIRES", "SEALED",
+ "TO", "TRANSITIVE", "USES", "VAR", "WITH", "YIELD", "ABSTRACT",
+ "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH",
+ "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO",
+ "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY",
+ "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", "IMPORT",
+ "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW",
+ "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN",
+ "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED",
+ "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID",
+ "VOLATILE", "WHILE", "UNDER_SCORE", "IntegerLiteral",
+ "DecimalIntegerLiteral", "HexIntegerLiteral", "OctalIntegerLiteral",
+ "BinaryIntegerLiteral", "IntegerTypeSuffix", "DecimalNumeral",
+ "Digits", "Digit", "NonZeroDigit", "DigitsAndUnderscores",
+ "DigitOrUnderscore", "Underscores", "HexNumeral", "HexDigits",
+ "HexDigit", "HexDigitsAndUnderscores", "HexDigitOrUnderscore",
+ "OctalNumeral", "OctalDigits", "OctalDigit", "OctalDigitsAndUnderscores",
+ "OctalDigitOrUnderscore", "BinaryNumeral", "BinaryDigits",
+ "BinaryDigit", "BinaryDigitsAndUnderscores", "BinaryDigitOrUnderscore",
+ "FloatingPointLiteral", "DecimalFloatingPointLiteral",
+ "ExponentPart", "ExponentIndicator", "SignedInteger",
+ "Sign", "FloatTypeSuffix", "HexadecimalFloatingPointLiteral",
+ "HexSignificand", "BinaryExponent", "BinaryExponentIndicator",
+ "BooleanLiteral", "CharacterLiteral", "SingleCharacter",
+ "StringLiteral", "StringCharacters", "StringCharacter",
+ "TextBlock", "EscapeSequence", "OctalEscape", "ZeroToThree",
+ "UnicodeEscape", "NullLiteral", "LPAREN", "RPAREN", "LBRACE",
+ "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT",
+ "ELLIPSIS", "AT", "COLONCOLON", "ASSIGN", "GT", "LT",
+ "BANG", "TILDE", "QUESTION", "COLON", "ARROW", "EQUAL",
+ "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD",
+ "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD",
+ "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN",
+ "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier",
+ "IdentifierStart", "IdentifierPart", "WS", "COMMENT",
+ "LINE_COMMENT"]
+
+ grammarFileName = "Java20Lexer.g4"
+
+ def __init__(self, input=None, output: TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.checkVersion("4.13.1")
+ self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
+ self._actions = None
+ self._predicates = None
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py
new file mode 100644
index 000000000..f3d825c72
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py
@@ -0,0 +1,73 @@
+# Generated from JavaParser.g4 by ANTLR 4.11.1
+from dataclasses import dataclass
+from antlr4 import *
+
+from module_programming_winnowing.convert_code_to_ast.languages.java import JavaParser
+
+
+@dataclass
+class MethodNode:
+ line_start: int
+ line_end: int
+ source_code: str
+ name: str
+ ast: any
+ ast_string: str
+
+ def __str__(self):
+ return f"MethodNode({self.name}, lines {self.line_start} to {self.line_end})"
+
+
+def _extract_method_name(ctx):
+ # Navigate through the methodHeader context to find the method name
+ if hasattr(ctx, 'methodHeader'):
+ method_header = ctx.methodHeader()
+ if method_header:
+ method_declarator = method_header.methodDeclarator()
+ if method_declarator and hasattr(method_declarator, 'Identifier'):
+ return method_declarator.Identifier().getText()
+ elif method_declarator and hasattr(method_declarator, 'identifier'):
+ return method_declarator.identifier().getText()
+ else:
+ # Traverse the children to find the identifier
+ for child in method_declarator.children:
+ if isinstance(child, TerminalNode) and child.symbol.type == JavaParser.Identifier:
+ return child.getText()
+ return "Unknown"
+
+
+class MethodParserListener(ParseTreeListener):
+ def __init__(self, parser):
+ self.methods = []
+ self.parser = parser
+
+ def enterMethodDeclaration(self, ctx):
+ self._enter_method(ctx)
+
+ def enterConstructorDeclaration(self, ctx):
+ self._enter_method(ctx)
+
+ def enterGenericMethodDeclaration(self, ctx):
+ self._enter_method(ctx)
+
+ def enterGenericConstructorDeclaration(self, ctx):
+ self._enter_method(ctx)
+
+ def _enter_method(self, ctx):
+ ast_string = ctx.toStringTree(recog=self.parser)
+ method_name = _extract_method_name(ctx)
+
+ me = MethodNode(
+ line_start=ctx.start.line,
+ line_end=ctx.stop.line,
+ source_code=ctx.start.source[1].getText(ctx.start.start, ctx.stop.stop),
+ name=method_name,
+ ast=ctx,
+ ast_string=ast_string
+ )
+ self.methods.append(me)
+ print("Method found:", method_name)
+
+ def enterIdentifier(self, ctx: ParserRuleContext):
+ if self.methods and self.methods[-1].name is None:
+ self.methods[-1].name = ctx.getText()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py
new file mode 100644
index 000000000..76380e530
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py
@@ -0,0 +1,20451 @@
+# Generated from JavaParser.g4 by ANTLR 4.13.1
+# encoding: utf-8
+from antlr4 import *
+from io import StringIO
+import sys
+if sys.version_info[1] > 5:
+ from typing import TextIO
+else:
+ from typing.io import TextIO
+
+
+def serializedATN():
+ return [
+ 4, 1, 126, 2946, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6,
+ 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7,
+ 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2,
+ 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7,
+ 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2,
+ 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7,
+ 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2,
+ 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7,
+ 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2,
+ 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7,
+ 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2,
+ 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7,
+ 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2,
+ 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7,
+ 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2,
+ 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103,
+ 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109,
+ 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114,
+ 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120,
+ 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125,
+ 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131,
+ 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136,
+ 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142,
+ 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147,
+ 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153,
+ 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158,
+ 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164,
+ 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169,
+ 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175,
+ 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180,
+ 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186,
+ 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191,
+ 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197,
+ 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202,
+ 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208,
+ 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213,
+ 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219,
+ 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224,
+ 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230,
+ 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235,
+ 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241,
+ 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1,
+ 2, 1, 2, 1, 3, 1, 3, 1, 4, 5, 4, 501, 8, 4, 10, 4, 12, 4, 504, 9, 4, 1, 4, 1, 4, 3, 4, 508,
+ 8, 4, 1, 5, 1, 5, 3, 5, 512, 8, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 3, 8, 521, 8, 8,
+ 1, 9, 1, 9, 5, 9, 525, 8, 9, 10, 9, 12, 9, 528, 9, 9, 1, 9, 1, 9, 3, 9, 532, 8, 9, 1, 9, 3,
+ 9, 535, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 540, 8, 10, 1, 10, 5, 10, 543, 8, 10, 10, 10,
+ 12, 10, 546, 9, 10, 1, 10, 1, 10, 3, 10, 550, 8, 10, 1, 10, 3, 10, 553, 8, 10, 1, 11, 5,
+ 11, 556, 8, 11, 10, 11, 12, 11, 559, 9, 11, 1, 11, 1, 11, 3, 11, 563, 8, 11, 1, 11, 1,
+ 11, 1, 11, 5, 11, 568, 8, 11, 10, 11, 12, 11, 571, 9, 11, 1, 11, 1, 11, 3, 11, 575, 8,
+ 11, 1, 11, 1, 11, 1, 11, 5, 11, 580, 8, 11, 10, 11, 12, 11, 583, 9, 11, 1, 11, 1, 11, 3,
+ 11, 587, 8, 11, 3, 11, 589, 8, 11, 1, 12, 1, 12, 1, 13, 5, 13, 594, 8, 13, 10, 13, 12,
+ 13, 597, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1,
+ 14, 3, 14, 610, 8, 14, 1, 15, 5, 15, 613, 8, 15, 10, 15, 12, 15, 616, 9, 15, 1, 15, 1,
+ 15, 1, 15, 5, 15, 621, 8, 15, 10, 15, 12, 15, 624, 9, 15, 1, 15, 1, 15, 5, 15, 628, 8,
+ 15, 10, 15, 12, 15, 631, 9, 15, 1, 16, 5, 16, 634, 8, 16, 10, 16, 12, 16, 637, 9, 16,
+ 1, 16, 1, 16, 3, 16, 641, 8, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 649, 8,
+ 18, 10, 18, 12, 18, 652, 9, 18, 3, 18, 654, 8, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1,
+ 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 666, 8, 21, 10, 21, 12, 21, 669, 9, 21, 1, 22, 1,
+ 22, 3, 22, 673, 8, 22, 1, 23, 5, 23, 676, 8, 23, 10, 23, 12, 23, 679, 9, 23, 1, 23, 1,
+ 23, 3, 23, 683, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 689, 8, 24, 1, 25, 1, 25, 1, 25,
+ 3, 25, 694, 8, 25, 1, 26, 1, 26, 1, 26, 3, 26, 699, 8, 26, 1, 27, 1, 27, 1, 27, 3, 27, 704,
+ 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 709, 8, 28, 1, 29, 1, 29, 1, 29, 3, 29, 714, 8, 29, 1,
+ 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 3, 31, 723, 8, 31, 1, 32, 1, 32, 3, 32, 727,
+ 8, 32, 1, 33, 3, 33, 730, 8, 33, 1, 33, 5, 33, 733, 8, 33, 10, 33, 12, 33, 736, 9, 33,
+ 1, 33, 5, 33, 739, 8, 33, 10, 33, 12, 33, 742, 9, 33, 1, 34, 5, 34, 745, 8, 34, 10, 34,
+ 12, 34, 748, 9, 34, 1, 34, 1, 34, 1, 35, 5, 35, 753, 8, 35, 10, 35, 12, 35, 756, 9, 35,
+ 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 762, 8, 35, 10, 35, 12, 35, 765, 9, 35, 1, 35, 1, 35,
+ 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 775, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38,
+ 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40,
+ 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 804, 8, 42,
+ 1, 43, 5, 43, 807, 8, 43, 10, 43, 12, 43, 810, 9, 43, 1, 43, 3, 43, 813, 8, 43, 1, 43,
+ 1, 43, 1, 43, 1, 43, 5, 43, 819, 8, 43, 10, 43, 12, 43, 822, 9, 43, 1, 43, 1, 43, 5, 43,
+ 826, 8, 43, 10, 43, 12, 43, 829, 9, 43, 1, 43, 1, 43, 1, 44, 1, 44, 5, 44, 835, 8, 44,
+ 10, 44, 12, 44, 838, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44,
+ 5, 44, 849, 8, 44, 10, 44, 12, 44, 852, 9, 44, 3, 44, 854, 8, 44, 1, 44, 1, 44, 1, 44,
+ 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 864, 8, 44, 10, 44, 12, 44, 867, 9, 44, 3, 44,
+ 869, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44,
+ 1, 44, 5, 44, 883, 8, 44, 10, 44, 12, 44, 886, 9, 44, 1, 44, 1, 44, 3, 44, 890, 8, 44,
+ 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 897, 8, 46, 1, 47, 5, 47, 900, 8, 47, 10, 47,
+ 12, 47, 903, 9, 47, 1, 47, 1, 47, 1, 47, 3, 47, 908, 8, 47, 1, 47, 3, 47, 911, 8, 47, 1,
+ 47, 3, 47, 914, 8, 47, 1, 47, 3, 47, 917, 8, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48,
+ 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 931, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49,
+ 1, 50, 1, 50, 1, 50, 5, 50, 940, 8, 50, 10, 50, 12, 50, 943, 9, 50, 1, 51, 1, 51, 1, 51,
+ 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 5, 53, 954, 8, 53, 10, 53, 12, 53, 957, 9, 53,
+ 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 963, 8, 54, 10, 54, 12, 54, 966, 9, 54, 1, 55, 1, 55,
+ 5, 55, 970, 8, 55, 10, 55, 12, 55, 973, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56,
+ 3, 56, 981, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 988, 8, 57, 1, 58, 5, 58, 991,
+ 8, 58, 10, 58, 12, 58, 994, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59,
+ 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1008, 8, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1013, 8, 60,
+ 10, 60, 12, 60, 1016, 9, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1021, 8, 61, 1, 62, 1, 62, 3,
+ 62, 1025, 8, 62, 1, 63, 1, 63, 3, 63, 1029, 8, 63, 1, 64, 1, 64, 3, 64, 1033, 8, 64, 1,
+ 65, 1, 65, 3, 65, 1037, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 1042, 8, 66, 1, 67, 1, 67, 1,
+ 67, 5, 67, 1047, 8, 67, 10, 67, 12, 67, 1050, 9, 67, 3, 67, 1052, 8, 67, 1, 67, 1, 67,
+ 3, 67, 1056, 8, 67, 1, 67, 3, 67, 1059, 8, 67, 1, 68, 1, 68, 5, 68, 1063, 8, 68, 10, 68,
+ 12, 68, 1066, 9, 68, 1, 68, 1, 68, 3, 68, 1070, 8, 68, 1, 68, 3, 68, 1073, 8, 68, 1, 69,
+ 1, 69, 3, 69, 1077, 8, 69, 1, 69, 1, 69, 3, 69, 1081, 8, 69, 1, 69, 1, 69, 5, 69, 1085,
+ 8, 69, 10, 69, 12, 69, 1088, 9, 69, 1, 69, 1, 69, 3, 69, 1092, 8, 69, 3, 69, 1094, 8,
+ 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1103, 8, 72, 1, 72, 1, 72, 1,
+ 73, 5, 73, 1108, 8, 73, 10, 73, 12, 73, 1111, 9, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74,
+ 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1126, 8, 74, 1, 75, 1, 75,
+ 5, 75, 1130, 8, 75, 10, 75, 12, 75, 1133, 9, 75, 3, 75, 1135, 8, 75, 1, 75, 1, 75, 1,
+ 75, 3, 75, 1140, 8, 75, 1, 76, 1, 76, 3, 76, 1144, 8, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1,
+ 77, 3, 77, 1151, 8, 77, 1, 77, 3, 77, 1154, 8, 77, 1, 77, 1, 77, 3, 77, 1158, 8, 77, 1,
+ 78, 5, 78, 1161, 8, 78, 10, 78, 12, 78, 1164, 9, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1169,
+ 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 5, 79, 1176, 8, 79, 10, 79, 12, 79, 1179, 9,
+ 79, 1, 80, 5, 80, 1182, 8, 80, 10, 80, 12, 80, 1185, 9, 80, 1, 80, 1, 80, 1, 80, 1, 80,
+ 3, 80, 1191, 8, 80, 1, 81, 5, 81, 1194, 8, 81, 10, 81, 12, 81, 1197, 9, 81, 1, 81, 1,
+ 81, 5, 81, 1201, 8, 81, 10, 81, 12, 81, 1204, 9, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82,
+ 3, 82, 1211, 8, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1219, 8, 84, 10, 84,
+ 12, 84, 1222, 9, 84, 1, 85, 1, 85, 3, 85, 1226, 8, 85, 1, 86, 1, 86, 3, 86, 1230, 8, 86,
+ 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 5, 89, 1238, 8, 89, 10, 89, 12, 89, 1241, 9,
+ 89, 1, 89, 1, 89, 3, 89, 1245, 8, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1253,
+ 8, 90, 1, 91, 3, 91, 1256, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1263, 8, 91,
+ 1, 91, 3, 91, 1266, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 1274, 8, 93,
+ 1, 93, 3, 93, 1277, 8, 93, 1, 93, 1, 93, 1, 94, 3, 94, 1282, 8, 94, 1, 94, 1, 94, 1, 94,
+ 3, 94, 1287, 8, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1293, 8, 94, 1, 94, 1, 94, 3, 94,
+ 1297, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1302, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1307,
+ 8, 94, 1, 95, 5, 95, 1310, 8, 95, 10, 95, 12, 95, 1313, 9, 95, 1, 95, 1, 95, 1, 95, 3,
+ 95, 1318, 8, 95, 1, 95, 1, 95, 1, 96, 1, 96, 3, 96, 1324, 8, 96, 1, 96, 3, 96, 1327, 8,
+ 96, 1, 96, 3, 96, 1330, 8, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 5, 97, 1337, 8, 97, 10,
+ 97, 12, 97, 1340, 9, 97, 1, 98, 5, 98, 1343, 8, 98, 10, 98, 12, 98, 1346, 9, 98, 1, 98,
+ 1, 98, 1, 98, 3, 98, 1351, 8, 98, 1, 98, 3, 98, 1354, 8, 98, 1, 98, 3, 98, 1357, 8, 98,
+ 1, 99, 1, 99, 1, 100, 1, 100, 5, 100, 1363, 8, 100, 10, 100, 12, 100, 1366, 9, 100,
+ 1, 101, 5, 101, 1369, 8, 101, 10, 101, 12, 101, 1372, 9, 101, 1, 101, 1, 101, 1, 101,
+ 3, 101, 1377, 8, 101, 1, 101, 1, 101, 3, 101, 1381, 8, 101, 1, 101, 1, 101, 1, 102,
+ 1, 102, 3, 102, 1387, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 5, 103, 1394,
+ 8, 103, 10, 103, 12, 103, 1397, 9, 103, 1, 104, 5, 104, 1400, 8, 104, 10, 104, 12,
+ 104, 1403, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1409, 8, 104, 1, 105, 5,
+ 105, 1412, 8, 105, 10, 105, 12, 105, 1415, 9, 105, 1, 105, 1, 105, 5, 105, 1419, 8,
+ 105, 10, 105, 12, 105, 1422, 9, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107,
+ 1, 107, 5, 107, 1431, 8, 107, 10, 107, 12, 107, 1434, 9, 107, 1, 107, 1, 107, 1, 108,
+ 1, 108, 3, 108, 1440, 8, 108, 1, 109, 5, 109, 1443, 8, 109, 10, 109, 12, 109, 1446,
+ 9, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 1453, 8, 110, 1, 111, 5, 111,
+ 1456, 8, 111, 10, 111, 12, 111, 1459, 9, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1464,
+ 8, 111, 1, 111, 3, 111, 1467, 8, 111, 1, 111, 3, 111, 1470, 8, 111, 1, 111, 1, 111,
+ 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 1483,
+ 8, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 1492, 8, 114,
+ 10, 114, 12, 114, 1495, 9, 114, 1, 115, 1, 115, 5, 115, 1499, 8, 115, 10, 115, 12,
+ 115, 1502, 9, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 1511,
+ 8, 116, 1, 117, 5, 117, 1514, 8, 117, 10, 117, 12, 117, 1517, 9, 117, 1, 117, 1, 117,
+ 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 1527, 8, 118, 1, 119, 5, 119,
+ 1530, 8, 119, 10, 119, 12, 119, 1533, 9, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120,
+ 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1545, 8, 120, 1, 121, 5, 121, 1548,
+ 8, 121, 10, 121, 12, 121, 1551, 9, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122,
+ 1, 122, 5, 122, 1560, 8, 122, 10, 122, 12, 122, 1563, 9, 122, 1, 122, 1, 122, 1, 123,
+ 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1572, 8, 123, 1, 124, 5, 124, 1575, 8, 124,
+ 10, 124, 12, 124, 1578, 9, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 1585,
+ 8, 124, 1, 124, 3, 124, 1588, 8, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 3, 125,
+ 1595, 8, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 3, 127, 1603, 8, 127,
+ 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 1609, 8, 128, 1, 128, 1, 128, 1, 129, 1, 129,
+ 1, 129, 5, 129, 1616, 8, 129, 10, 129, 12, 129, 1619, 9, 129, 1, 130, 1, 130, 1, 130,
+ 1, 130, 1, 131, 1, 131, 1, 131, 3, 131, 1628, 8, 131, 1, 132, 1, 132, 3, 132, 1632,
+ 8, 132, 1, 132, 3, 132, 1635, 8, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 5, 133,
+ 1642, 8, 133, 10, 133, 12, 133, 1645, 9, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135,
+ 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 3, 136, 1658, 8, 136, 1, 136, 3, 136,
+ 1661, 8, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 5, 137, 1668, 8, 137, 10, 137,
+ 12, 137, 1671, 9, 137, 1, 138, 1, 138, 3, 138, 1675, 8, 138, 1, 138, 1, 138, 1, 139,
+ 1, 139, 5, 139, 1681, 8, 139, 10, 139, 12, 139, 1684, 9, 139, 1, 140, 1, 140, 1, 140,
+ 3, 140, 1689, 8, 140, 1, 141, 1, 141, 3, 141, 1693, 8, 141, 1, 142, 5, 142, 1696, 8,
+ 142, 10, 142, 12, 142, 1699, 9, 142, 1, 142, 1, 142, 3, 142, 1703, 8, 142, 1, 143,
+ 1, 143, 3, 143, 1707, 8, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145,
+ 1, 145, 1, 145, 3, 145, 1718, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146,
+ 1725, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147,
+ 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1740, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149,
+ 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152,
+ 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 1762, 8, 152, 1, 153, 1, 153, 1, 153,
+ 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154,
+ 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156,
+ 1, 156, 3, 156, 1790, 8, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157,
+ 1, 157, 1, 158, 1, 158, 1, 158, 5, 158, 1803, 8, 158, 10, 158, 12, 158, 1806, 9, 158,
+ 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 1812, 8, 158, 10, 158, 12, 158, 1815, 9, 158,
+ 1, 158, 1, 158, 1, 158, 5, 158, 1820, 8, 158, 10, 158, 12, 158, 1823, 9, 158, 1, 158,
+ 3, 158, 1826, 8, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159,
+ 1835, 8, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 5, 160, 1842, 8, 160, 10, 160,
+ 12, 160, 1845, 9, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 5, 161, 1853,
+ 8, 161, 10, 161, 12, 161, 1856, 9, 161, 1, 161, 3, 161, 1859, 8, 161, 1, 162, 1, 162,
+ 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164,
+ 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166,
+ 3, 166, 1885, 8, 166, 1, 167, 1, 167, 3, 167, 1889, 8, 167, 1, 168, 1, 168, 1, 168,
+ 3, 168, 1894, 8, 168, 1, 168, 1, 168, 3, 168, 1898, 8, 168, 1, 168, 1, 168, 3, 168,
+ 1902, 8, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 3, 169, 1910, 8, 169,
+ 1, 169, 1, 169, 3, 169, 1914, 8, 169, 1, 169, 1, 169, 3, 169, 1918, 8, 169, 1, 169,
+ 1, 169, 1, 169, 1, 170, 1, 170, 3, 170, 1925, 8, 170, 1, 171, 1, 171, 1, 172, 1, 172,
+ 1, 172, 5, 172, 1932, 8, 172, 10, 172, 12, 172, 1935, 9, 172, 1, 173, 1, 173, 1, 173,
+ 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174,
+ 1, 174, 1, 174, 1, 175, 1, 175, 3, 175, 1955, 8, 175, 1, 175, 1, 175, 1, 176, 1, 176,
+ 3, 176, 1961, 8, 176, 1, 176, 1, 176, 1, 177, 1, 177, 3, 177, 1967, 8, 177, 1, 177,
+ 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179,
+ 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180,
+ 3, 180, 1992, 8, 180, 1, 180, 1, 180, 1, 180, 3, 180, 1997, 8, 180, 1, 181, 1, 181,
+ 5, 181, 2001, 8, 181, 10, 181, 12, 181, 2004, 9, 181, 1, 182, 1, 182, 1, 182, 1, 182,
+ 1, 182, 1, 182, 1, 183, 5, 183, 2013, 8, 183, 10, 183, 12, 183, 2016, 9, 183, 1, 183,
+ 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 5, 184, 2024, 8, 184, 10, 184, 12, 184, 2027,
+ 9, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 2036, 8, 186,
+ 1, 186, 3, 186, 2039, 8, 186, 1, 187, 1, 187, 1, 187, 3, 187, 2044, 8, 187, 1, 187,
+ 1, 187, 1, 188, 1, 188, 1, 188, 5, 188, 2051, 8, 188, 10, 188, 12, 188, 2054, 9, 188,
+ 1, 189, 1, 189, 3, 189, 2058, 8, 189, 1, 190, 1, 190, 3, 190, 2062, 8, 190, 1, 191,
+ 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 3, 194, 2074,
+ 8, 194, 1, 195, 1, 195, 3, 195, 2078, 8, 195, 1, 196, 1, 196, 3, 196, 2082, 8, 196,
+ 1, 196, 1, 196, 3, 196, 2086, 8, 196, 1, 196, 1, 196, 3, 196, 2090, 8, 196, 1, 196,
+ 1, 196, 1, 196, 1, 196, 3, 196, 2096, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196,
+ 2102, 8, 196, 1, 196, 1, 196, 3, 196, 2106, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196,
+ 3, 196, 2112, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2118, 8, 196, 1, 196,
+ 1, 196, 1, 196, 1, 196, 3, 196, 2124, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196,
+ 2130, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2138, 8, 196,
+ 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2145, 8, 196, 1, 196, 1, 196, 1, 196,
+ 1, 196, 1, 196, 3, 196, 2152, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2157, 8, 196,
+ 1, 196, 1, 196, 3, 196, 2161, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2166, 8, 196,
+ 1, 196, 1, 196, 1, 196, 3, 196, 2171, 8, 196, 1, 196, 1, 196, 3, 196, 2175, 8, 196,
+ 1, 196, 1, 196, 1, 196, 3, 196, 2180, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2185,
+ 8, 196, 1, 196, 1, 196, 3, 196, 2189, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2194,
+ 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2199, 8, 196, 1, 196, 1, 196, 3, 196, 2203,
+ 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2208, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196,
+ 2213, 8, 196, 1, 196, 1, 196, 3, 196, 2217, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196,
+ 1, 196, 3, 196, 2224, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2229, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2233, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2238, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2242, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2247, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2251, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2256, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2260, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2265, 8, 196, 1, 196,
+ 1, 196, 3, 196, 2269, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2276,
+ 8, 196, 1, 196, 1, 196, 3, 196, 2280, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2285,
+ 8, 196, 1, 196, 1, 196, 3, 196, 2289, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196,
+ 2295, 8, 196, 3, 196, 2297, 8, 196, 1, 197, 1, 197, 1, 197, 3, 197, 2302, 8, 197, 1,
+ 197, 1, 197, 1, 197, 3, 197, 2307, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2313,
+ 8, 197, 1, 197, 1, 197, 3, 197, 2317, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2322,
+ 8, 197, 1, 197, 1, 197, 3, 197, 2326, 8, 197, 1, 197, 1, 197, 3, 197, 2330, 8, 197,
+ 1, 197, 1, 197, 3, 197, 2334, 8, 197, 3, 197, 2336, 8, 197, 1, 198, 1, 198, 1, 198,
+ 5, 198, 2341, 8, 198, 10, 198, 12, 198, 2344, 9, 198, 1, 198, 1, 198, 1, 198, 1, 198,
+ 1, 198, 1, 198, 5, 198, 2352, 8, 198, 10, 198, 12, 198, 2355, 9, 198, 1, 198, 1, 198,
+ 1, 198, 1, 198, 1, 198, 1, 198, 5, 198, 2363, 8, 198, 10, 198, 12, 198, 2366, 9, 198,
+ 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2373, 8, 198, 1, 199, 1, 199, 1, 199,
+ 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2384, 8, 199, 1, 200, 1, 200,
+ 3, 200, 2388, 8, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2393, 8, 200, 1, 200, 1, 200,
+ 3, 200, 2397, 8, 200, 1, 201, 5, 201, 2400, 8, 201, 10, 201, 12, 201, 2403, 9, 201,
+ 1, 201, 1, 201, 1, 201, 5, 201, 2408, 8, 201, 10, 201, 12, 201, 2411, 9, 201, 1, 201,
+ 5, 201, 2414, 8, 201, 10, 201, 12, 201, 2417, 9, 201, 1, 201, 3, 201, 2420, 8, 201,
+ 1, 202, 1, 202, 3, 202, 2424, 8, 202, 1, 203, 1, 203, 3, 203, 2428, 8, 203, 1, 204,
+ 1, 204, 1, 204, 1, 204, 3, 204, 2434, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204,
+ 2440, 8, 204, 3, 204, 2442, 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205,
+ 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 2454, 8, 205, 1, 206, 1, 206, 5, 206, 2458,
+ 8, 206, 10, 206, 12, 206, 2461, 9, 206, 1, 207, 5, 207, 2464, 8, 207, 10, 207, 12,
+ 207, 2467, 9, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1,
+ 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208,
+ 3, 208, 2488, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209,
+ 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 2503, 8, 209, 1, 210, 1, 210, 1, 210,
+ 3, 210, 2508, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2515, 8, 210,
+ 1, 210, 1, 210, 1, 210, 3, 210, 2520, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210,
+ 3, 210, 2527, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2532, 8, 210, 1, 210, 1, 210,
+ 1, 210, 1, 210, 1, 210, 3, 210, 2539, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2544,
+ 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2551, 8, 210, 1, 210, 1, 210,
+ 1, 210, 3, 210, 2556, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210,
+ 2564, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2569, 8, 210, 1, 210, 1, 210, 3, 210,
+ 2573, 8, 210, 1, 211, 1, 211, 1, 211, 5, 211, 2578, 8, 211, 10, 211, 12, 211, 2581,
+ 9, 211, 1, 212, 1, 212, 1, 212, 3, 212, 2586, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212,
+ 1, 212, 3, 212, 2593, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2600,
+ 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2607, 8, 212, 1, 212, 1, 212,
+ 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2615, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212,
+ 1, 212, 3, 212, 2622, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212,
+ 2630, 8, 212, 1, 213, 1, 213, 3, 213, 2634, 8, 213, 1, 213, 1, 213, 3, 213, 2638, 8,
+ 213, 3, 213, 2640, 8, 213, 1, 214, 1, 214, 3, 214, 2644, 8, 214, 1, 214, 1, 214, 3,
+ 214, 2648, 8, 214, 3, 214, 2650, 8, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1,
+ 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 2665, 8, 217, 1,
+ 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220,
+ 1, 220, 1, 220, 3, 220, 2680, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221,
+ 1, 221, 1, 221, 5, 221, 2690, 8, 221, 10, 221, 12, 221, 2693, 9, 221, 1, 221, 1, 221,
+ 1, 221, 1, 221, 1, 221, 1, 221, 5, 221, 2701, 8, 221, 10, 221, 12, 221, 2704, 9, 221,
+ 1, 221, 1, 221, 1, 221, 3, 221, 2709, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222,
+ 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 2723, 8, 222, 10, 222,
+ 12, 222, 2726, 9, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223,
+ 1, 223, 5, 223, 2737, 8, 223, 10, 223, 12, 223, 2740, 9, 223, 1, 224, 1, 224, 1, 224,
+ 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224,
+ 1, 224, 1, 224, 5, 224, 2758, 8, 224, 10, 224, 12, 224, 2761, 9, 224, 1, 225, 1, 225,
+ 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225,
+ 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 2782, 8, 225, 5, 225, 2784,
+ 8, 225, 10, 225, 12, 225, 2787, 9, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226,
+ 1, 226, 1, 226, 1, 226, 5, 226, 2798, 8, 226, 10, 226, 12, 226, 2801, 9, 226, 1, 227,
+ 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 5, 227, 2809, 8, 227, 10, 227, 12, 227, 2812,
+ 9, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 5, 228, 2820, 8, 228, 10, 228,
+ 12, 228, 2823, 9, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 5, 229, 2831,
+ 8, 229, 10, 229, 12, 229, 2834, 9, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230,
+ 5, 230, 2842, 8, 230, 10, 230, 12, 230, 2845, 9, 230, 1, 231, 1, 231, 1, 231, 1, 231,
+ 1, 231, 1, 231, 5, 231, 2853, 8, 231, 10, 231, 12, 231, 2856, 9, 231, 1, 232, 1, 232,
+ 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232,
+ 3, 232, 2871, 8, 232, 1, 233, 1, 233, 3, 233, 2875, 8, 233, 1, 234, 1, 234, 1, 234,
+ 1, 234, 1, 235, 1, 235, 1, 235, 3, 235, 2884, 8, 235, 1, 236, 1, 236, 1, 237, 1, 237,
+ 1, 237, 1, 237, 1, 238, 1, 238, 3, 238, 2894, 8, 238, 1, 238, 1, 238, 3, 238, 2898,
+ 8, 238, 1, 239, 1, 239, 1, 239, 5, 239, 2903, 8, 239, 10, 239, 12, 239, 2906, 9, 239,
+ 1, 239, 1, 239, 1, 239, 5, 239, 2911, 8, 239, 10, 239, 12, 239, 2914, 9, 239, 3, 239,
+ 2916, 8, 239, 1, 240, 5, 240, 2919, 8, 240, 10, 240, 12, 240, 2922, 9, 240, 1, 240,
+ 1, 240, 1, 240, 1, 240, 3, 240, 2928, 8, 240, 1, 241, 1, 241, 3, 241, 2932, 8, 241,
+ 1, 242, 1, 242, 3, 242, 2936, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243,
+ 1, 244, 1, 244, 1, 244, 0, 10, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 245,
+ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44,
+ 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88,
+ 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124,
+ 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156,
+ 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188,
+ 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220,
+ 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252,
+ 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284,
+ 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316,
+ 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348,
+ 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380,
+ 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412,
+ 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444,
+ 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476,
+ 478, 480, 482, 484, 486, 488, 0, 6, 1, 0, 69, 75, 5, 0, 22, 22, 25, 25, 44, 44, 46, 46,
+ 54, 54, 2, 0, 31, 31, 37, 37, 2, 0, 13, 13, 55, 55, 2, 0, 57, 57, 60, 60, 2, 0, 88, 88,
+ 112, 122, 3206, 0, 490, 1, 0, 0, 0, 2, 493, 1, 0, 0, 0, 4, 495, 1, 0, 0, 0, 6, 497, 1, 0,
+ 0, 0, 8, 502, 1, 0, 0, 0, 10, 511, 1, 0, 0, 0, 12, 513, 1, 0, 0, 0, 14, 515, 1, 0, 0, 0, 16,
+ 520, 1, 0, 0, 0, 18, 522, 1, 0, 0, 0, 20, 539, 1, 0, 0, 0, 22, 588, 1, 0, 0, 0, 24, 590,
+ 1, 0, 0, 0, 26, 595, 1, 0, 0, 0, 28, 609, 1, 0, 0, 0, 30, 614, 1, 0, 0, 0, 32, 635, 1, 0,
+ 0, 0, 34, 642, 1, 0, 0, 0, 36, 644, 1, 0, 0, 0, 38, 655, 1, 0, 0, 0, 40, 658, 1, 0, 0, 0,
+ 42, 662, 1, 0, 0, 0, 44, 672, 1, 0, 0, 0, 46, 677, 1, 0, 0, 0, 48, 688, 1, 0, 0, 0, 50, 690,
+ 1, 0, 0, 0, 52, 695, 1, 0, 0, 0, 54, 700, 1, 0, 0, 0, 56, 705, 1, 0, 0, 0, 58, 713, 1, 0,
+ 0, 0, 60, 717, 1, 0, 0, 0, 62, 719, 1, 0, 0, 0, 64, 726, 1, 0, 0, 0, 66, 729, 1, 0, 0, 0,
+ 68, 746, 1, 0, 0, 0, 70, 754, 1, 0, 0, 0, 72, 768, 1, 0, 0, 0, 74, 774, 1, 0, 0, 0, 76, 776,
+ 1, 0, 0, 0, 78, 780, 1, 0, 0, 0, 80, 786, 1, 0, 0, 0, 82, 793, 1, 0, 0, 0, 84, 803, 1, 0,
+ 0, 0, 86, 808, 1, 0, 0, 0, 88, 889, 1, 0, 0, 0, 90, 891, 1, 0, 0, 0, 92, 896, 1, 0, 0, 0,
+ 94, 901, 1, 0, 0, 0, 96, 930, 1, 0, 0, 0, 98, 932, 1, 0, 0, 0, 100, 936, 1, 0, 0, 0, 102,
+ 944, 1, 0, 0, 0, 104, 947, 1, 0, 0, 0, 106, 950, 1, 0, 0, 0, 108, 958, 1, 0, 0, 0, 110,
+ 967, 1, 0, 0, 0, 112, 980, 1, 0, 0, 0, 114, 987, 1, 0, 0, 0, 116, 992, 1, 0, 0, 0, 118,
+ 1007, 1, 0, 0, 0, 120, 1009, 1, 0, 0, 0, 122, 1017, 1, 0, 0, 0, 124, 1022, 1, 0, 0, 0,
+ 126, 1028, 1, 0, 0, 0, 128, 1032, 1, 0, 0, 0, 130, 1036, 1, 0, 0, 0, 132, 1041, 1, 0,
+ 0, 0, 134, 1051, 1, 0, 0, 0, 136, 1060, 1, 0, 0, 0, 138, 1093, 1, 0, 0, 0, 140, 1095,
+ 1, 0, 0, 0, 142, 1097, 1, 0, 0, 0, 144, 1102, 1, 0, 0, 0, 146, 1109, 1, 0, 0, 0, 148, 1125,
+ 1, 0, 0, 0, 150, 1134, 1, 0, 0, 0, 152, 1143, 1, 0, 0, 0, 154, 1145, 1, 0, 0, 0, 156, 1162,
+ 1, 0, 0, 0, 158, 1172, 1, 0, 0, 0, 160, 1190, 1, 0, 0, 0, 162, 1195, 1, 0, 0, 0, 164, 1210,
+ 1, 0, 0, 0, 166, 1212, 1, 0, 0, 0, 168, 1215, 1, 0, 0, 0, 170, 1225, 1, 0, 0, 0, 172, 1229,
+ 1, 0, 0, 0, 174, 1231, 1, 0, 0, 0, 176, 1233, 1, 0, 0, 0, 178, 1239, 1, 0, 0, 0, 180, 1252,
+ 1, 0, 0, 0, 182, 1255, 1, 0, 0, 0, 184, 1269, 1, 0, 0, 0, 186, 1271, 1, 0, 0, 0, 188, 1306,
+ 1, 0, 0, 0, 190, 1311, 1, 0, 0, 0, 192, 1321, 1, 0, 0, 0, 194, 1333, 1, 0, 0, 0, 196, 1344,
+ 1, 0, 0, 0, 198, 1358, 1, 0, 0, 0, 200, 1360, 1, 0, 0, 0, 202, 1370, 1, 0, 0, 0, 204, 1384,
+ 1, 0, 0, 0, 206, 1390, 1, 0, 0, 0, 208, 1408, 1, 0, 0, 0, 210, 1413, 1, 0, 0, 0, 212, 1426,
+ 1, 0, 0, 0, 214, 1428, 1, 0, 0, 0, 216, 1439, 1, 0, 0, 0, 218, 1444, 1, 0, 0, 0, 220, 1452,
+ 1, 0, 0, 0, 222, 1457, 1, 0, 0, 0, 224, 1482, 1, 0, 0, 0, 226, 1484, 1, 0, 0, 0, 228, 1487,
+ 1, 0, 0, 0, 230, 1496, 1, 0, 0, 0, 232, 1510, 1, 0, 0, 0, 234, 1515, 1, 0, 0, 0, 236, 1526,
+ 1, 0, 0, 0, 238, 1531, 1, 0, 0, 0, 240, 1544, 1, 0, 0, 0, 242, 1549, 1, 0, 0, 0, 244, 1557,
+ 1, 0, 0, 0, 246, 1571, 1, 0, 0, 0, 248, 1576, 1, 0, 0, 0, 250, 1594, 1, 0, 0, 0, 252, 1596,
+ 1, 0, 0, 0, 254, 1602, 1, 0, 0, 0, 256, 1604, 1, 0, 0, 0, 258, 1612, 1, 0, 0, 0, 260, 1620,
+ 1, 0, 0, 0, 262, 1627, 1, 0, 0, 0, 264, 1629, 1, 0, 0, 0, 266, 1638, 1, 0, 0, 0, 268, 1646,
+ 1, 0, 0, 0, 270, 1649, 1, 0, 0, 0, 272, 1655, 1, 0, 0, 0, 274, 1664, 1, 0, 0, 0, 276, 1672,
+ 1, 0, 0, 0, 278, 1678, 1, 0, 0, 0, 280, 1688, 1, 0, 0, 0, 282, 1692, 1, 0, 0, 0, 284, 1697,
+ 1, 0, 0, 0, 286, 1706, 1, 0, 0, 0, 288, 1708, 1, 0, 0, 0, 290, 1717, 1, 0, 0, 0, 292, 1724,
+ 1, 0, 0, 0, 294, 1739, 1, 0, 0, 0, 296, 1741, 1, 0, 0, 0, 298, 1743, 1, 0, 0, 0, 300, 1747,
+ 1, 0, 0, 0, 302, 1751, 1, 0, 0, 0, 304, 1761, 1, 0, 0, 0, 306, 1763, 1, 0, 0, 0, 308, 1769,
+ 1, 0, 0, 0, 310, 1777, 1, 0, 0, 0, 312, 1785, 1, 0, 0, 0, 314, 1793, 1, 0, 0, 0, 316, 1825,
+ 1, 0, 0, 0, 318, 1827, 1, 0, 0, 0, 320, 1836, 1, 0, 0, 0, 322, 1858, 1, 0, 0, 0, 324, 1860,
+ 1, 0, 0, 0, 326, 1862, 1, 0, 0, 0, 328, 1868, 1, 0, 0, 0, 330, 1874, 1, 0, 0, 0, 332, 1884,
+ 1, 0, 0, 0, 334, 1888, 1, 0, 0, 0, 336, 1890, 1, 0, 0, 0, 338, 1906, 1, 0, 0, 0, 340, 1924,
+ 1, 0, 0, 0, 342, 1926, 1, 0, 0, 0, 344, 1928, 1, 0, 0, 0, 346, 1936, 1, 0, 0, 0, 348, 1944,
+ 1, 0, 0, 0, 350, 1952, 1, 0, 0, 0, 352, 1958, 1, 0, 0, 0, 354, 1964, 1, 0, 0, 0, 356, 1970,
+ 1, 0, 0, 0, 358, 1974, 1, 0, 0, 0, 360, 1996, 1, 0, 0, 0, 362, 1998, 1, 0, 0, 0, 364, 2005,
+ 1, 0, 0, 0, 366, 2014, 1, 0, 0, 0, 368, 2020, 1, 0, 0, 0, 370, 2028, 1, 0, 0, 0, 372, 2031,
+ 1, 0, 0, 0, 374, 2040, 1, 0, 0, 0, 376, 2047, 1, 0, 0, 0, 378, 2057, 1, 0, 0, 0, 380, 2061,
+ 1, 0, 0, 0, 382, 2063, 1, 0, 0, 0, 384, 2067, 1, 0, 0, 0, 386, 2069, 1, 0, 0, 0, 388, 2073,
+ 1, 0, 0, 0, 390, 2077, 1, 0, 0, 0, 392, 2296, 1, 0, 0, 0, 394, 2335, 1, 0, 0, 0, 396, 2372,
+ 1, 0, 0, 0, 398, 2383, 1, 0, 0, 0, 400, 2385, 1, 0, 0, 0, 402, 2401, 1, 0, 0, 0, 404, 2423,
+ 1, 0, 0, 0, 406, 2427, 1, 0, 0, 0, 408, 2441, 1, 0, 0, 0, 410, 2453, 1, 0, 0, 0, 412, 2455,
+ 1, 0, 0, 0, 414, 2465, 1, 0, 0, 0, 416, 2487, 1, 0, 0, 0, 418, 2502, 1, 0, 0, 0, 420, 2572,
+ 1, 0, 0, 0, 422, 2574, 1, 0, 0, 0, 424, 2629, 1, 0, 0, 0, 426, 2639, 1, 0, 0, 0, 428, 2649,
+ 1, 0, 0, 0, 430, 2651, 1, 0, 0, 0, 432, 2654, 1, 0, 0, 0, 434, 2664, 1, 0, 0, 0, 436, 2666,
+ 1, 0, 0, 0, 438, 2669, 1, 0, 0, 0, 440, 2679, 1, 0, 0, 0, 442, 2708, 1, 0, 0, 0, 444, 2710,
+ 1, 0, 0, 0, 446, 2727, 1, 0, 0, 0, 448, 2741, 1, 0, 0, 0, 450, 2762, 1, 0, 0, 0, 452, 2788,
+ 1, 0, 0, 0, 454, 2802, 1, 0, 0, 0, 456, 2813, 1, 0, 0, 0, 458, 2824, 1, 0, 0, 0, 460, 2835,
+ 1, 0, 0, 0, 462, 2846, 1, 0, 0, 0, 464, 2870, 1, 0, 0, 0, 466, 2874, 1, 0, 0, 0, 468, 2876,
+ 1, 0, 0, 0, 470, 2883, 1, 0, 0, 0, 472, 2885, 1, 0, 0, 0, 474, 2887, 1, 0, 0, 0, 476, 2897,
+ 1, 0, 0, 0, 478, 2915, 1, 0, 0, 0, 480, 2927, 1, 0, 0, 0, 482, 2931, 1, 0, 0, 0, 484, 2935,
+ 1, 0, 0, 0, 486, 2937, 1, 0, 0, 0, 488, 2943, 1, 0, 0, 0, 490, 491, 3, 64, 32, 0, 491,
+ 492, 5, 0, 0, 1, 492, 1, 1, 0, 0, 0, 493, 494, 7, 0, 0, 0, 494, 3, 1, 0, 0, 0, 495, 496,
+ 5, 123, 0, 0, 496, 5, 1, 0, 0, 0, 497, 498, 5, 123, 0, 0, 498, 7, 1, 0, 0, 0, 499, 501,
+ 3, 254, 127, 0, 500, 499, 1, 0, 0, 0, 501, 504, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502,
+ 503, 1, 0, 0, 0, 503, 507, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 505, 508, 3, 10, 5, 0, 506,
+ 508, 5, 20, 0, 0, 507, 505, 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 9, 1, 0, 0, 0, 509, 512,
+ 3, 12, 6, 0, 510, 512, 3, 14, 7, 0, 511, 509, 1, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 11,
+ 1, 0, 0, 0, 513, 514, 7, 1, 0, 0, 514, 13, 1, 0, 0, 0, 515, 516, 7, 2, 0, 0, 516, 15, 1,
+ 0, 0, 0, 517, 521, 3, 20, 10, 0, 518, 521, 3, 26, 13, 0, 519, 521, 3, 28, 14, 0, 520,
+ 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 17, 1, 0, 0, 0, 522, 526,
+ 5, 84, 0, 0, 523, 525, 3, 254, 127, 0, 524, 523, 1, 0, 0, 0, 525, 528, 1, 0, 0, 0, 526,
+ 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 529, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 529,
+ 531, 3, 4, 2, 0, 530, 532, 3, 40, 20, 0, 531, 530, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532,
+ 534, 1, 0, 0, 0, 533, 535, 3, 18, 9, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535,
+ 19, 1, 0, 0, 0, 536, 537, 3, 52, 26, 0, 537, 538, 5, 84, 0, 0, 538, 540, 1, 0, 0, 0, 539,
+ 536, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 544, 1, 0, 0, 0, 541, 543, 3, 254, 127, 0,
+ 542, 541, 1, 0, 0, 0, 543, 546, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0,
+ 545, 547, 1, 0, 0, 0, 546, 544, 1, 0, 0, 0, 547, 549, 3, 4, 2, 0, 548, 550, 3, 40, 20,
+ 0, 549, 548, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 552, 1, 0, 0, 0, 551, 553, 3, 18, 9,
+ 0, 552, 551, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 21, 1, 0, 0, 0, 554, 556, 3, 254, 127,
+ 0, 555, 554, 1, 0, 0, 0, 556, 559, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0,
+ 0, 558, 560, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 560, 562, 3, 4, 2, 0, 561, 563, 3, 40, 20,
+ 0, 562, 561, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 589, 1, 0, 0, 0, 564, 565, 3, 52, 26,
+ 0, 565, 569, 5, 84, 0, 0, 566, 568, 3, 254, 127, 0, 567, 566, 1, 0, 0, 0, 568, 571, 1,
+ 0, 0, 0, 569, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 572, 1, 0, 0, 0, 571, 569, 1,
+ 0, 0, 0, 572, 574, 3, 4, 2, 0, 573, 575, 3, 40, 20, 0, 574, 573, 1, 0, 0, 0, 574, 575,
+ 1, 0, 0, 0, 575, 589, 1, 0, 0, 0, 576, 577, 3, 20, 10, 0, 577, 581, 5, 84, 0, 0, 578, 580,
+ 3, 254, 127, 0, 579, 578, 1, 0, 0, 0, 580, 583, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581,
+ 582, 1, 0, 0, 0, 582, 584, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 584, 586, 3, 4, 2, 0, 585,
+ 587, 3, 40, 20, 0, 586, 585, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 589, 1, 0, 0, 0, 588,
+ 557, 1, 0, 0, 0, 588, 564, 1, 0, 0, 0, 588, 576, 1, 0, 0, 0, 589, 23, 1, 0, 0, 0, 590, 591,
+ 3, 22, 11, 0, 591, 25, 1, 0, 0, 0, 592, 594, 3, 254, 127, 0, 593, 592, 1, 0, 0, 0, 594,
+ 597, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 598, 1, 0, 0, 0, 597,
+ 595, 1, 0, 0, 0, 598, 599, 3, 4, 2, 0, 599, 27, 1, 0, 0, 0, 600, 601, 3, 8, 4, 0, 601, 602,
+ 3, 30, 15, 0, 602, 610, 1, 0, 0, 0, 603, 604, 3, 22, 11, 0, 604, 605, 3, 30, 15, 0, 605,
+ 610, 1, 0, 0, 0, 606, 607, 3, 26, 13, 0, 607, 608, 3, 30, 15, 0, 608, 610, 1, 0, 0, 0,
+ 609, 600, 1, 0, 0, 0, 609, 603, 1, 0, 0, 0, 609, 606, 1, 0, 0, 0, 610, 29, 1, 0, 0, 0, 611,
+ 613, 3, 254, 127, 0, 612, 611, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0,
+ 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 618, 5, 80, 0, 0,
+ 618, 629, 5, 81, 0, 0, 619, 621, 3, 254, 127, 0, 620, 619, 1, 0, 0, 0, 621, 624, 1, 0,
+ 0, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 625, 1, 0, 0, 0, 624, 622, 1, 0,
+ 0, 0, 625, 626, 5, 80, 0, 0, 626, 628, 5, 81, 0, 0, 627, 622, 1, 0, 0, 0, 628, 631, 1,
+ 0, 0, 0, 629, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 31, 1, 0, 0, 0, 631, 629, 1, 0,
+ 0, 0, 632, 634, 3, 34, 17, 0, 633, 632, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1,
+ 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 640, 3,
+ 4, 2, 0, 639, 641, 3, 36, 18, 0, 640, 639, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 33, 1,
+ 0, 0, 0, 642, 643, 3, 254, 127, 0, 643, 35, 1, 0, 0, 0, 644, 653, 5, 34, 0, 0, 645, 654,
+ 3, 26, 13, 0, 646, 650, 3, 20, 10, 0, 647, 649, 3, 38, 19, 0, 648, 647, 1, 0, 0, 0, 649,
+ 652, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652,
+ 650, 1, 0, 0, 0, 653, 645, 1, 0, 0, 0, 653, 646, 1, 0, 0, 0, 654, 37, 1, 0, 0, 0, 655, 656,
+ 5, 108, 0, 0, 656, 657, 3, 24, 12, 0, 657, 39, 1, 0, 0, 0, 658, 659, 5, 90, 0, 0, 659,
+ 660, 3, 42, 21, 0, 660, 661, 5, 89, 0, 0, 661, 41, 1, 0, 0, 0, 662, 667, 3, 44, 22, 0,
+ 663, 664, 5, 83, 0, 0, 664, 666, 3, 44, 22, 0, 665, 663, 1, 0, 0, 0, 666, 669, 1, 0, 0,
+ 0, 667, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 43, 1, 0, 0, 0, 669, 667, 1, 0, 0, 0,
+ 670, 673, 3, 16, 8, 0, 671, 673, 3, 46, 23, 0, 672, 670, 1, 0, 0, 0, 672, 671, 1, 0, 0,
+ 0, 673, 45, 1, 0, 0, 0, 674, 676, 3, 254, 127, 0, 675, 674, 1, 0, 0, 0, 676, 679, 1, 0,
+ 0, 0, 677, 675, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 680, 1, 0, 0, 0, 679, 677, 1, 0,
+ 0, 0, 680, 682, 5, 93, 0, 0, 681, 683, 3, 48, 24, 0, 682, 681, 1, 0, 0, 0, 682, 683, 1,
+ 0, 0, 0, 683, 47, 1, 0, 0, 0, 684, 685, 5, 34, 0, 0, 685, 689, 3, 16, 8, 0, 686, 687, 5,
+ 57, 0, 0, 687, 689, 3, 16, 8, 0, 688, 684, 1, 0, 0, 0, 688, 686, 1, 0, 0, 0, 689, 49, 1,
+ 0, 0, 0, 690, 693, 5, 123, 0, 0, 691, 692, 5, 84, 0, 0, 692, 694, 3, 50, 25, 0, 693, 691,
+ 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 51, 1, 0, 0, 0, 695, 698, 5, 123, 0, 0, 696, 697,
+ 5, 84, 0, 0, 697, 699, 3, 52, 26, 0, 698, 696, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 53,
+ 1, 0, 0, 0, 700, 703, 3, 52, 26, 0, 701, 702, 5, 84, 0, 0, 702, 704, 3, 4, 2, 0, 703, 701,
+ 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 55, 1, 0, 0, 0, 705, 708, 5, 123, 0, 0, 706, 707,
+ 5, 84, 0, 0, 707, 709, 3, 56, 28, 0, 708, 706, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 57,
+ 1, 0, 0, 0, 710, 711, 3, 62, 31, 0, 711, 712, 5, 84, 0, 0, 712, 714, 1, 0, 0, 0, 713, 710,
+ 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 5, 123, 0, 0, 716, 59,
+ 1, 0, 0, 0, 717, 718, 3, 6, 3, 0, 718, 61, 1, 0, 0, 0, 719, 722, 5, 123, 0, 0, 720, 721,
+ 5, 84, 0, 0, 721, 723, 3, 62, 31, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 63,
+ 1, 0, 0, 0, 724, 727, 3, 66, 33, 0, 725, 727, 3, 68, 34, 0, 726, 724, 1, 0, 0, 0, 726,
+ 725, 1, 0, 0, 0, 727, 65, 1, 0, 0, 0, 728, 730, 3, 70, 35, 0, 729, 728, 1, 0, 0, 0, 729,
+ 730, 1, 0, 0, 0, 730, 734, 1, 0, 0, 0, 731, 733, 3, 74, 37, 0, 732, 731, 1, 0, 0, 0, 733,
+ 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 740, 1, 0, 0, 0, 736,
+ 734, 1, 0, 0, 0, 737, 739, 3, 84, 42, 0, 738, 737, 1, 0, 0, 0, 739, 742, 1, 0, 0, 0, 740,
+ 738, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 67, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 743, 745,
+ 3, 74, 37, 0, 744, 743, 1, 0, 0, 0, 745, 748, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 746, 747,
+ 1, 0, 0, 0, 747, 749, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 749, 750, 3, 86, 43, 0, 750, 69,
+ 1, 0, 0, 0, 751, 753, 3, 72, 36, 0, 752, 751, 1, 0, 0, 0, 753, 756, 1, 0, 0, 0, 754, 752,
+ 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 757, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 757, 758,
+ 5, 49, 0, 0, 758, 763, 5, 123, 0, 0, 759, 760, 5, 84, 0, 0, 760, 762, 5, 123, 0, 0, 761,
+ 759, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764,
+ 766, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 766, 767, 5, 82, 0, 0, 767, 71, 1, 0, 0, 0, 768,
+ 769, 3, 254, 127, 0, 769, 73, 1, 0, 0, 0, 770, 775, 3, 76, 38, 0, 771, 775, 3, 78, 39,
+ 0, 772, 775, 3, 80, 40, 0, 773, 775, 3, 82, 41, 0, 774, 770, 1, 0, 0, 0, 774, 771, 1,
+ 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 773, 1, 0, 0, 0, 775, 75, 1, 0, 0, 0, 776, 777, 5, 42,
+ 0, 0, 777, 778, 3, 54, 27, 0, 778, 779, 5, 82, 0, 0, 779, 77, 1, 0, 0, 0, 780, 781, 5,
+ 42, 0, 0, 781, 782, 3, 56, 28, 0, 782, 783, 5, 84, 0, 0, 783, 784, 5, 106, 0, 0, 784,
+ 785, 5, 82, 0, 0, 785, 79, 1, 0, 0, 0, 786, 787, 5, 42, 0, 0, 787, 788, 5, 55, 0, 0, 788,
+ 789, 3, 54, 27, 0, 789, 790, 5, 84, 0, 0, 790, 791, 5, 123, 0, 0, 791, 792, 5, 82, 0,
+ 0, 792, 81, 1, 0, 0, 0, 793, 794, 5, 42, 0, 0, 794, 795, 5, 55, 0, 0, 795, 796, 3, 54,
+ 27, 0, 796, 797, 5, 84, 0, 0, 797, 798, 5, 106, 0, 0, 798, 799, 5, 82, 0, 0, 799, 83,
+ 1, 0, 0, 0, 800, 804, 3, 92, 46, 0, 801, 804, 3, 220, 110, 0, 802, 804, 5, 82, 0, 0, 803,
+ 800, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 803, 802, 1, 0, 0, 0, 804, 85, 1, 0, 0, 0, 805, 807,
+ 3, 254, 127, 0, 806, 805, 1, 0, 0, 0, 807, 810, 1, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808,
+ 809, 1, 0, 0, 0, 809, 812, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 811, 813, 5, 5, 0, 0, 812,
+ 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 815, 5, 2, 0, 0, 815,
+ 820, 5, 123, 0, 0, 816, 817, 5, 84, 0, 0, 817, 819, 5, 123, 0, 0, 818, 816, 1, 0, 0, 0,
+ 819, 822, 1, 0, 0, 0, 820, 818, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 823, 1, 0, 0, 0,
+ 822, 820, 1, 0, 0, 0, 823, 827, 5, 78, 0, 0, 824, 826, 3, 88, 44, 0, 825, 824, 1, 0, 0,
+ 0, 826, 829, 1, 0, 0, 0, 827, 825, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 830, 1, 0, 0,
+ 0, 829, 827, 1, 0, 0, 0, 830, 831, 5, 79, 0, 0, 831, 87, 1, 0, 0, 0, 832, 836, 5, 10, 0,
+ 0, 833, 835, 3, 90, 45, 0, 834, 833, 1, 0, 0, 0, 835, 838, 1, 0, 0, 0, 836, 834, 1, 0,
+ 0, 0, 836, 837, 1, 0, 0, 0, 837, 839, 1, 0, 0, 0, 838, 836, 1, 0, 0, 0, 839, 840, 3, 50,
+ 25, 0, 840, 841, 5, 82, 0, 0, 841, 890, 1, 0, 0, 0, 842, 843, 5, 1, 0, 0, 843, 853, 3,
+ 52, 26, 0, 844, 845, 5, 12, 0, 0, 845, 850, 3, 50, 25, 0, 846, 847, 5, 83, 0, 0, 847,
+ 849, 3, 50, 25, 0, 848, 846, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850,
+ 851, 1, 0, 0, 0, 851, 854, 1, 0, 0, 0, 852, 850, 1, 0, 0, 0, 853, 844, 1, 0, 0, 0, 853,
+ 854, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 856, 5, 82, 0, 0, 856, 890, 1, 0, 0, 0, 857,
+ 858, 5, 6, 0, 0, 858, 868, 3, 52, 26, 0, 859, 860, 5, 12, 0, 0, 860, 865, 3, 50, 25, 0,
+ 861, 862, 5, 83, 0, 0, 862, 864, 3, 50, 25, 0, 863, 861, 1, 0, 0, 0, 864, 867, 1, 0, 0,
+ 0, 865, 863, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, 0, 0,
+ 0, 868, 859, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 5, 82, 0,
+ 0, 871, 890, 1, 0, 0, 0, 872, 873, 5, 14, 0, 0, 873, 874, 3, 54, 27, 0, 874, 875, 5, 82,
+ 0, 0, 875, 890, 1, 0, 0, 0, 876, 877, 5, 8, 0, 0, 877, 878, 3, 54, 27, 0, 878, 879, 5,
+ 16, 0, 0, 879, 884, 3, 54, 27, 0, 880, 881, 5, 83, 0, 0, 881, 883, 3, 54, 27, 0, 882,
+ 880, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, 882, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885,
+ 887, 1, 0, 0, 0, 886, 884, 1, 0, 0, 0, 887, 888, 5, 82, 0, 0, 888, 890, 1, 0, 0, 0, 889,
+ 832, 1, 0, 0, 0, 889, 842, 1, 0, 0, 0, 889, 857, 1, 0, 0, 0, 889, 872, 1, 0, 0, 0, 889,
+ 876, 1, 0, 0, 0, 890, 89, 1, 0, 0, 0, 891, 892, 7, 3, 0, 0, 892, 91, 1, 0, 0, 0, 893, 897,
+ 3, 94, 47, 0, 894, 897, 3, 190, 95, 0, 895, 897, 3, 202, 101, 0, 896, 893, 1, 0, 0, 0,
+ 896, 894, 1, 0, 0, 0, 896, 895, 1, 0, 0, 0, 897, 93, 1, 0, 0, 0, 898, 900, 3, 96, 48, 0,
+ 899, 898, 1, 0, 0, 0, 900, 903, 1, 0, 0, 0, 901, 899, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0,
+ 902, 904, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 904, 905, 5, 26, 0, 0, 905, 907, 3, 4, 2, 0,
+ 906, 908, 3, 98, 49, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 910, 1, 0, 0,
+ 0, 909, 911, 3, 102, 51, 0, 910, 909, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 913, 1, 0,
+ 0, 0, 912, 914, 3, 104, 52, 0, 913, 912, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 916, 1,
+ 0, 0, 0, 915, 917, 3, 108, 54, 0, 916, 915, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 918,
+ 1, 0, 0, 0, 918, 919, 3, 110, 55, 0, 919, 95, 1, 0, 0, 0, 920, 931, 3, 254, 127, 0, 921,
+ 931, 5, 52, 0, 0, 922, 931, 5, 51, 0, 0, 923, 931, 5, 50, 0, 0, 924, 931, 5, 18, 0, 0,
+ 925, 931, 5, 55, 0, 0, 926, 931, 5, 35, 0, 0, 927, 931, 5, 11, 0, 0, 928, 931, 5, 3, 0,
+ 0, 929, 931, 5, 56, 0, 0, 930, 920, 1, 0, 0, 0, 930, 921, 1, 0, 0, 0, 930, 922, 1, 0, 0,
+ 0, 930, 923, 1, 0, 0, 0, 930, 924, 1, 0, 0, 0, 930, 925, 1, 0, 0, 0, 930, 926, 1, 0, 0,
+ 0, 930, 927, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 929, 1, 0, 0, 0, 931, 97, 1, 0, 0, 0,
+ 932, 933, 5, 90, 0, 0, 933, 934, 3, 100, 50, 0, 934, 935, 5, 89, 0, 0, 935, 99, 1, 0,
+ 0, 0, 936, 941, 3, 32, 16, 0, 937, 938, 5, 83, 0, 0, 938, 940, 3, 32, 16, 0, 939, 937,
+ 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 101,
+ 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 945, 5, 34, 0, 0, 945, 946, 3, 22, 11, 0, 946, 103,
+ 1, 0, 0, 0, 947, 948, 5, 41, 0, 0, 948, 949, 3, 106, 53, 0, 949, 105, 1, 0, 0, 0, 950,
+ 955, 3, 24, 12, 0, 951, 952, 5, 83, 0, 0, 952, 954, 3, 24, 12, 0, 953, 951, 1, 0, 0, 0,
+ 954, 957, 1, 0, 0, 0, 955, 953, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, 107, 1, 0, 0, 0,
+ 957, 955, 1, 0, 0, 0, 958, 959, 5, 7, 0, 0, 959, 964, 3, 54, 27, 0, 960, 961, 5, 83, 0,
+ 0, 961, 963, 3, 54, 27, 0, 962, 960, 1, 0, 0, 0, 963, 966, 1, 0, 0, 0, 964, 962, 1, 0,
+ 0, 0, 964, 965, 1, 0, 0, 0, 965, 109, 1, 0, 0, 0, 966, 964, 1, 0, 0, 0, 967, 971, 5, 78,
+ 0, 0, 968, 970, 3, 112, 56, 0, 969, 968, 1, 0, 0, 0, 970, 973, 1, 0, 0, 0, 971, 969, 1,
+ 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 1, 0, 0, 0, 973, 971, 1, 0, 0, 0, 974, 975, 5,
+ 79, 0, 0, 975, 111, 1, 0, 0, 0, 976, 981, 3, 114, 57, 0, 977, 981, 3, 174, 87, 0, 978,
+ 981, 3, 176, 88, 0, 979, 981, 3, 178, 89, 0, 980, 976, 1, 0, 0, 0, 980, 977, 1, 0, 0,
+ 0, 980, 978, 1, 0, 0, 0, 980, 979, 1, 0, 0, 0, 981, 113, 1, 0, 0, 0, 982, 988, 3, 116,
+ 58, 0, 983, 988, 3, 146, 73, 0, 984, 988, 3, 92, 46, 0, 985, 988, 3, 220, 110, 0, 986,
+ 988, 5, 82, 0, 0, 987, 982, 1, 0, 0, 0, 987, 983, 1, 0, 0, 0, 987, 984, 1, 0, 0, 0, 987,
+ 985, 1, 0, 0, 0, 987, 986, 1, 0, 0, 0, 988, 115, 1, 0, 0, 0, 989, 991, 3, 118, 59, 0, 990,
+ 989, 1, 0, 0, 0, 991, 994, 1, 0, 0, 0, 992, 990, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993,
+ 995, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 995, 996, 3, 128, 64, 0, 996, 997, 3, 120, 60,
+ 0, 997, 998, 5, 82, 0, 0, 998, 117, 1, 0, 0, 0, 999, 1008, 3, 254, 127, 0, 1000, 1008,
+ 5, 52, 0, 0, 1001, 1008, 5, 51, 0, 0, 1002, 1008, 5, 50, 0, 0, 1003, 1008, 5, 55, 0,
+ 0, 1004, 1008, 5, 35, 0, 0, 1005, 1008, 5, 63, 0, 0, 1006, 1008, 5, 66, 0, 0, 1007,
+ 999, 1, 0, 0, 0, 1007, 1000, 1, 0, 0, 0, 1007, 1001, 1, 0, 0, 0, 1007, 1002, 1, 0, 0,
+ 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006,
+ 1, 0, 0, 0, 1008, 119, 1, 0, 0, 0, 1009, 1014, 3, 122, 61, 0, 1010, 1011, 5, 83, 0, 0,
+ 1011, 1013, 3, 122, 61, 0, 1012, 1010, 1, 0, 0, 0, 1013, 1016, 1, 0, 0, 0, 1014, 1012,
+ 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 121, 1, 0, 0, 0, 1016, 1014, 1, 0, 0, 0, 1017,
+ 1020, 3, 124, 62, 0, 1018, 1019, 5, 88, 0, 0, 1019, 1021, 3, 126, 63, 0, 1020, 1018,
+ 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 123, 1, 0, 0, 0, 1022, 1024, 5, 123, 0, 0, 1023,
+ 1025, 3, 30, 15, 0, 1024, 1023, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 125, 1, 0,
+ 0, 0, 1026, 1029, 3, 388, 194, 0, 1027, 1029, 3, 272, 136, 0, 1028, 1026, 1, 0, 0,
+ 0, 1028, 1027, 1, 0, 0, 0, 1029, 127, 1, 0, 0, 0, 1030, 1033, 3, 130, 65, 0, 1031, 1033,
+ 3, 132, 66, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1031, 1, 0, 0, 0, 1033, 129, 1, 0, 0, 0,
+ 1034, 1037, 3, 10, 5, 0, 1035, 1037, 5, 20, 0, 0, 1036, 1034, 1, 0, 0, 0, 1036, 1035,
+ 1, 0, 0, 0, 1037, 131, 1, 0, 0, 0, 1038, 1042, 3, 134, 67, 0, 1039, 1042, 3, 142, 71,
+ 0, 1040, 1042, 3, 144, 72, 0, 1041, 1038, 1, 0, 0, 0, 1041, 1039, 1, 0, 0, 0, 1041,
+ 1040, 1, 0, 0, 0, 1042, 133, 1, 0, 0, 0, 1043, 1044, 3, 52, 26, 0, 1044, 1048, 5, 84,
+ 0, 0, 1045, 1047, 3, 254, 127, 0, 1046, 1045, 1, 0, 0, 0, 1047, 1050, 1, 0, 0, 0, 1048,
+ 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1052, 1, 0, 0, 0, 1050, 1048, 1, 0, 0,
+ 0, 1051, 1043, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1055,
+ 3, 4, 2, 0, 1054, 1056, 3, 40, 20, 0, 1055, 1054, 1, 0, 0, 0, 1055, 1056, 1, 0, 0, 0,
+ 1056, 1058, 1, 0, 0, 0, 1057, 1059, 3, 136, 68, 0, 1058, 1057, 1, 0, 0, 0, 1058, 1059,
+ 1, 0, 0, 0, 1059, 135, 1, 0, 0, 0, 1060, 1064, 5, 84, 0, 0, 1061, 1063, 3, 254, 127,
+ 0, 1062, 1061, 1, 0, 0, 0, 1063, 1066, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1064, 1065,
+ 1, 0, 0, 0, 1065, 1067, 1, 0, 0, 0, 1066, 1064, 1, 0, 0, 0, 1067, 1069, 3, 4, 2, 0, 1068,
+ 1070, 3, 40, 20, 0, 1069, 1068, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1072, 1, 0,
+ 0, 0, 1071, 1073, 3, 136, 68, 0, 1072, 1071, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073,
+ 137, 1, 0, 0, 0, 1074, 1076, 3, 4, 2, 0, 1075, 1077, 3, 40, 20, 0, 1076, 1075, 1, 0,
+ 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1094, 1, 0, 0, 0, 1078, 1081, 3, 52, 26, 0, 1079,
+ 1081, 3, 134, 67, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1079, 1, 0, 0, 0, 1081, 1082, 1,
+ 0, 0, 0, 1082, 1086, 5, 84, 0, 0, 1083, 1085, 3, 254, 127, 0, 1084, 1083, 1, 0, 0, 0,
+ 1085, 1088, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1089,
+ 1, 0, 0, 0, 1088, 1086, 1, 0, 0, 0, 1089, 1091, 3, 4, 2, 0, 1090, 1092, 3, 40, 20, 0,
+ 1091, 1090, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1094, 1, 0, 0, 0, 1093, 1074,
+ 1, 0, 0, 0, 1093, 1080, 1, 0, 0, 0, 1094, 139, 1, 0, 0, 0, 1095, 1096, 3, 138, 69, 0,
+ 1096, 141, 1, 0, 0, 0, 1097, 1098, 3, 4, 2, 0, 1098, 143, 1, 0, 0, 0, 1099, 1103, 3,
+ 130, 65, 0, 1100, 1103, 3, 134, 67, 0, 1101, 1103, 3, 142, 71, 0, 1102, 1099, 1, 0,
+ 0, 0, 1102, 1100, 1, 0, 0, 0, 1102, 1101, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105,
+ 3, 30, 15, 0, 1105, 145, 1, 0, 0, 0, 1106, 1108, 3, 148, 74, 0, 1107, 1106, 1, 0, 0,
+ 0, 1108, 1111, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112,
+ 1, 0, 0, 0, 1111, 1109, 1, 0, 0, 0, 1112, 1113, 3, 150, 75, 0, 1113, 1114, 3, 172, 86,
+ 0, 1114, 147, 1, 0, 0, 0, 1115, 1126, 3, 254, 127, 0, 1116, 1126, 5, 52, 0, 0, 1117,
+ 1126, 5, 51, 0, 0, 1118, 1126, 5, 50, 0, 0, 1119, 1126, 5, 18, 0, 0, 1120, 1126, 5,
+ 55, 0, 0, 1121, 1126, 5, 35, 0, 0, 1122, 1126, 5, 59, 0, 0, 1123, 1126, 5, 47, 0, 0,
+ 1124, 1126, 5, 56, 0, 0, 1125, 1115, 1, 0, 0, 0, 1125, 1116, 1, 0, 0, 0, 1125, 1117,
+ 1, 0, 0, 0, 1125, 1118, 1, 0, 0, 0, 1125, 1119, 1, 0, 0, 0, 1125, 1120, 1, 0, 0, 0, 1125,
+ 1121, 1, 0, 0, 0, 1125, 1122, 1, 0, 0, 0, 1125, 1123, 1, 0, 0, 0, 1125, 1124, 1, 0, 0,
+ 0, 1126, 149, 1, 0, 0, 0, 1127, 1131, 3, 98, 49, 0, 1128, 1130, 3, 254, 127, 0, 1129,
+ 1128, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1131, 1132, 1, 0, 0,
+ 0, 1132, 1135, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1134, 1127, 1, 0, 0, 0, 1134, 1135,
+ 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 3, 152, 76, 0, 1137, 1139, 3, 154, 77,
+ 0, 1138, 1140, 3, 166, 83, 0, 1139, 1138, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140,
+ 151, 1, 0, 0, 0, 1141, 1144, 3, 128, 64, 0, 1142, 1144, 5, 65, 0, 0, 1143, 1141, 1,
+ 0, 0, 0, 1143, 1142, 1, 0, 0, 0, 1144, 153, 1, 0, 0, 0, 1145, 1146, 5, 123, 0, 0, 1146,
+ 1150, 5, 76, 0, 0, 1147, 1148, 3, 156, 78, 0, 1148, 1149, 5, 83, 0, 0, 1149, 1151,
+ 1, 0, 0, 0, 1150, 1147, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1153, 1, 0, 0, 0, 1152,
+ 1154, 3, 158, 79, 0, 1153, 1152, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1155, 1,
+ 0, 0, 0, 1155, 1157, 5, 77, 0, 0, 1156, 1158, 3, 30, 15, 0, 1157, 1156, 1, 0, 0, 0, 1157,
+ 1158, 1, 0, 0, 0, 1158, 155, 1, 0, 0, 0, 1159, 1161, 3, 254, 127, 0, 1160, 1159, 1,
+ 0, 0, 0, 1161, 1164, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163,
+ 1165, 1, 0, 0, 0, 1164, 1162, 1, 0, 0, 0, 1165, 1168, 3, 128, 64, 0, 1166, 1167, 5,
+ 123, 0, 0, 1167, 1169, 5, 84, 0, 0, 1168, 1166, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169,
+ 1170, 1, 0, 0, 0, 1170, 1171, 5, 60, 0, 0, 1171, 157, 1, 0, 0, 0, 1172, 1177, 3, 160,
+ 80, 0, 1173, 1174, 5, 83, 0, 0, 1174, 1176, 3, 160, 80, 0, 1175, 1173, 1, 0, 0, 0, 1176,
+ 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 159, 1, 0, 0,
+ 0, 1179, 1177, 1, 0, 0, 0, 1180, 1182, 3, 164, 82, 0, 1181, 1180, 1, 0, 0, 0, 1182,
+ 1185, 1, 0, 0, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1186, 1, 0, 0,
+ 0, 1185, 1183, 1, 0, 0, 0, 1186, 1187, 3, 128, 64, 0, 1187, 1188, 3, 124, 62, 0, 1188,
+ 1191, 1, 0, 0, 0, 1189, 1191, 3, 162, 81, 0, 1190, 1183, 1, 0, 0, 0, 1190, 1189, 1,
+ 0, 0, 0, 1191, 161, 1, 0, 0, 0, 1192, 1194, 3, 164, 82, 0, 1193, 1192, 1, 0, 0, 0, 1194,
+ 1197, 1, 0, 0, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1198, 1, 0, 0,
+ 0, 1197, 1195, 1, 0, 0, 0, 1198, 1202, 3, 128, 64, 0, 1199, 1201, 3, 254, 127, 0, 1200,
+ 1199, 1, 0, 0, 0, 1201, 1204, 1, 0, 0, 0, 1202, 1200, 1, 0, 0, 0, 1202, 1203, 1, 0, 0,
+ 0, 1203, 1205, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, 0, 1205, 1206, 5, 85, 0, 0, 1206, 1207,
+ 5, 123, 0, 0, 1207, 163, 1, 0, 0, 0, 1208, 1211, 3, 254, 127, 0, 1209, 1211, 5, 35,
+ 0, 0, 1210, 1208, 1, 0, 0, 0, 1210, 1209, 1, 0, 0, 0, 1211, 165, 1, 0, 0, 0, 1212, 1213,
+ 5, 62, 0, 0, 1213, 1214, 3, 168, 84, 0, 1214, 167, 1, 0, 0, 0, 1215, 1220, 3, 170, 85,
+ 0, 1216, 1217, 5, 83, 0, 0, 1217, 1219, 3, 170, 85, 0, 1218, 1216, 1, 0, 0, 0, 1219,
+ 1222, 1, 0, 0, 0, 1220, 1218, 1, 0, 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 169, 1, 0, 0,
+ 0, 1222, 1220, 1, 0, 0, 0, 1223, 1226, 3, 22, 11, 0, 1224, 1226, 3, 26, 13, 0, 1225,
+ 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 171, 1, 0, 0, 0, 1227, 1230, 3, 276,
+ 138, 0, 1228, 1230, 5, 82, 0, 0, 1229, 1227, 1, 0, 0, 0, 1229, 1228, 1, 0, 0, 0, 1230,
+ 173, 1, 0, 0, 0, 1231, 1232, 3, 276, 138, 0, 1232, 175, 1, 0, 0, 0, 1233, 1234, 5, 55,
+ 0, 0, 1234, 1235, 3, 276, 138, 0, 1235, 177, 1, 0, 0, 0, 1236, 1238, 3, 180, 90, 0,
+ 1237, 1236, 1, 0, 0, 0, 1238, 1241, 1, 0, 0, 0, 1239, 1237, 1, 0, 0, 0, 1239, 1240,
+ 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241, 1239, 1, 0, 0, 0, 1242, 1244, 3, 182, 91, 0,
+ 1243, 1245, 3, 166, 83, 0, 1244, 1243, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246,
+ 1, 0, 0, 0, 1246, 1247, 3, 186, 93, 0, 1247, 179, 1, 0, 0, 0, 1248, 1253, 3, 254, 127,
+ 0, 1249, 1253, 5, 52, 0, 0, 1250, 1253, 5, 51, 0, 0, 1251, 1253, 5, 50, 0, 0, 1252,
+ 1248, 1, 0, 0, 0, 1252, 1249, 1, 0, 0, 0, 1252, 1250, 1, 0, 0, 0, 1252, 1251, 1, 0, 0,
+ 0, 1253, 181, 1, 0, 0, 0, 1254, 1256, 3, 98, 49, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256,
+ 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 3, 184, 92, 0, 1258, 1262, 5, 76, 0,
+ 0, 1259, 1260, 3, 156, 78, 0, 1260, 1261, 5, 83, 0, 0, 1261, 1263, 1, 0, 0, 0, 1262,
+ 1259, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1265, 1, 0, 0, 0, 1264, 1266, 3, 158,
+ 79, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267,
+ 1268, 5, 77, 0, 0, 1268, 183, 1, 0, 0, 0, 1269, 1270, 3, 4, 2, 0, 1270, 185, 1, 0, 0,
+ 0, 1271, 1273, 5, 78, 0, 0, 1272, 1274, 3, 188, 94, 0, 1273, 1272, 1, 0, 0, 0, 1273,
+ 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275, 1277, 3, 278, 139, 0, 1276, 1275, 1,
+ 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 1, 0, 0, 0, 1278, 1279, 5, 79, 0, 0, 1279,
+ 187, 1, 0, 0, 0, 1280, 1282, 3, 40, 20, 0, 1281, 1280, 1, 0, 0, 0, 1281, 1282, 1, 0,
+ 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 7, 4, 0, 0, 1284, 1286, 5, 76, 0, 0, 1285,
+ 1287, 3, 422, 211, 0, 1286, 1285, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1288, 1,
+ 0, 0, 0, 1288, 1289, 5, 77, 0, 0, 1289, 1307, 5, 82, 0, 0, 1290, 1293, 3, 58, 29, 0,
+ 1291, 1293, 3, 390, 195, 0, 1292, 1290, 1, 0, 0, 0, 1292, 1291, 1, 0, 0, 0, 1293, 1294,
+ 1, 0, 0, 0, 1294, 1296, 5, 84, 0, 0, 1295, 1297, 3, 40, 20, 0, 1296, 1295, 1, 0, 0, 0,
+ 1296, 1297, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1299, 5, 57, 0, 0, 1299, 1301,
+ 5, 76, 0, 0, 1300, 1302, 3, 422, 211, 0, 1301, 1300, 1, 0, 0, 0, 1301, 1302, 1, 0, 0,
+ 0, 1302, 1303, 1, 0, 0, 0, 1303, 1304, 5, 77, 0, 0, 1304, 1305, 5, 82, 0, 0, 1305, 1307,
+ 1, 0, 0, 0, 1306, 1281, 1, 0, 0, 0, 1306, 1292, 1, 0, 0, 0, 1307, 189, 1, 0, 0, 0, 1308,
+ 1310, 3, 96, 48, 0, 1309, 1308, 1, 0, 0, 0, 1310, 1313, 1, 0, 0, 0, 1311, 1309, 1, 0,
+ 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1314, 1, 0, 0, 0, 1313, 1311, 1, 0, 0, 0, 1314, 1315,
+ 5, 33, 0, 0, 1315, 1317, 3, 4, 2, 0, 1316, 1318, 3, 104, 52, 0, 1317, 1316, 1, 0, 0,
+ 0, 1317, 1318, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1320, 3, 192, 96, 0, 1320,
+ 191, 1, 0, 0, 0, 1321, 1323, 5, 78, 0, 0, 1322, 1324, 3, 194, 97, 0, 1323, 1322, 1,
+ 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1326, 1, 0, 0, 0, 1325, 1327, 5, 83, 0, 0, 1326,
+ 1325, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 1, 0, 0, 0, 1328, 1330, 3, 200,
+ 100, 0, 1329, 1328, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331,
+ 1332, 5, 79, 0, 0, 1332, 193, 1, 0, 0, 0, 1333, 1338, 3, 196, 98, 0, 1334, 1335, 5,
+ 83, 0, 0, 1335, 1337, 3, 196, 98, 0, 1336, 1334, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0,
+ 1338, 1336, 1, 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 195, 1, 0, 0, 0, 1340, 1338, 1,
+ 0, 0, 0, 1341, 1343, 3, 198, 99, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1346, 1, 0, 0, 0, 1344,
+ 1342, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1344, 1, 0, 0,
+ 0, 1347, 1353, 5, 123, 0, 0, 1348, 1350, 5, 76, 0, 0, 1349, 1351, 3, 422, 211, 0, 1350,
+ 1349, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1354, 5, 77,
+ 0, 0, 1353, 1348, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1356, 1, 0, 0, 0, 1355, 1357,
+ 3, 110, 55, 0, 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 197, 1, 0, 0, 0,
+ 1358, 1359, 3, 254, 127, 0, 1359, 199, 1, 0, 0, 0, 1360, 1364, 5, 82, 0, 0, 1361, 1363,
+ 3, 112, 56, 0, 1362, 1361, 1, 0, 0, 0, 1363, 1366, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0,
+ 1364, 1365, 1, 0, 0, 0, 1365, 201, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1369, 3,
+ 96, 48, 0, 1368, 1367, 1, 0, 0, 0, 1369, 1372, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1370,
+ 1371, 1, 0, 0, 0, 1371, 1373, 1, 0, 0, 0, 1372, 1370, 1, 0, 0, 0, 1373, 1374, 5, 9, 0,
+ 0, 1374, 1376, 3, 4, 2, 0, 1375, 1377, 3, 98, 49, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377,
+ 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1380, 3, 204, 102, 0, 1379, 1381, 3, 104,
+ 52, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382,
+ 1383, 3, 214, 107, 0, 1383, 203, 1, 0, 0, 0, 1384, 1386, 5, 76, 0, 0, 1385, 1387, 3,
+ 206, 103, 0, 1386, 1385, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0,
+ 1388, 1389, 5, 77, 0, 0, 1389, 205, 1, 0, 0, 0, 1390, 1395, 3, 208, 104, 0, 1391, 1392,
+ 5, 83, 0, 0, 1392, 1394, 3, 208, 104, 0, 1393, 1391, 1, 0, 0, 0, 1394, 1397, 1, 0, 0,
+ 0, 1395, 1393, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 207, 1, 0, 0, 0, 1397, 1395,
+ 1, 0, 0, 0, 1398, 1400, 3, 212, 106, 0, 1399, 1398, 1, 0, 0, 0, 1400, 1403, 1, 0, 0,
+ 0, 1401, 1399, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1404, 1, 0, 0, 0, 1403, 1401,
+ 1, 0, 0, 0, 1404, 1405, 3, 128, 64, 0, 1405, 1406, 5, 123, 0, 0, 1406, 1409, 1, 0, 0,
+ 0, 1407, 1409, 3, 210, 105, 0, 1408, 1401, 1, 0, 0, 0, 1408, 1407, 1, 0, 0, 0, 1409,
+ 209, 1, 0, 0, 0, 1410, 1412, 3, 212, 106, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1,
+ 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1416, 1, 0, 0, 0, 1415,
+ 1413, 1, 0, 0, 0, 1416, 1420, 3, 128, 64, 0, 1417, 1419, 3, 254, 127, 0, 1418, 1417,
+ 1, 0, 0, 0, 1419, 1422, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421,
+ 1423, 1, 0, 0, 0, 1422, 1420, 1, 0, 0, 0, 1423, 1424, 5, 85, 0, 0, 1424, 1425, 5, 123,
+ 0, 0, 1425, 211, 1, 0, 0, 0, 1426, 1427, 3, 254, 127, 0, 1427, 213, 1, 0, 0, 0, 1428,
+ 1432, 5, 78, 0, 0, 1429, 1431, 3, 216, 108, 0, 1430, 1429, 1, 0, 0, 0, 1431, 1434,
+ 1, 0, 0, 0, 1432, 1430, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1435, 1, 0, 0, 0, 1434,
+ 1432, 1, 0, 0, 0, 1435, 1436, 5, 79, 0, 0, 1436, 215, 1, 0, 0, 0, 1437, 1440, 3, 112,
+ 56, 0, 1438, 1440, 3, 218, 109, 0, 1439, 1437, 1, 0, 0, 0, 1439, 1438, 1, 0, 0, 0, 1440,
+ 217, 1, 0, 0, 0, 1441, 1443, 3, 180, 90, 0, 1442, 1441, 1, 0, 0, 0, 1443, 1446, 1, 0,
+ 0, 0, 1444, 1442, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1447, 1, 0, 0, 0, 1446, 1444,
+ 1, 0, 0, 0, 1447, 1448, 3, 184, 92, 0, 1448, 1449, 3, 186, 93, 0, 1449, 219, 1, 0, 0,
+ 0, 1450, 1453, 3, 222, 111, 0, 1451, 1453, 3, 242, 121, 0, 1452, 1450, 1, 0, 0, 0,
+ 1452, 1451, 1, 0, 0, 0, 1453, 221, 1, 0, 0, 0, 1454, 1456, 3, 224, 112, 0, 1455, 1454,
+ 1, 0, 0, 0, 1456, 1459, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458,
+ 1460, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1460, 1461, 5, 45, 0, 0, 1461, 1463, 3, 4,
+ 2, 0, 1462, 1464, 3, 98, 49, 0, 1463, 1462, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464,
+ 1466, 1, 0, 0, 0, 1465, 1467, 3, 226, 113, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1,
+ 0, 0, 0, 1467, 1469, 1, 0, 0, 0, 1468, 1470, 3, 228, 114, 0, 1469, 1468, 1, 0, 0, 0,
+ 1469, 1470, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472, 3, 230, 115, 0, 1472, 223,
+ 1, 0, 0, 0, 1473, 1483, 3, 254, 127, 0, 1474, 1483, 5, 52, 0, 0, 1475, 1483, 5, 51,
+ 0, 0, 1476, 1483, 5, 50, 0, 0, 1477, 1483, 5, 18, 0, 0, 1478, 1483, 5, 55, 0, 0, 1479,
+ 1483, 5, 11, 0, 0, 1480, 1483, 5, 3, 0, 0, 1481, 1483, 5, 56, 0, 0, 1482, 1473, 1, 0,
+ 0, 0, 1482, 1474, 1, 0, 0, 0, 1482, 1475, 1, 0, 0, 0, 1482, 1476, 1, 0, 0, 0, 1482, 1477,
+ 1, 0, 0, 0, 1482, 1478, 1, 0, 0, 0, 1482, 1479, 1, 0, 0, 0, 1482, 1480, 1, 0, 0, 0, 1482,
+ 1481, 1, 0, 0, 0, 1483, 225, 1, 0, 0, 0, 1484, 1485, 5, 34, 0, 0, 1485, 1486, 3, 106,
+ 53, 0, 1486, 227, 1, 0, 0, 0, 1487, 1488, 5, 7, 0, 0, 1488, 1493, 3, 54, 27, 0, 1489,
+ 1490, 5, 83, 0, 0, 1490, 1492, 3, 54, 27, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1495, 1,
+ 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 229, 1, 0, 0, 0, 1495,
+ 1493, 1, 0, 0, 0, 1496, 1500, 5, 78, 0, 0, 1497, 1499, 3, 232, 116, 0, 1498, 1497,
+ 1, 0, 0, 0, 1499, 1502, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501,
+ 1503, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1503, 1504, 5, 79, 0, 0, 1504, 231, 1, 0, 0,
+ 0, 1505, 1511, 3, 234, 117, 0, 1506, 1511, 3, 238, 119, 0, 1507, 1511, 3, 92, 46,
+ 0, 1508, 1511, 3, 220, 110, 0, 1509, 1511, 5, 82, 0, 0, 1510, 1505, 1, 0, 0, 0, 1510,
+ 1506, 1, 0, 0, 0, 1510, 1507, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1510, 1509, 1, 0, 0,
+ 0, 1511, 233, 1, 0, 0, 0, 1512, 1514, 3, 236, 118, 0, 1513, 1512, 1, 0, 0, 0, 1514,
+ 1517, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1518, 1, 0, 0,
+ 0, 1517, 1515, 1, 0, 0, 0, 1518, 1519, 3, 128, 64, 0, 1519, 1520, 3, 120, 60, 0, 1520,
+ 1521, 5, 82, 0, 0, 1521, 235, 1, 0, 0, 0, 1522, 1527, 3, 254, 127, 0, 1523, 1527, 5,
+ 52, 0, 0, 1524, 1527, 5, 55, 0, 0, 1525, 1527, 5, 35, 0, 0, 1526, 1522, 1, 0, 0, 0, 1526,
+ 1523, 1, 0, 0, 0, 1526, 1524, 1, 0, 0, 0, 1526, 1525, 1, 0, 0, 0, 1527, 237, 1, 0, 0,
+ 0, 1528, 1530, 3, 240, 120, 0, 1529, 1528, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531,
+ 1529, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1534, 1, 0, 0, 0, 1533, 1531, 1, 0, 0,
+ 0, 1534, 1535, 3, 150, 75, 0, 1535, 1536, 3, 172, 86, 0, 1536, 239, 1, 0, 0, 0, 1537,
+ 1545, 3, 254, 127, 0, 1538, 1545, 5, 52, 0, 0, 1539, 1545, 5, 50, 0, 0, 1540, 1545,
+ 5, 18, 0, 0, 1541, 1545, 5, 29, 0, 0, 1542, 1545, 5, 55, 0, 0, 1543, 1545, 5, 56, 0,
+ 0, 1544, 1537, 1, 0, 0, 0, 1544, 1538, 1, 0, 0, 0, 1544, 1539, 1, 0, 0, 0, 1544, 1540,
+ 1, 0, 0, 0, 1544, 1541, 1, 0, 0, 0, 1544, 1542, 1, 0, 0, 0, 1544, 1543, 1, 0, 0, 0, 1545,
+ 241, 1, 0, 0, 0, 1546, 1548, 3, 224, 112, 0, 1547, 1546, 1, 0, 0, 0, 1548, 1551, 1,
+ 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551,
+ 1549, 1, 0, 0, 0, 1552, 1553, 5, 86, 0, 0, 1553, 1554, 5, 45, 0, 0, 1554, 1555, 3, 4,
+ 2, 0, 1555, 1556, 3, 244, 122, 0, 1556, 243, 1, 0, 0, 0, 1557, 1561, 5, 78, 0, 0, 1558,
+ 1560, 3, 246, 123, 0, 1559, 1558, 1, 0, 0, 0, 1560, 1563, 1, 0, 0, 0, 1561, 1559, 1,
+ 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1564, 1, 0, 0, 0, 1563, 1561, 1, 0, 0, 0, 1564,
+ 1565, 5, 79, 0, 0, 1565, 245, 1, 0, 0, 0, 1566, 1572, 3, 248, 124, 0, 1567, 1572, 3,
+ 234, 117, 0, 1568, 1572, 3, 92, 46, 0, 1569, 1572, 3, 220, 110, 0, 1570, 1572, 5,
+ 82, 0, 0, 1571, 1566, 1, 0, 0, 0, 1571, 1567, 1, 0, 0, 0, 1571, 1568, 1, 0, 0, 0, 1571,
+ 1569, 1, 0, 0, 0, 1571, 1570, 1, 0, 0, 0, 1572, 247, 1, 0, 0, 0, 1573, 1575, 3, 250,
+ 125, 0, 1574, 1573, 1, 0, 0, 0, 1575, 1578, 1, 0, 0, 0, 1576, 1574, 1, 0, 0, 0, 1576,
+ 1577, 1, 0, 0, 0, 1577, 1579, 1, 0, 0, 0, 1578, 1576, 1, 0, 0, 0, 1579, 1580, 3, 128,
+ 64, 0, 1580, 1581, 5, 123, 0, 0, 1581, 1582, 5, 76, 0, 0, 1582, 1584, 5, 77, 0, 0, 1583,
+ 1585, 3, 30, 15, 0, 1584, 1583, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1587, 1, 0,
+ 0, 0, 1586, 1588, 3, 252, 126, 0, 1587, 1586, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588,
+ 1589, 1, 0, 0, 0, 1589, 1590, 5, 82, 0, 0, 1590, 249, 1, 0, 0, 0, 1591, 1595, 3, 254,
+ 127, 0, 1592, 1595, 5, 52, 0, 0, 1593, 1595, 5, 18, 0, 0, 1594, 1591, 1, 0, 0, 0, 1594,
+ 1592, 1, 0, 0, 0, 1594, 1593, 1, 0, 0, 0, 1595, 251, 1, 0, 0, 0, 1596, 1597, 5, 29, 0,
+ 0, 1597, 1598, 3, 262, 131, 0, 1598, 253, 1, 0, 0, 0, 1599, 1603, 3, 256, 128, 0, 1600,
+ 1603, 3, 268, 134, 0, 1601, 1603, 3, 270, 135, 0, 1602, 1599, 1, 0, 0, 0, 1602, 1600,
+ 1, 0, 0, 0, 1602, 1601, 1, 0, 0, 0, 1603, 255, 1, 0, 0, 0, 1604, 1605, 5, 86, 0, 0, 1605,
+ 1606, 3, 54, 27, 0, 1606, 1608, 5, 76, 0, 0, 1607, 1609, 3, 258, 129, 0, 1608, 1607,
+ 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1611, 5, 77, 0, 0, 1611,
+ 257, 1, 0, 0, 0, 1612, 1617, 3, 260, 130, 0, 1613, 1614, 5, 83, 0, 0, 1614, 1616, 3,
+ 260, 130, 0, 1615, 1613, 1, 0, 0, 0, 1616, 1619, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0,
+ 1617, 1618, 1, 0, 0, 0, 1618, 259, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1621, 5,
+ 123, 0, 0, 1621, 1622, 5, 88, 0, 0, 1622, 1623, 3, 262, 131, 0, 1623, 261, 1, 0, 0,
+ 0, 1624, 1628, 3, 464, 232, 0, 1625, 1628, 3, 264, 132, 0, 1626, 1628, 3, 254, 127,
+ 0, 1627, 1624, 1, 0, 0, 0, 1627, 1625, 1, 0, 0, 0, 1627, 1626, 1, 0, 0, 0, 1628, 263,
+ 1, 0, 0, 0, 1629, 1631, 5, 78, 0, 0, 1630, 1632, 3, 266, 133, 0, 1631, 1630, 1, 0, 0,
+ 0, 1631, 1632, 1, 0, 0, 0, 1632, 1634, 1, 0, 0, 0, 1633, 1635, 5, 83, 0, 0, 1634, 1633,
+ 1, 0, 0, 0, 1634, 1635, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1637, 5, 79, 0, 0, 1637,
+ 265, 1, 0, 0, 0, 1638, 1643, 3, 262, 131, 0, 1639, 1640, 5, 83, 0, 0, 1640, 1642, 3,
+ 262, 131, 0, 1641, 1639, 1, 0, 0, 0, 1642, 1645, 1, 0, 0, 0, 1643, 1641, 1, 0, 0, 0,
+ 1643, 1644, 1, 0, 0, 0, 1644, 267, 1, 0, 0, 0, 1645, 1643, 1, 0, 0, 0, 1646, 1647, 5,
+ 86, 0, 0, 1647, 1648, 3, 54, 27, 0, 1648, 269, 1, 0, 0, 0, 1649, 1650, 5, 86, 0, 0, 1650,
+ 1651, 3, 54, 27, 0, 1651, 1652, 5, 76, 0, 0, 1652, 1653, 3, 262, 131, 0, 1653, 1654,
+ 5, 77, 0, 0, 1654, 271, 1, 0, 0, 0, 1655, 1657, 5, 78, 0, 0, 1656, 1658, 3, 274, 137,
+ 0, 1657, 1656, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1660, 1, 0, 0, 0, 1659, 1661,
+ 5, 83, 0, 0, 1660, 1659, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1662,
+ 1663, 5, 79, 0, 0, 1663, 273, 1, 0, 0, 0, 1664, 1669, 3, 126, 63, 0, 1665, 1666, 5,
+ 83, 0, 0, 1666, 1668, 3, 126, 63, 0, 1667, 1665, 1, 0, 0, 0, 1668, 1671, 1, 0, 0, 0,
+ 1669, 1667, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 275, 1, 0, 0, 0, 1671, 1669, 1,
+ 0, 0, 0, 1672, 1674, 5, 78, 0, 0, 1673, 1675, 3, 278, 139, 0, 1674, 1673, 1, 0, 0, 0,
+ 1674, 1675, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 5, 79, 0, 0, 1677, 277,
+ 1, 0, 0, 0, 1678, 1682, 3, 280, 140, 0, 1679, 1681, 3, 280, 140, 0, 1680, 1679, 1,
+ 0, 0, 0, 1681, 1684, 1, 0, 0, 0, 1682, 1680, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683,
+ 279, 1, 0, 0, 0, 1684, 1682, 1, 0, 0, 0, 1685, 1689, 3, 282, 141, 0, 1686, 1689, 3,
+ 288, 144, 0, 1687, 1689, 3, 290, 145, 0, 1688, 1685, 1, 0, 0, 0, 1688, 1686, 1, 0,
+ 0, 0, 1688, 1687, 1, 0, 0, 0, 1689, 281, 1, 0, 0, 0, 1690, 1693, 3, 92, 46, 0, 1691,
+ 1693, 3, 222, 111, 0, 1692, 1690, 1, 0, 0, 0, 1692, 1691, 1, 0, 0, 0, 1693, 283, 1,
+ 0, 0, 0, 1694, 1696, 3, 164, 82, 0, 1695, 1694, 1, 0, 0, 0, 1696, 1699, 1, 0, 0, 0, 1697,
+ 1695, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1700, 1, 0, 0, 0, 1699, 1697, 1, 0, 0,
+ 0, 1700, 1702, 3, 286, 143, 0, 1701, 1703, 3, 120, 60, 0, 1702, 1701, 1, 0, 0, 0, 1702,
+ 1703, 1, 0, 0, 0, 1703, 285, 1, 0, 0, 0, 1704, 1707, 3, 128, 64, 0, 1705, 1707, 5, 15,
+ 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1705, 1, 0, 0, 0, 1707, 287, 1, 0, 0, 0, 1708, 1709,
+ 3, 284, 142, 0, 1709, 1710, 5, 82, 0, 0, 1710, 289, 1, 0, 0, 0, 1711, 1718, 3, 294,
+ 147, 0, 1712, 1718, 3, 298, 149, 0, 1713, 1718, 3, 306, 153, 0, 1714, 1718, 3, 308,
+ 154, 0, 1715, 1718, 3, 326, 163, 0, 1716, 1718, 3, 332, 166, 0, 1717, 1711, 1, 0,
+ 0, 0, 1717, 1712, 1, 0, 0, 0, 1717, 1713, 1, 0, 0, 0, 1717, 1714, 1, 0, 0, 0, 1717, 1715,
+ 1, 0, 0, 0, 1717, 1716, 1, 0, 0, 0, 1718, 291, 1, 0, 0, 0, 1719, 1725, 3, 294, 147, 0,
+ 1720, 1725, 3, 300, 150, 0, 1721, 1725, 3, 310, 155, 0, 1722, 1725, 3, 328, 164,
+ 0, 1723, 1725, 3, 334, 167, 0, 1724, 1719, 1, 0, 0, 0, 1724, 1720, 1, 0, 0, 0, 1724,
+ 1721, 1, 0, 0, 0, 1724, 1722, 1, 0, 0, 0, 1724, 1723, 1, 0, 0, 0, 1725, 293, 1, 0, 0,
+ 0, 1726, 1740, 3, 276, 138, 0, 1727, 1740, 3, 296, 148, 0, 1728, 1740, 3, 302, 151,
+ 0, 1729, 1740, 3, 312, 156, 0, 1730, 1740, 3, 314, 157, 0, 1731, 1740, 3, 330, 165,
+ 0, 1732, 1740, 3, 350, 175, 0, 1733, 1740, 3, 352, 176, 0, 1734, 1740, 3, 354, 177,
+ 0, 1735, 1740, 3, 358, 179, 0, 1736, 1740, 3, 356, 178, 0, 1737, 1740, 3, 360, 180,
+ 0, 1738, 1740, 3, 382, 191, 0, 1739, 1726, 1, 0, 0, 0, 1739, 1727, 1, 0, 0, 0, 1739,
+ 1728, 1, 0, 0, 0, 1739, 1729, 1, 0, 0, 0, 1739, 1730, 1, 0, 0, 0, 1739, 1731, 1, 0, 0,
+ 0, 1739, 1732, 1, 0, 0, 0, 1739, 1733, 1, 0, 0, 0, 1739, 1734, 1, 0, 0, 0, 1739, 1735,
+ 1, 0, 0, 0, 1739, 1736, 1, 0, 0, 0, 1739, 1737, 1, 0, 0, 0, 1739, 1738, 1, 0, 0, 0, 1740,
+ 295, 1, 0, 0, 0, 1741, 1742, 5, 82, 0, 0, 1742, 297, 1, 0, 0, 0, 1743, 1744, 5, 123,
+ 0, 0, 1744, 1745, 5, 94, 0, 0, 1745, 1746, 3, 290, 145, 0, 1746, 299, 1, 0, 0, 0, 1747,
+ 1748, 5, 123, 0, 0, 1748, 1749, 5, 94, 0, 0, 1749, 1750, 3, 292, 146, 0, 1750, 301,
+ 1, 0, 0, 0, 1751, 1752, 3, 304, 152, 0, 1752, 1753, 5, 82, 0, 0, 1753, 303, 1, 0, 0,
+ 0, 1754, 1762, 3, 468, 234, 0, 1755, 1762, 3, 436, 218, 0, 1756, 1762, 3, 438, 219,
+ 0, 1757, 1762, 3, 430, 215, 0, 1758, 1762, 3, 432, 216, 0, 1759, 1762, 3, 420, 210,
+ 0, 1760, 1762, 3, 398, 199, 0, 1761, 1754, 1, 0, 0, 0, 1761, 1755, 1, 0, 0, 0, 1761,
+ 1756, 1, 0, 0, 0, 1761, 1757, 1, 0, 0, 0, 1761, 1758, 1, 0, 0, 0, 1761, 1759, 1, 0, 0,
+ 0, 1761, 1760, 1, 0, 0, 0, 1762, 305, 1, 0, 0, 0, 1763, 1764, 5, 39, 0, 0, 1764, 1765,
+ 5, 76, 0, 0, 1765, 1766, 3, 388, 194, 0, 1766, 1767, 5, 77, 0, 0, 1767, 1768, 3, 290,
+ 145, 0, 1768, 307, 1, 0, 0, 0, 1769, 1770, 5, 39, 0, 0, 1770, 1771, 5, 76, 0, 0, 1771,
+ 1772, 3, 388, 194, 0, 1772, 1773, 5, 77, 0, 0, 1773, 1774, 3, 292, 146, 0, 1774, 1775,
+ 5, 32, 0, 0, 1775, 1776, 3, 290, 145, 0, 1776, 309, 1, 0, 0, 0, 1777, 1778, 5, 39, 0,
+ 0, 1778, 1779, 5, 76, 0, 0, 1779, 1780, 3, 388, 194, 0, 1780, 1781, 5, 77, 0, 0, 1781,
+ 1782, 3, 292, 146, 0, 1782, 1783, 5, 32, 0, 0, 1783, 1784, 3, 292, 146, 0, 1784, 311,
+ 1, 0, 0, 0, 1785, 1786, 5, 19, 0, 0, 1786, 1789, 3, 388, 194, 0, 1787, 1788, 5, 94,
+ 0, 0, 1788, 1790, 3, 388, 194, 0, 1789, 1787, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790,
+ 1791, 1, 0, 0, 0, 1791, 1792, 5, 82, 0, 0, 1792, 313, 1, 0, 0, 0, 1793, 1794, 5, 58,
+ 0, 0, 1794, 1795, 5, 76, 0, 0, 1795, 1796, 3, 388, 194, 0, 1796, 1797, 5, 77, 0, 0,
+ 1797, 1798, 3, 316, 158, 0, 1798, 315, 1, 0, 0, 0, 1799, 1800, 5, 78, 0, 0, 1800, 1804,
+ 3, 318, 159, 0, 1801, 1803, 3, 318, 159, 0, 1802, 1801, 1, 0, 0, 0, 1803, 1806, 1,
+ 0, 0, 0, 1804, 1802, 1, 0, 0, 0, 1804, 1805, 1, 0, 0, 0, 1805, 1807, 1, 0, 0, 0, 1806,
+ 1804, 1, 0, 0, 0, 1807, 1808, 5, 79, 0, 0, 1808, 1826, 1, 0, 0, 0, 1809, 1813, 5, 78,
+ 0, 0, 1810, 1812, 3, 320, 160, 0, 1811, 1810, 1, 0, 0, 0, 1812, 1815, 1, 0, 0, 0, 1813,
+ 1811, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1821, 1, 0, 0, 0, 1815, 1813, 1, 0, 0,
+ 0, 1816, 1817, 3, 322, 161, 0, 1817, 1818, 5, 94, 0, 0, 1818, 1820, 1, 0, 0, 0, 1819,
+ 1816, 1, 0, 0, 0, 1820, 1823, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1822, 1, 0, 0,
+ 0, 1822, 1824, 1, 0, 0, 0, 1823, 1821, 1, 0, 0, 0, 1824, 1826, 5, 79, 0, 0, 1825, 1799,
+ 1, 0, 0, 0, 1825, 1809, 1, 0, 0, 0, 1826, 317, 1, 0, 0, 0, 1827, 1828, 3, 322, 161, 0,
+ 1828, 1834, 5, 95, 0, 0, 1829, 1830, 3, 388, 194, 0, 1830, 1831, 5, 82, 0, 0, 1831,
+ 1835, 1, 0, 0, 0, 1832, 1835, 3, 276, 138, 0, 1833, 1835, 3, 356, 178, 0, 1834, 1829,
+ 1, 0, 0, 0, 1834, 1832, 1, 0, 0, 0, 1834, 1833, 1, 0, 0, 0, 1835, 319, 1, 0, 0, 0, 1836,
+ 1837, 3, 322, 161, 0, 1837, 1843, 5, 94, 0, 0, 1838, 1839, 3, 322, 161, 0, 1839, 1840,
+ 5, 94, 0, 0, 1840, 1842, 1, 0, 0, 0, 1841, 1838, 1, 0, 0, 0, 1842, 1845, 1, 0, 0, 0, 1843,
+ 1841, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1846, 1, 0, 0, 0, 1845, 1843, 1, 0, 0,
+ 0, 1846, 1847, 3, 278, 139, 0, 1847, 321, 1, 0, 0, 0, 1848, 1849, 5, 23, 0, 0, 1849,
+ 1854, 3, 324, 162, 0, 1850, 1851, 5, 83, 0, 0, 1851, 1853, 3, 324, 162, 0, 1852, 1850,
+ 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855,
+ 1859, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1859, 5, 29, 0, 0, 1858, 1848, 1, 0,
+ 0, 0, 1858, 1857, 1, 0, 0, 0, 1859, 323, 1, 0, 0, 0, 1860, 1861, 3, 464, 232, 0, 1861,
+ 325, 1, 0, 0, 0, 1862, 1863, 5, 67, 0, 0, 1863, 1864, 5, 76, 0, 0, 1864, 1865, 3, 388,
+ 194, 0, 1865, 1866, 5, 77, 0, 0, 1866, 1867, 3, 290, 145, 0, 1867, 327, 1, 0, 0, 0,
+ 1868, 1869, 5, 67, 0, 0, 1869, 1870, 5, 76, 0, 0, 1870, 1871, 3, 388, 194, 0, 1871,
+ 1872, 5, 77, 0, 0, 1872, 1873, 3, 292, 146, 0, 1873, 329, 1, 0, 0, 0, 1874, 1875, 5,
+ 30, 0, 0, 1875, 1876, 3, 290, 145, 0, 1876, 1877, 5, 67, 0, 0, 1877, 1878, 5, 76, 0,
+ 0, 1878, 1879, 3, 388, 194, 0, 1879, 1880, 5, 77, 0, 0, 1880, 1881, 5, 82, 0, 0, 1881,
+ 331, 1, 0, 0, 0, 1882, 1885, 3, 336, 168, 0, 1883, 1885, 3, 346, 173, 0, 1884, 1882,
+ 1, 0, 0, 0, 1884, 1883, 1, 0, 0, 0, 1885, 333, 1, 0, 0, 0, 1886, 1889, 3, 338, 169, 0,
+ 1887, 1889, 3, 348, 174, 0, 1888, 1886, 1, 0, 0, 0, 1888, 1887, 1, 0, 0, 0, 1889, 335,
+ 1, 0, 0, 0, 1890, 1891, 5, 38, 0, 0, 1891, 1893, 5, 76, 0, 0, 1892, 1894, 3, 340, 170,
+ 0, 1893, 1892, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1897,
+ 5, 82, 0, 0, 1896, 1898, 3, 388, 194, 0, 1897, 1896, 1, 0, 0, 0, 1897, 1898, 1, 0, 0,
+ 0, 1898, 1899, 1, 0, 0, 0, 1899, 1901, 5, 82, 0, 0, 1900, 1902, 3, 342, 171, 0, 1901,
+ 1900, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1904, 5, 77,
+ 0, 0, 1904, 1905, 3, 290, 145, 0, 1905, 337, 1, 0, 0, 0, 1906, 1907, 5, 38, 0, 0, 1907,
+ 1909, 5, 76, 0, 0, 1908, 1910, 3, 340, 170, 0, 1909, 1908, 1, 0, 0, 0, 1909, 1910,
+ 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1913, 5, 82, 0, 0, 1912, 1914, 3, 388, 194,
+ 0, 1913, 1912, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1917,
+ 5, 82, 0, 0, 1916, 1918, 3, 342, 171, 0, 1917, 1916, 1, 0, 0, 0, 1917, 1918, 1, 0, 0,
+ 0, 1918, 1919, 1, 0, 0, 0, 1919, 1920, 5, 77, 0, 0, 1920, 1921, 3, 292, 146, 0, 1921,
+ 339, 1, 0, 0, 0, 1922, 1925, 3, 344, 172, 0, 1923, 1925, 3, 284, 142, 0, 1924, 1922,
+ 1, 0, 0, 0, 1924, 1923, 1, 0, 0, 0, 1925, 341, 1, 0, 0, 0, 1926, 1927, 3, 344, 172, 0,
+ 1927, 343, 1, 0, 0, 0, 1928, 1933, 3, 304, 152, 0, 1929, 1930, 5, 83, 0, 0, 1930, 1932,
+ 3, 304, 152, 0, 1931, 1929, 1, 0, 0, 0, 1932, 1935, 1, 0, 0, 0, 1933, 1931, 1, 0, 0,
+ 0, 1933, 1934, 1, 0, 0, 0, 1934, 345, 1, 0, 0, 0, 1935, 1933, 1, 0, 0, 0, 1936, 1937,
+ 5, 38, 0, 0, 1937, 1938, 5, 76, 0, 0, 1938, 1939, 3, 284, 142, 0, 1939, 1940, 5, 94,
+ 0, 0, 1940, 1941, 3, 388, 194, 0, 1941, 1942, 5, 77, 0, 0, 1942, 1943, 3, 290, 145,
+ 0, 1943, 347, 1, 0, 0, 0, 1944, 1945, 5, 38, 0, 0, 1945, 1946, 5, 76, 0, 0, 1946, 1947,
+ 3, 284, 142, 0, 1947, 1948, 5, 94, 0, 0, 1948, 1949, 3, 388, 194, 0, 1949, 1950, 5,
+ 77, 0, 0, 1950, 1951, 3, 292, 146, 0, 1951, 349, 1, 0, 0, 0, 1952, 1954, 5, 21, 0, 0,
+ 1953, 1955, 5, 123, 0, 0, 1954, 1953, 1, 0, 0, 0, 1954, 1955, 1, 0, 0, 0, 1955, 1956,
+ 1, 0, 0, 0, 1956, 1957, 5, 82, 0, 0, 1957, 351, 1, 0, 0, 0, 1958, 1960, 5, 28, 0, 0, 1959,
+ 1961, 5, 123, 0, 0, 1960, 1959, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1962, 1, 0,
+ 0, 0, 1962, 1963, 5, 82, 0, 0, 1963, 353, 1, 0, 0, 0, 1964, 1966, 5, 53, 0, 0, 1965,
+ 1967, 3, 388, 194, 0, 1966, 1965, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 1,
+ 0, 0, 0, 1968, 1969, 5, 82, 0, 0, 1969, 355, 1, 0, 0, 0, 1970, 1971, 5, 61, 0, 0, 1971,
+ 1972, 3, 388, 194, 0, 1972, 1973, 5, 82, 0, 0, 1973, 357, 1, 0, 0, 0, 1974, 1975, 5,
+ 59, 0, 0, 1975, 1976, 5, 76, 0, 0, 1976, 1977, 3, 388, 194, 0, 1977, 1978, 5, 77, 0,
+ 0, 1978, 1979, 3, 276, 138, 0, 1979, 359, 1, 0, 0, 0, 1980, 1981, 5, 64, 0, 0, 1981,
+ 1982, 3, 276, 138, 0, 1982, 1983, 3, 362, 181, 0, 1983, 1997, 1, 0, 0, 0, 1984, 1985,
+ 5, 64, 0, 0, 1985, 1986, 3, 276, 138, 0, 1986, 1987, 3, 370, 185, 0, 1987, 1997, 1,
+ 0, 0, 0, 1988, 1989, 5, 64, 0, 0, 1989, 1991, 3, 276, 138, 0, 1990, 1992, 3, 362, 181,
+ 0, 1991, 1990, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994,
+ 3, 370, 185, 0, 1994, 1997, 1, 0, 0, 0, 1995, 1997, 3, 372, 186, 0, 1996, 1980, 1,
+ 0, 0, 0, 1996, 1984, 1, 0, 0, 0, 1996, 1988, 1, 0, 0, 0, 1996, 1995, 1, 0, 0, 0, 1997,
+ 361, 1, 0, 0, 0, 1998, 2002, 3, 364, 182, 0, 1999, 2001, 3, 364, 182, 0, 2000, 1999,
+ 1, 0, 0, 0, 2001, 2004, 1, 0, 0, 0, 2002, 2000, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003,
+ 363, 1, 0, 0, 0, 2004, 2002, 1, 0, 0, 0, 2005, 2006, 5, 24, 0, 0, 2006, 2007, 5, 76,
+ 0, 0, 2007, 2008, 3, 366, 183, 0, 2008, 2009, 5, 77, 0, 0, 2009, 2010, 3, 276, 138,
+ 0, 2010, 365, 1, 0, 0, 0, 2011, 2013, 3, 164, 82, 0, 2012, 2011, 1, 0, 0, 0, 2013, 2016,
+ 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2017, 1, 0, 0, 0, 2016,
+ 2014, 1, 0, 0, 0, 2017, 2018, 3, 368, 184, 0, 2018, 2019, 3, 124, 62, 0, 2019, 367,
+ 1, 0, 0, 0, 2020, 2025, 3, 138, 69, 0, 2021, 2022, 5, 109, 0, 0, 2022, 2024, 3, 22,
+ 11, 0, 2023, 2021, 1, 0, 0, 0, 2024, 2027, 1, 0, 0, 0, 2025, 2023, 1, 0, 0, 0, 2025,
+ 2026, 1, 0, 0, 0, 2026, 369, 1, 0, 0, 0, 2027, 2025, 1, 0, 0, 0, 2028, 2029, 5, 36, 0,
+ 0, 2029, 2030, 3, 276, 138, 0, 2030, 371, 1, 0, 0, 0, 2031, 2032, 5, 64, 0, 0, 2032,
+ 2033, 3, 374, 187, 0, 2033, 2035, 3, 276, 138, 0, 2034, 2036, 3, 362, 181, 0, 2035,
+ 2034, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2038, 1, 0, 0, 0, 2037, 2039, 3, 370,
+ 185, 0, 2038, 2037, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 373, 1, 0, 0, 0, 2040,
+ 2041, 5, 76, 0, 0, 2041, 2043, 3, 376, 188, 0, 2042, 2044, 5, 82, 0, 0, 2043, 2042,
+ 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2046, 5, 77, 0, 0, 2046,
+ 375, 1, 0, 0, 0, 2047, 2052, 3, 378, 189, 0, 2048, 2049, 5, 82, 0, 0, 2049, 2051, 3,
+ 378, 189, 0, 2050, 2048, 1, 0, 0, 0, 2051, 2054, 1, 0, 0, 0, 2052, 2050, 1, 0, 0, 0,
+ 2052, 2053, 1, 0, 0, 0, 2053, 377, 1, 0, 0, 0, 2054, 2052, 1, 0, 0, 0, 2055, 2058, 3,
+ 284, 142, 0, 2056, 2058, 3, 380, 190, 0, 2057, 2055, 1, 0, 0, 0, 2057, 2056, 1, 0,
+ 0, 0, 2058, 379, 1, 0, 0, 0, 2059, 2062, 3, 58, 29, 0, 2060, 2062, 3, 418, 209, 0, 2061,
+ 2059, 1, 0, 0, 0, 2061, 2060, 1, 0, 0, 0, 2062, 381, 1, 0, 0, 0, 2063, 2064, 5, 17, 0,
+ 0, 2064, 2065, 3, 388, 194, 0, 2065, 2066, 5, 82, 0, 0, 2066, 383, 1, 0, 0, 0, 2067,
+ 2068, 3, 386, 193, 0, 2068, 385, 1, 0, 0, 0, 2069, 2070, 3, 284, 142, 0, 2070, 387,
+ 1, 0, 0, 0, 2071, 2074, 3, 474, 237, 0, 2072, 2074, 3, 466, 233, 0, 2073, 2071, 1,
+ 0, 0, 0, 2073, 2072, 1, 0, 0, 0, 2074, 389, 1, 0, 0, 0, 2075, 2078, 3, 392, 196, 0, 2076,
+ 2078, 3, 406, 203, 0, 2077, 2075, 1, 0, 0, 0, 2077, 2076, 1, 0, 0, 0, 2078, 391, 1,
+ 0, 0, 0, 2079, 2081, 3, 2, 1, 0, 2080, 2082, 3, 394, 197, 0, 2081, 2080, 1, 0, 0, 0,
+ 2081, 2082, 1, 0, 0, 0, 2082, 2297, 1, 0, 0, 0, 2083, 2085, 3, 396, 198, 0, 2084, 2086,
+ 3, 394, 197, 0, 2085, 2084, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2297, 1, 0, 0,
+ 0, 2087, 2089, 5, 60, 0, 0, 2088, 2090, 3, 394, 197, 0, 2089, 2088, 1, 0, 0, 0, 2089,
+ 2090, 1, 0, 0, 0, 2090, 2297, 1, 0, 0, 0, 2091, 2092, 3, 54, 27, 0, 2092, 2093, 5, 84,
+ 0, 0, 2093, 2095, 5, 60, 0, 0, 2094, 2096, 3, 394, 197, 0, 2095, 2094, 1, 0, 0, 0, 2095,
+ 2096, 1, 0, 0, 0, 2096, 2297, 1, 0, 0, 0, 2097, 2098, 5, 76, 0, 0, 2098, 2099, 3, 388,
+ 194, 0, 2099, 2101, 5, 77, 0, 0, 2100, 2102, 3, 394, 197, 0, 2101, 2100, 1, 0, 0, 0,
+ 2101, 2102, 1, 0, 0, 0, 2102, 2297, 1, 0, 0, 0, 2103, 2105, 3, 400, 200, 0, 2104, 2106,
+ 3, 394, 197, 0, 2105, 2104, 1, 0, 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 2297, 1, 0, 0,
+ 0, 2107, 2108, 3, 58, 29, 0, 2108, 2109, 5, 84, 0, 0, 2109, 2111, 3, 400, 200, 0, 2110,
+ 2112, 3, 394, 197, 0, 2111, 2110, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2297, 1,
+ 0, 0, 0, 2113, 2114, 3, 406, 203, 0, 2114, 2115, 5, 84, 0, 0, 2115, 2117, 3, 400, 200,
+ 0, 2116, 2118, 3, 394, 197, 0, 2117, 2116, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118,
+ 2297, 1, 0, 0, 0, 2119, 2120, 3, 406, 203, 0, 2120, 2121, 5, 84, 0, 0, 2121, 2123,
+ 5, 123, 0, 0, 2122, 2124, 3, 394, 197, 0, 2123, 2122, 1, 0, 0, 0, 2123, 2124, 1, 0,
+ 0, 0, 2124, 2297, 1, 0, 0, 0, 2125, 2126, 5, 57, 0, 0, 2126, 2127, 5, 84, 0, 0, 2127,
+ 2129, 5, 123, 0, 0, 2128, 2130, 3, 394, 197, 0, 2129, 2128, 1, 0, 0, 0, 2129, 2130,
+ 1, 0, 0, 0, 2130, 2297, 1, 0, 0, 0, 2131, 2132, 3, 54, 27, 0, 2132, 2133, 5, 84, 0, 0,
+ 2133, 2134, 5, 57, 0, 0, 2134, 2135, 5, 84, 0, 0, 2135, 2137, 5, 123, 0, 0, 2136, 2138,
+ 3, 394, 197, 0, 2137, 2136, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2297, 1, 0, 0,
+ 0, 2139, 2140, 3, 58, 29, 0, 2140, 2141, 5, 80, 0, 0, 2141, 2142, 3, 388, 194, 0, 2142,
+ 2144, 5, 81, 0, 0, 2143, 2145, 3, 394, 197, 0, 2144, 2143, 1, 0, 0, 0, 2144, 2145,
+ 1, 0, 0, 0, 2145, 2297, 1, 0, 0, 0, 2146, 2147, 3, 410, 205, 0, 2147, 2148, 5, 80, 0,
+ 0, 2148, 2149, 3, 388, 194, 0, 2149, 2151, 5, 81, 0, 0, 2150, 2152, 3, 394, 197, 0,
+ 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2297, 1, 0, 0, 0, 2153, 2154,
+ 3, 60, 30, 0, 2154, 2156, 5, 76, 0, 0, 2155, 2157, 3, 422, 211, 0, 2156, 2155, 1, 0,
+ 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 5, 77, 0, 0, 2159,
+ 2161, 3, 394, 197, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2297, 1,
+ 0, 0, 0, 2162, 2163, 3, 54, 27, 0, 2163, 2165, 5, 84, 0, 0, 2164, 2166, 3, 40, 20, 0,
+ 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168,
+ 5, 123, 0, 0, 2168, 2170, 5, 76, 0, 0, 2169, 2171, 3, 422, 211, 0, 2170, 2169, 1, 0,
+ 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2174, 5, 77, 0, 0, 2173,
+ 2175, 3, 394, 197, 0, 2174, 2173, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2297, 1,
+ 0, 0, 0, 2176, 2177, 3, 58, 29, 0, 2177, 2179, 5, 84, 0, 0, 2178, 2180, 3, 40, 20, 0,
+ 2179, 2178, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2182,
+ 5, 123, 0, 0, 2182, 2184, 5, 76, 0, 0, 2183, 2185, 3, 422, 211, 0, 2184, 2183, 1, 0,
+ 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186, 2188, 5, 77, 0, 0, 2187,
+ 2189, 3, 394, 197, 0, 2188, 2187, 1, 0, 0, 0, 2188, 2189, 1, 0, 0, 0, 2189, 2297, 1,
+ 0, 0, 0, 2190, 2191, 3, 406, 203, 0, 2191, 2193, 5, 84, 0, 0, 2192, 2194, 3, 40, 20,
+ 0, 2193, 2192, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 2196,
+ 5, 123, 0, 0, 2196, 2198, 5, 76, 0, 0, 2197, 2199, 3, 422, 211, 0, 2198, 2197, 1, 0,
+ 0, 0, 2198, 2199, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 2202, 5, 77, 0, 0, 2201,
+ 2203, 3, 394, 197, 0, 2202, 2201, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2297, 1,
+ 0, 0, 0, 2204, 2205, 5, 57, 0, 0, 2205, 2207, 5, 84, 0, 0, 2206, 2208, 3, 40, 20, 0,
+ 2207, 2206, 1, 0, 0, 0, 2207, 2208, 1, 0, 0, 0, 2208, 2209, 1, 0, 0, 0, 2209, 2210,
+ 5, 123, 0, 0, 2210, 2212, 5, 76, 0, 0, 2211, 2213, 3, 422, 211, 0, 2212, 2211, 1, 0,
+ 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2214, 1, 0, 0, 0, 2214, 2216, 5, 77, 0, 0, 2215,
+ 2217, 3, 394, 197, 0, 2216, 2215, 1, 0, 0, 0, 2216, 2217, 1, 0, 0, 0, 2217, 2297, 1,
+ 0, 0, 0, 2218, 2219, 3, 54, 27, 0, 2219, 2220, 5, 84, 0, 0, 2220, 2221, 5, 57, 0, 0,
+ 2221, 2223, 5, 84, 0, 0, 2222, 2224, 3, 40, 20, 0, 2223, 2222, 1, 0, 0, 0, 2223, 2224,
+ 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2226, 5, 123, 0, 0, 2226, 2228, 5, 76, 0, 0,
+ 2227, 2229, 3, 422, 211, 0, 2228, 2227, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2230,
+ 1, 0, 0, 0, 2230, 2232, 5, 77, 0, 0, 2231, 2233, 3, 394, 197, 0, 2232, 2231, 1, 0, 0,
+ 0, 2232, 2233, 1, 0, 0, 0, 2233, 2297, 1, 0, 0, 0, 2234, 2235, 3, 58, 29, 0, 2235, 2237,
+ 5, 87, 0, 0, 2236, 2238, 3, 40, 20, 0, 2237, 2236, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0,
+ 2238, 2239, 1, 0, 0, 0, 2239, 2241, 5, 123, 0, 0, 2240, 2242, 3, 394, 197, 0, 2241,
+ 2240, 1, 0, 0, 0, 2241, 2242, 1, 0, 0, 0, 2242, 2297, 1, 0, 0, 0, 2243, 2244, 3, 406,
+ 203, 0, 2244, 2246, 5, 87, 0, 0, 2245, 2247, 3, 40, 20, 0, 2246, 2245, 1, 0, 0, 0, 2246,
+ 2247, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2250, 5, 123, 0, 0, 2249, 2251, 3, 394,
+ 197, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2297, 1, 0, 0, 0, 2252,
+ 2253, 3, 16, 8, 0, 2253, 2255, 5, 87, 0, 0, 2254, 2256, 3, 40, 20, 0, 2255, 2254, 1,
+ 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2257, 1, 0, 0, 0, 2257, 2259, 5, 123, 0, 0, 2258,
+ 2260, 3, 394, 197, 0, 2259, 2258, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2297, 1,
+ 0, 0, 0, 2261, 2262, 5, 57, 0, 0, 2262, 2264, 5, 87, 0, 0, 2263, 2265, 3, 40, 20, 0,
+ 2264, 2263, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2266, 1, 0, 0, 0, 2266, 2268,
+ 5, 123, 0, 0, 2267, 2269, 3, 394, 197, 0, 2268, 2267, 1, 0, 0, 0, 2268, 2269, 1, 0,
+ 0, 0, 2269, 2297, 1, 0, 0, 0, 2270, 2271, 3, 54, 27, 0, 2271, 2272, 5, 84, 0, 0, 2272,
+ 2273, 5, 57, 0, 0, 2273, 2275, 5, 87, 0, 0, 2274, 2276, 3, 40, 20, 0, 2275, 2274, 1,
+ 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2279, 5, 123, 0, 0, 2278,
+ 2280, 3, 394, 197, 0, 2279, 2278, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2297, 1,
+ 0, 0, 0, 2281, 2282, 3, 22, 11, 0, 2282, 2284, 5, 87, 0, 0, 2283, 2285, 3, 40, 20, 0,
+ 2284, 2283, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2286, 1, 0, 0, 0, 2286, 2288,
+ 5, 48, 0, 0, 2287, 2289, 3, 394, 197, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0,
+ 0, 2289, 2297, 1, 0, 0, 0, 2290, 2291, 3, 28, 14, 0, 2291, 2292, 5, 87, 0, 0, 2292,
+ 2294, 5, 48, 0, 0, 2293, 2295, 3, 394, 197, 0, 2294, 2293, 1, 0, 0, 0, 2294, 2295,
+ 1, 0, 0, 0, 2295, 2297, 1, 0, 0, 0, 2296, 2079, 1, 0, 0, 0, 2296, 2083, 1, 0, 0, 0, 2296,
+ 2087, 1, 0, 0, 0, 2296, 2091, 1, 0, 0, 0, 2296, 2097, 1, 0, 0, 0, 2296, 2103, 1, 0, 0,
+ 0, 2296, 2107, 1, 0, 0, 0, 2296, 2113, 1, 0, 0, 0, 2296, 2119, 1, 0, 0, 0, 2296, 2125,
+ 1, 0, 0, 0, 2296, 2131, 1, 0, 0, 0, 2296, 2139, 1, 0, 0, 0, 2296, 2146, 1, 0, 0, 0, 2296,
+ 2153, 1, 0, 0, 0, 2296, 2162, 1, 0, 0, 0, 2296, 2176, 1, 0, 0, 0, 2296, 2190, 1, 0, 0,
+ 0, 2296, 2204, 1, 0, 0, 0, 2296, 2218, 1, 0, 0, 0, 2296, 2234, 1, 0, 0, 0, 2296, 2243,
+ 1, 0, 0, 0, 2296, 2252, 1, 0, 0, 0, 2296, 2261, 1, 0, 0, 0, 2296, 2270, 1, 0, 0, 0, 2296,
+ 2281, 1, 0, 0, 0, 2296, 2290, 1, 0, 0, 0, 2297, 393, 1, 0, 0, 0, 2298, 2299, 5, 84, 0,
+ 0, 2299, 2301, 3, 400, 200, 0, 2300, 2302, 3, 394, 197, 0, 2301, 2300, 1, 0, 0, 0,
+ 2301, 2302, 1, 0, 0, 0, 2302, 2336, 1, 0, 0, 0, 2303, 2304, 5, 84, 0, 0, 2304, 2306,
+ 5, 123, 0, 0, 2305, 2307, 3, 394, 197, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0,
+ 0, 0, 2307, 2336, 1, 0, 0, 0, 2308, 2309, 5, 80, 0, 0, 2309, 2310, 3, 388, 194, 0, 2310,
+ 2312, 5, 81, 0, 0, 2311, 2313, 3, 394, 197, 0, 2312, 2311, 1, 0, 0, 0, 2312, 2313,
+ 1, 0, 0, 0, 2313, 2336, 1, 0, 0, 0, 2314, 2316, 5, 84, 0, 0, 2315, 2317, 3, 40, 20, 0,
+ 2316, 2315, 1, 0, 0, 0, 2316, 2317, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2319,
+ 5, 123, 0, 0, 2319, 2321, 5, 76, 0, 0, 2320, 2322, 3, 422, 211, 0, 2321, 2320, 1, 0,
+ 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2323, 1, 0, 0, 0, 2323, 2325, 5, 77, 0, 0, 2324,
+ 2326, 3, 394, 197, 0, 2325, 2324, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2336, 1,
+ 0, 0, 0, 2327, 2329, 5, 87, 0, 0, 2328, 2330, 3, 40, 20, 0, 2329, 2328, 1, 0, 0, 0, 2329,
+ 2330, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2333, 5, 123, 0, 0, 2332, 2334, 3, 394,
+ 197, 0, 2333, 2332, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2336, 1, 0, 0, 0, 2335,
+ 2298, 1, 0, 0, 0, 2335, 2303, 1, 0, 0, 0, 2335, 2308, 1, 0, 0, 0, 2335, 2314, 1, 0, 0,
+ 0, 2335, 2327, 1, 0, 0, 0, 2336, 395, 1, 0, 0, 0, 2337, 2342, 3, 54, 27, 0, 2338, 2339,
+ 5, 80, 0, 0, 2339, 2341, 5, 81, 0, 0, 2340, 2338, 1, 0, 0, 0, 2341, 2344, 1, 0, 0, 0,
+ 2342, 2340, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2345, 1, 0, 0, 0, 2344, 2342,
+ 1, 0, 0, 0, 2345, 2346, 5, 84, 0, 0, 2346, 2347, 5, 26, 0, 0, 2347, 2373, 1, 0, 0, 0,
+ 2348, 2353, 3, 10, 5, 0, 2349, 2350, 5, 80, 0, 0, 2350, 2352, 5, 81, 0, 0, 2351, 2349,
+ 1, 0, 0, 0, 2352, 2355, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354,
+ 2356, 1, 0, 0, 0, 2355, 2353, 1, 0, 0, 0, 2356, 2357, 5, 84, 0, 0, 2357, 2358, 5, 26,
+ 0, 0, 2358, 2373, 1, 0, 0, 0, 2359, 2364, 5, 20, 0, 0, 2360, 2361, 5, 80, 0, 0, 2361,
+ 2363, 5, 81, 0, 0, 2362, 2360, 1, 0, 0, 0, 2363, 2366, 1, 0, 0, 0, 2364, 2362, 1, 0,
+ 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2367, 1, 0, 0, 0, 2366, 2364, 1, 0, 0, 0, 2367, 2368,
+ 5, 84, 0, 0, 2368, 2373, 5, 26, 0, 0, 2369, 2370, 5, 65, 0, 0, 2370, 2371, 5, 84, 0,
+ 0, 2371, 2373, 5, 26, 0, 0, 2372, 2337, 1, 0, 0, 0, 2372, 2348, 1, 0, 0, 0, 2372, 2359,
+ 1, 0, 0, 0, 2372, 2369, 1, 0, 0, 0, 2373, 397, 1, 0, 0, 0, 2374, 2384, 3, 400, 200, 0,
+ 2375, 2376, 3, 58, 29, 0, 2376, 2377, 5, 84, 0, 0, 2377, 2378, 3, 400, 200, 0, 2378,
+ 2384, 1, 0, 0, 0, 2379, 2380, 3, 390, 195, 0, 2380, 2381, 5, 84, 0, 0, 2381, 2382,
+ 3, 400, 200, 0, 2382, 2384, 1, 0, 0, 0, 2383, 2374, 1, 0, 0, 0, 2383, 2375, 1, 0, 0,
+ 0, 2383, 2379, 1, 0, 0, 0, 2384, 399, 1, 0, 0, 0, 2385, 2387, 5, 48, 0, 0, 2386, 2388,
+ 3, 40, 20, 0, 2387, 2386, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0,
+ 2389, 2390, 3, 402, 201, 0, 2390, 2392, 5, 76, 0, 0, 2391, 2393, 3, 422, 211, 0, 2392,
+ 2391, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2396, 5, 77,
+ 0, 0, 2395, 2397, 3, 110, 55, 0, 2396, 2395, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397,
+ 401, 1, 0, 0, 0, 2398, 2400, 3, 254, 127, 0, 2399, 2398, 1, 0, 0, 0, 2400, 2403, 1,
+ 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2404, 1, 0, 0, 0, 2403,
+ 2401, 1, 0, 0, 0, 2404, 2415, 5, 123, 0, 0, 2405, 2409, 5, 84, 0, 0, 2406, 2408, 3,
+ 254, 127, 0, 2407, 2406, 1, 0, 0, 0, 2408, 2411, 1, 0, 0, 0, 2409, 2407, 1, 0, 0, 0,
+ 2409, 2410, 1, 0, 0, 0, 2410, 2412, 1, 0, 0, 0, 2411, 2409, 1, 0, 0, 0, 2412, 2414,
+ 5, 123, 0, 0, 2413, 2405, 1, 0, 0, 0, 2414, 2417, 1, 0, 0, 0, 2415, 2413, 1, 0, 0, 0,
+ 2415, 2416, 1, 0, 0, 0, 2416, 2419, 1, 0, 0, 0, 2417, 2415, 1, 0, 0, 0, 2418, 2420,
+ 3, 404, 202, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 403, 1, 0, 0, 0,
+ 2421, 2424, 3, 40, 20, 0, 2422, 2424, 5, 4, 0, 0, 2423, 2421, 1, 0, 0, 0, 2423, 2422,
+ 1, 0, 0, 0, 2424, 405, 1, 0, 0, 0, 2425, 2428, 3, 408, 204, 0, 2426, 2428, 3, 410, 205,
+ 0, 2427, 2425, 1, 0, 0, 0, 2427, 2426, 1, 0, 0, 0, 2428, 407, 1, 0, 0, 0, 2429, 2430,
+ 5, 48, 0, 0, 2430, 2431, 3, 8, 4, 0, 2431, 2433, 3, 412, 206, 0, 2432, 2434, 3, 30,
+ 15, 0, 2433, 2432, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2442, 1, 0, 0, 0, 2435,
+ 2436, 5, 48, 0, 0, 2436, 2437, 3, 22, 11, 0, 2437, 2439, 3, 412, 206, 0, 2438, 2440,
+ 3, 30, 15, 0, 2439, 2438, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2442, 1, 0, 0, 0,
+ 2441, 2429, 1, 0, 0, 0, 2441, 2435, 1, 0, 0, 0, 2442, 409, 1, 0, 0, 0, 2443, 2444, 5,
+ 48, 0, 0, 2444, 2445, 3, 8, 4, 0, 2445, 2446, 3, 30, 15, 0, 2446, 2447, 3, 272, 136,
+ 0, 2447, 2454, 1, 0, 0, 0, 2448, 2449, 5, 48, 0, 0, 2449, 2450, 3, 20, 10, 0, 2450,
+ 2451, 3, 30, 15, 0, 2451, 2452, 3, 272, 136, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2443,
+ 1, 0, 0, 0, 2453, 2448, 1, 0, 0, 0, 2454, 411, 1, 0, 0, 0, 2455, 2459, 3, 414, 207, 0,
+ 2456, 2458, 3, 414, 207, 0, 2457, 2456, 1, 0, 0, 0, 2458, 2461, 1, 0, 0, 0, 2459, 2457,
+ 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 413, 1, 0, 0, 0, 2461, 2459, 1, 0, 0, 0, 2462,
+ 2464, 3, 254, 127, 0, 2463, 2462, 1, 0, 0, 0, 2464, 2467, 1, 0, 0, 0, 2465, 2463, 1,
+ 0, 0, 0, 2465, 2466, 1, 0, 0, 0, 2466, 2468, 1, 0, 0, 0, 2467, 2465, 1, 0, 0, 0, 2468,
+ 2469, 5, 80, 0, 0, 2469, 2470, 3, 388, 194, 0, 2470, 2471, 5, 81, 0, 0, 2471, 415,
+ 1, 0, 0, 0, 2472, 2473, 3, 58, 29, 0, 2473, 2474, 5, 80, 0, 0, 2474, 2475, 3, 388, 194,
+ 0, 2475, 2476, 5, 81, 0, 0, 2476, 2488, 1, 0, 0, 0, 2477, 2478, 3, 392, 196, 0, 2478,
+ 2479, 5, 80, 0, 0, 2479, 2480, 3, 388, 194, 0, 2480, 2481, 5, 81, 0, 0, 2481, 2488,
+ 1, 0, 0, 0, 2482, 2483, 3, 410, 205, 0, 2483, 2484, 5, 80, 0, 0, 2484, 2485, 3, 388,
+ 194, 0, 2485, 2486, 5, 81, 0, 0, 2486, 2488, 1, 0, 0, 0, 2487, 2472, 1, 0, 0, 0, 2487,
+ 2477, 1, 0, 0, 0, 2487, 2482, 1, 0, 0, 0, 2488, 417, 1, 0, 0, 0, 2489, 2490, 3, 390,
+ 195, 0, 2490, 2491, 5, 84, 0, 0, 2491, 2492, 5, 123, 0, 0, 2492, 2503, 1, 0, 0, 0, 2493,
+ 2494, 5, 57, 0, 0, 2494, 2495, 5, 84, 0, 0, 2495, 2503, 5, 123, 0, 0, 2496, 2497, 3,
+ 54, 27, 0, 2497, 2498, 5, 84, 0, 0, 2498, 2499, 5, 57, 0, 0, 2499, 2500, 5, 84, 0, 0,
+ 2500, 2501, 5, 123, 0, 0, 2501, 2503, 1, 0, 0, 0, 2502, 2489, 1, 0, 0, 0, 2502, 2493,
+ 1, 0, 0, 0, 2502, 2496, 1, 0, 0, 0, 2503, 419, 1, 0, 0, 0, 2504, 2505, 3, 60, 30, 0, 2505,
+ 2507, 5, 76, 0, 0, 2506, 2508, 3, 422, 211, 0, 2507, 2506, 1, 0, 0, 0, 2507, 2508,
+ 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2510, 5, 77, 0, 0, 2510, 2573, 1, 0, 0, 0, 2511,
+ 2512, 3, 54, 27, 0, 2512, 2514, 5, 84, 0, 0, 2513, 2515, 3, 40, 20, 0, 2514, 2513,
+ 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2516, 1, 0, 0, 0, 2516, 2517, 5, 123, 0, 0,
+ 2517, 2519, 5, 76, 0, 0, 2518, 2520, 3, 422, 211, 0, 2519, 2518, 1, 0, 0, 0, 2519,
+ 2520, 1, 0, 0, 0, 2520, 2521, 1, 0, 0, 0, 2521, 2522, 5, 77, 0, 0, 2522, 2573, 1, 0,
+ 0, 0, 2523, 2524, 3, 58, 29, 0, 2524, 2526, 5, 84, 0, 0, 2525, 2527, 3, 40, 20, 0, 2526,
+ 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2528, 1, 0, 0, 0, 2528, 2529, 5, 123,
+ 0, 0, 2529, 2531, 5, 76, 0, 0, 2530, 2532, 3, 422, 211, 0, 2531, 2530, 1, 0, 0, 0, 2531,
+ 2532, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 5, 77, 0, 0, 2534, 2573, 1, 0,
+ 0, 0, 2535, 2536, 3, 390, 195, 0, 2536, 2538, 5, 84, 0, 0, 2537, 2539, 3, 40, 20, 0,
+ 2538, 2537, 1, 0, 0, 0, 2538, 2539, 1, 0, 0, 0, 2539, 2540, 1, 0, 0, 0, 2540, 2541,
+ 5, 123, 0, 0, 2541, 2543, 5, 76, 0, 0, 2542, 2544, 3, 422, 211, 0, 2543, 2542, 1, 0,
+ 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2545, 1, 0, 0, 0, 2545, 2546, 5, 77, 0, 0, 2546,
+ 2573, 1, 0, 0, 0, 2547, 2548, 5, 57, 0, 0, 2548, 2550, 5, 84, 0, 0, 2549, 2551, 3, 40,
+ 20, 0, 2550, 2549, 1, 0, 0, 0, 2550, 2551, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552,
+ 2553, 5, 123, 0, 0, 2553, 2555, 5, 76, 0, 0, 2554, 2556, 3, 422, 211, 0, 2555, 2554,
+ 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 2557, 1, 0, 0, 0, 2557, 2573, 5, 77, 0, 0, 2558,
+ 2559, 3, 54, 27, 0, 2559, 2560, 5, 84, 0, 0, 2560, 2561, 5, 57, 0, 0, 2561, 2563, 5,
+ 84, 0, 0, 2562, 2564, 3, 40, 20, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564,
+ 2565, 1, 0, 0, 0, 2565, 2566, 5, 123, 0, 0, 2566, 2568, 5, 76, 0, 0, 2567, 2569, 3,
+ 422, 211, 0, 2568, 2567, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0,
+ 2570, 2571, 5, 77, 0, 0, 2571, 2573, 1, 0, 0, 0, 2572, 2504, 1, 0, 0, 0, 2572, 2511,
+ 1, 0, 0, 0, 2572, 2523, 1, 0, 0, 0, 2572, 2535, 1, 0, 0, 0, 2572, 2547, 1, 0, 0, 0, 2572,
+ 2558, 1, 0, 0, 0, 2573, 421, 1, 0, 0, 0, 2574, 2579, 3, 388, 194, 0, 2575, 2576, 5,
+ 83, 0, 0, 2576, 2578, 3, 388, 194, 0, 2577, 2575, 1, 0, 0, 0, 2578, 2581, 1, 0, 0, 0,
+ 2579, 2577, 1, 0, 0, 0, 2579, 2580, 1, 0, 0, 0, 2580, 423, 1, 0, 0, 0, 2581, 2579, 1,
+ 0, 0, 0, 2582, 2583, 3, 58, 29, 0, 2583, 2585, 5, 87, 0, 0, 2584, 2586, 3, 40, 20, 0,
+ 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 2588,
+ 5, 123, 0, 0, 2588, 2630, 1, 0, 0, 0, 2589, 2590, 3, 390, 195, 0, 2590, 2592, 5, 87,
+ 0, 0, 2591, 2593, 3, 40, 20, 0, 2592, 2591, 1, 0, 0, 0, 2592, 2593, 1, 0, 0, 0, 2593,
+ 2594, 1, 0, 0, 0, 2594, 2595, 5, 123, 0, 0, 2595, 2630, 1, 0, 0, 0, 2596, 2597, 3, 16,
+ 8, 0, 2597, 2599, 5, 87, 0, 0, 2598, 2600, 3, 40, 20, 0, 2599, 2598, 1, 0, 0, 0, 2599,
+ 2600, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2602, 5, 123, 0, 0, 2602, 2630, 1, 0,
+ 0, 0, 2603, 2604, 5, 57, 0, 0, 2604, 2606, 5, 87, 0, 0, 2605, 2607, 3, 40, 20, 0, 2606,
+ 2605, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2630, 5, 123,
+ 0, 0, 2609, 2610, 3, 54, 27, 0, 2610, 2611, 5, 84, 0, 0, 2611, 2612, 5, 57, 0, 0, 2612,
+ 2614, 5, 87, 0, 0, 2613, 2615, 3, 40, 20, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, 1,
+ 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 2617, 5, 123, 0, 0, 2617, 2630, 1, 0, 0, 0, 2618,
+ 2619, 3, 22, 11, 0, 2619, 2621, 5, 87, 0, 0, 2620, 2622, 3, 40, 20, 0, 2621, 2620,
+ 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2623, 1, 0, 0, 0, 2623, 2624, 5, 48, 0, 0, 2624,
+ 2630, 1, 0, 0, 0, 2625, 2626, 3, 28, 14, 0, 2626, 2627, 5, 87, 0, 0, 2627, 2628, 5,
+ 48, 0, 0, 2628, 2630, 1, 0, 0, 0, 2629, 2582, 1, 0, 0, 0, 2629, 2589, 1, 0, 0, 0, 2629,
+ 2596, 1, 0, 0, 0, 2629, 2603, 1, 0, 0, 0, 2629, 2609, 1, 0, 0, 0, 2629, 2618, 1, 0, 0,
+ 0, 2629, 2625, 1, 0, 0, 0, 2630, 425, 1, 0, 0, 0, 2631, 2633, 3, 390, 195, 0, 2632,
+ 2634, 3, 428, 214, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 2640, 1,
+ 0, 0, 0, 2635, 2637, 3, 58, 29, 0, 2636, 2638, 3, 428, 214, 0, 2637, 2636, 1, 0, 0,
+ 0, 2637, 2638, 1, 0, 0, 0, 2638, 2640, 1, 0, 0, 0, 2639, 2631, 1, 0, 0, 0, 2639, 2635,
+ 1, 0, 0, 0, 2640, 427, 1, 0, 0, 0, 2641, 2643, 5, 102, 0, 0, 2642, 2644, 3, 428, 214,
+ 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2650, 1, 0, 0, 0, 2645, 2647,
+ 5, 103, 0, 0, 2646, 2648, 3, 428, 214, 0, 2647, 2646, 1, 0, 0, 0, 2647, 2648, 1, 0,
+ 0, 0, 2648, 2650, 1, 0, 0, 0, 2649, 2641, 1, 0, 0, 0, 2649, 2645, 1, 0, 0, 0, 2650, 429,
+ 1, 0, 0, 0, 2651, 2652, 3, 426, 213, 0, 2652, 2653, 5, 102, 0, 0, 2653, 431, 1, 0, 0,
+ 0, 2654, 2655, 3, 426, 213, 0, 2655, 2656, 5, 103, 0, 0, 2656, 433, 1, 0, 0, 0, 2657,
+ 2665, 3, 436, 218, 0, 2658, 2665, 3, 438, 219, 0, 2659, 2660, 5, 104, 0, 0, 2660,
+ 2665, 3, 434, 217, 0, 2661, 2662, 5, 105, 0, 0, 2662, 2665, 3, 434, 217, 0, 2663,
+ 2665, 3, 440, 220, 0, 2664, 2657, 1, 0, 0, 0, 2664, 2658, 1, 0, 0, 0, 2664, 2659, 1,
+ 0, 0, 0, 2664, 2661, 1, 0, 0, 0, 2664, 2663, 1, 0, 0, 0, 2665, 435, 1, 0, 0, 0, 2666,
+ 2667, 5, 102, 0, 0, 2667, 2668, 3, 434, 217, 0, 2668, 437, 1, 0, 0, 0, 2669, 2670,
+ 5, 103, 0, 0, 2670, 2671, 3, 434, 217, 0, 2671, 439, 1, 0, 0, 0, 2672, 2680, 3, 426,
+ 213, 0, 2673, 2674, 5, 92, 0, 0, 2674, 2680, 3, 434, 217, 0, 2675, 2676, 5, 91, 0,
+ 0, 2676, 2680, 3, 434, 217, 0, 2677, 2680, 3, 442, 221, 0, 2678, 2680, 3, 486, 243,
+ 0, 2679, 2672, 1, 0, 0, 0, 2679, 2673, 1, 0, 0, 0, 2679, 2675, 1, 0, 0, 0, 2679, 2677,
+ 1, 0, 0, 0, 2679, 2678, 1, 0, 0, 0, 2680, 441, 1, 0, 0, 0, 2681, 2682, 5, 76, 0, 0, 2682,
+ 2683, 3, 8, 4, 0, 2683, 2684, 5, 77, 0, 0, 2684, 2685, 3, 434, 217, 0, 2685, 2709,
+ 1, 0, 0, 0, 2686, 2687, 5, 76, 0, 0, 2687, 2691, 3, 16, 8, 0, 2688, 2690, 3, 38, 19,
+ 0, 2689, 2688, 1, 0, 0, 0, 2690, 2693, 1, 0, 0, 0, 2691, 2689, 1, 0, 0, 0, 2691, 2692,
+ 1, 0, 0, 0, 2692, 2694, 1, 0, 0, 0, 2693, 2691, 1, 0, 0, 0, 2694, 2695, 5, 77, 0, 0, 2695,
+ 2696, 3, 440, 220, 0, 2696, 2709, 1, 0, 0, 0, 2697, 2698, 5, 76, 0, 0, 2698, 2702,
+ 3, 16, 8, 0, 2699, 2701, 3, 38, 19, 0, 2700, 2699, 1, 0, 0, 0, 2701, 2704, 1, 0, 0, 0,
+ 2702, 2700, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2705, 1, 0, 0, 0, 2704, 2702,
+ 1, 0, 0, 0, 2705, 2706, 5, 77, 0, 0, 2706, 2707, 3, 474, 237, 0, 2707, 2709, 1, 0, 0,
+ 0, 2708, 2681, 1, 0, 0, 0, 2708, 2686, 1, 0, 0, 0, 2708, 2697, 1, 0, 0, 0, 2709, 443,
+ 1, 0, 0, 0, 2710, 2711, 6, 222, -1, 0, 2711, 2712, 3, 434, 217, 0, 2712, 2724, 1, 0,
+ 0, 0, 2713, 2714, 10, 3, 0, 0, 2714, 2715, 5, 106, 0, 0, 2715, 2723, 3, 434, 217, 0,
+ 2716, 2717, 10, 2, 0, 0, 2717, 2718, 5, 107, 0, 0, 2718, 2723, 3, 434, 217, 0, 2719,
+ 2720, 10, 1, 0, 0, 2720, 2721, 5, 111, 0, 0, 2721, 2723, 3, 434, 217, 0, 2722, 2713,
+ 1, 0, 0, 0, 2722, 2716, 1, 0, 0, 0, 2722, 2719, 1, 0, 0, 0, 2723, 2726, 1, 0, 0, 0, 2724,
+ 2722, 1, 0, 0, 0, 2724, 2725, 1, 0, 0, 0, 2725, 445, 1, 0, 0, 0, 2726, 2724, 1, 0, 0,
+ 0, 2727, 2728, 6, 223, -1, 0, 2728, 2729, 3, 444, 222, 0, 2729, 2738, 1, 0, 0, 0, 2730,
+ 2731, 10, 2, 0, 0, 2731, 2732, 5, 104, 0, 0, 2732, 2737, 3, 444, 222, 0, 2733, 2734,
+ 10, 1, 0, 0, 2734, 2735, 5, 105, 0, 0, 2735, 2737, 3, 444, 222, 0, 2736, 2730, 1, 0,
+ 0, 0, 2736, 2733, 1, 0, 0, 0, 2737, 2740, 1, 0, 0, 0, 2738, 2736, 1, 0, 0, 0, 2738, 2739,
+ 1, 0, 0, 0, 2739, 447, 1, 0, 0, 0, 2740, 2738, 1, 0, 0, 0, 2741, 2742, 6, 224, -1, 0,
+ 2742, 2743, 3, 446, 223, 0, 2743, 2759, 1, 0, 0, 0, 2744, 2745, 10, 3, 0, 0, 2745,
+ 2746, 5, 90, 0, 0, 2746, 2747, 5, 90, 0, 0, 2747, 2758, 3, 446, 223, 0, 2748, 2749,
+ 10, 2, 0, 0, 2749, 2750, 5, 89, 0, 0, 2750, 2751, 5, 89, 0, 0, 2751, 2758, 3, 446, 223,
+ 0, 2752, 2753, 10, 1, 0, 0, 2753, 2754, 5, 89, 0, 0, 2754, 2755, 5, 89, 0, 0, 2755,
+ 2756, 5, 89, 0, 0, 2756, 2758, 3, 446, 223, 0, 2757, 2744, 1, 0, 0, 0, 2757, 2748,
+ 1, 0, 0, 0, 2757, 2752, 1, 0, 0, 0, 2758, 2761, 1, 0, 0, 0, 2759, 2757, 1, 0, 0, 0, 2759,
+ 2760, 1, 0, 0, 0, 2760, 449, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2762, 2763, 6, 225,
+ -1, 0, 2763, 2764, 3, 448, 224, 0, 2764, 2785, 1, 0, 0, 0, 2765, 2766, 10, 5, 0, 0,
+ 2766, 2767, 5, 90, 0, 0, 2767, 2784, 3, 448, 224, 0, 2768, 2769, 10, 4, 0, 0, 2769,
+ 2770, 5, 89, 0, 0, 2770, 2784, 3, 448, 224, 0, 2771, 2772, 10, 3, 0, 0, 2772, 2773,
+ 5, 97, 0, 0, 2773, 2784, 3, 448, 224, 0, 2774, 2775, 10, 2, 0, 0, 2775, 2776, 5, 98,
+ 0, 0, 2776, 2784, 3, 448, 224, 0, 2777, 2778, 10, 1, 0, 0, 2778, 2781, 5, 43, 0, 0,
+ 2779, 2782, 3, 16, 8, 0, 2780, 2782, 3, 384, 192, 0, 2781, 2779, 1, 0, 0, 0, 2781,
+ 2780, 1, 0, 0, 0, 2782, 2784, 1, 0, 0, 0, 2783, 2765, 1, 0, 0, 0, 2783, 2768, 1, 0, 0,
+ 0, 2783, 2771, 1, 0, 0, 0, 2783, 2774, 1, 0, 0, 0, 2783, 2777, 1, 0, 0, 0, 2784, 2787,
+ 1, 0, 0, 0, 2785, 2783, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 451, 1, 0, 0, 0, 2787,
+ 2785, 1, 0, 0, 0, 2788, 2789, 6, 226, -1, 0, 2789, 2790, 3, 450, 225, 0, 2790, 2799,
+ 1, 0, 0, 0, 2791, 2792, 10, 2, 0, 0, 2792, 2793, 5, 96, 0, 0, 2793, 2798, 3, 450, 225,
+ 0, 2794, 2795, 10, 1, 0, 0, 2795, 2796, 5, 99, 0, 0, 2796, 2798, 3, 450, 225, 0, 2797,
+ 2791, 1, 0, 0, 0, 2797, 2794, 1, 0, 0, 0, 2798, 2801, 1, 0, 0, 0, 2799, 2797, 1, 0, 0,
+ 0, 2799, 2800, 1, 0, 0, 0, 2800, 453, 1, 0, 0, 0, 2801, 2799, 1, 0, 0, 0, 2802, 2803,
+ 6, 227, -1, 0, 2803, 2804, 3, 452, 226, 0, 2804, 2810, 1, 0, 0, 0, 2805, 2806, 10,
+ 1, 0, 0, 2806, 2807, 5, 108, 0, 0, 2807, 2809, 3, 452, 226, 0, 2808, 2805, 1, 0, 0,
+ 0, 2809, 2812, 1, 0, 0, 0, 2810, 2808, 1, 0, 0, 0, 2810, 2811, 1, 0, 0, 0, 2811, 455,
+ 1, 0, 0, 0, 2812, 2810, 1, 0, 0, 0, 2813, 2814, 6, 228, -1, 0, 2814, 2815, 3, 454, 227,
+ 0, 2815, 2821, 1, 0, 0, 0, 2816, 2817, 10, 1, 0, 0, 2817, 2818, 5, 110, 0, 0, 2818,
+ 2820, 3, 454, 227, 0, 2819, 2816, 1, 0, 0, 0, 2820, 2823, 1, 0, 0, 0, 2821, 2819, 1,
+ 0, 0, 0, 2821, 2822, 1, 0, 0, 0, 2822, 457, 1, 0, 0, 0, 2823, 2821, 1, 0, 0, 0, 2824,
+ 2825, 6, 229, -1, 0, 2825, 2826, 3, 456, 228, 0, 2826, 2832, 1, 0, 0, 0, 2827, 2828,
+ 10, 1, 0, 0, 2828, 2829, 5, 109, 0, 0, 2829, 2831, 3, 456, 228, 0, 2830, 2827, 1, 0,
+ 0, 0, 2831, 2834, 1, 0, 0, 0, 2832, 2830, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 459,
+ 1, 0, 0, 0, 2834, 2832, 1, 0, 0, 0, 2835, 2836, 6, 230, -1, 0, 2836, 2837, 3, 458, 229,
+ 0, 2837, 2843, 1, 0, 0, 0, 2838, 2839, 10, 1, 0, 0, 2839, 2840, 5, 100, 0, 0, 2840,
+ 2842, 3, 458, 229, 0, 2841, 2838, 1, 0, 0, 0, 2842, 2845, 1, 0, 0, 0, 2843, 2841, 1,
+ 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 461, 1, 0, 0, 0, 2845, 2843, 1, 0, 0, 0, 2846,
+ 2847, 6, 231, -1, 0, 2847, 2848, 3, 460, 230, 0, 2848, 2854, 1, 0, 0, 0, 2849, 2850,
+ 10, 1, 0, 0, 2850, 2851, 5, 101, 0, 0, 2851, 2853, 3, 460, 230, 0, 2852, 2849, 1, 0,
+ 0, 0, 2853, 2856, 1, 0, 0, 0, 2854, 2852, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 463,
+ 1, 0, 0, 0, 2856, 2854, 1, 0, 0, 0, 2857, 2871, 3, 462, 231, 0, 2858, 2859, 3, 462,
+ 231, 0, 2859, 2860, 5, 93, 0, 0, 2860, 2861, 3, 388, 194, 0, 2861, 2862, 5, 94, 0,
+ 0, 2862, 2863, 3, 464, 232, 0, 2863, 2871, 1, 0, 0, 0, 2864, 2865, 3, 462, 231, 0,
+ 2865, 2866, 5, 93, 0, 0, 2866, 2867, 3, 388, 194, 0, 2867, 2868, 5, 94, 0, 0, 2868,
+ 2869, 3, 474, 237, 0, 2869, 2871, 1, 0, 0, 0, 2870, 2857, 1, 0, 0, 0, 2870, 2858, 1,
+ 0, 0, 0, 2870, 2864, 1, 0, 0, 0, 2871, 465, 1, 0, 0, 0, 2872, 2875, 3, 464, 232, 0, 2873,
+ 2875, 3, 468, 234, 0, 2874, 2872, 1, 0, 0, 0, 2874, 2873, 1, 0, 0, 0, 2875, 467, 1,
+ 0, 0, 0, 2876, 2877, 3, 470, 235, 0, 2877, 2878, 3, 472, 236, 0, 2878, 2879, 3, 388,
+ 194, 0, 2879, 469, 1, 0, 0, 0, 2880, 2884, 3, 58, 29, 0, 2881, 2884, 3, 418, 209, 0,
+ 2882, 2884, 3, 416, 208, 0, 2883, 2880, 1, 0, 0, 0, 2883, 2881, 1, 0, 0, 0, 2883, 2882,
+ 1, 0, 0, 0, 2884, 471, 1, 0, 0, 0, 2885, 2886, 7, 5, 0, 0, 2886, 473, 1, 0, 0, 0, 2887,
+ 2888, 3, 476, 238, 0, 2888, 2889, 5, 95, 0, 0, 2889, 2890, 3, 484, 242, 0, 2890, 475,
+ 1, 0, 0, 0, 2891, 2893, 5, 76, 0, 0, 2892, 2894, 3, 478, 239, 0, 2893, 2892, 1, 0, 0,
+ 0, 2893, 2894, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 2898, 5, 77, 0, 0, 2896, 2898,
+ 5, 123, 0, 0, 2897, 2891, 1, 0, 0, 0, 2897, 2896, 1, 0, 0, 0, 2898, 477, 1, 0, 0, 0, 2899,
+ 2904, 3, 480, 240, 0, 2900, 2901, 5, 83, 0, 0, 2901, 2903, 3, 480, 240, 0, 2902, 2900,
+ 1, 0, 0, 0, 2903, 2906, 1, 0, 0, 0, 2904, 2902, 1, 0, 0, 0, 2904, 2905, 1, 0, 0, 0, 2905,
+ 2916, 1, 0, 0, 0, 2906, 2904, 1, 0, 0, 0, 2907, 2912, 5, 123, 0, 0, 2908, 2909, 5, 83,
+ 0, 0, 2909, 2911, 5, 123, 0, 0, 2910, 2908, 1, 0, 0, 0, 2911, 2914, 1, 0, 0, 0, 2912,
+ 2910, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2916, 1, 0, 0, 0, 2914, 2912, 1, 0, 0,
+ 0, 2915, 2899, 1, 0, 0, 0, 2915, 2907, 1, 0, 0, 0, 2916, 479, 1, 0, 0, 0, 2917, 2919,
+ 3, 164, 82, 0, 2918, 2917, 1, 0, 0, 0, 2919, 2922, 1, 0, 0, 0, 2920, 2918, 1, 0, 0, 0,
+ 2920, 2921, 1, 0, 0, 0, 2921, 2923, 1, 0, 0, 0, 2922, 2920, 1, 0, 0, 0, 2923, 2924,
+ 3, 482, 241, 0, 2924, 2925, 3, 124, 62, 0, 2925, 2928, 1, 0, 0, 0, 2926, 2928, 3, 162,
+ 81, 0, 2927, 2920, 1, 0, 0, 0, 2927, 2926, 1, 0, 0, 0, 2928, 481, 1, 0, 0, 0, 2929, 2932,
+ 3, 128, 64, 0, 2930, 2932, 5, 15, 0, 0, 2931, 2929, 1, 0, 0, 0, 2931, 2930, 1, 0, 0,
+ 0, 2932, 483, 1, 0, 0, 0, 2933, 2936, 3, 388, 194, 0, 2934, 2936, 3, 276, 138, 0, 2935,
+ 2933, 1, 0, 0, 0, 2935, 2934, 1, 0, 0, 0, 2936, 485, 1, 0, 0, 0, 2937, 2938, 5, 58, 0,
+ 0, 2938, 2939, 5, 76, 0, 0, 2939, 2940, 3, 388, 194, 0, 2940, 2941, 5, 77, 0, 0, 2941,
+ 2942, 3, 316, 158, 0, 2942, 487, 1, 0, 0, 0, 2943, 2944, 3, 388, 194, 0, 2944, 489,
+ 1, 0, 0, 0, 360, 502, 507, 511, 520, 526, 531, 534, 539, 544, 549, 552, 557, 562,
+ 569, 574, 581, 586, 588, 595, 609, 614, 622, 629, 635, 640, 650, 653, 667, 672,
+ 677, 682, 688, 693, 698, 703, 708, 713, 722, 726, 729, 734, 740, 746, 754, 763,
+ 774, 803, 808, 812, 820, 827, 836, 850, 853, 865, 868, 884, 889, 896, 901, 907,
+ 910, 913, 916, 930, 941, 955, 964, 971, 980, 987, 992, 1007, 1014, 1020, 1024,
+ 1028, 1032, 1036, 1041, 1048, 1051, 1055, 1058, 1064, 1069, 1072, 1076, 1080,
+ 1086, 1091, 1093, 1102, 1109, 1125, 1131, 1134, 1139, 1143, 1150, 1153, 1157,
+ 1162, 1168, 1177, 1183, 1190, 1195, 1202, 1210, 1220, 1225, 1229, 1239, 1244,
+ 1252, 1255, 1262, 1265, 1273, 1276, 1281, 1286, 1292, 1296, 1301, 1306, 1311,
+ 1317, 1323, 1326, 1329, 1338, 1344, 1350, 1353, 1356, 1364, 1370, 1376, 1380,
+ 1386, 1395, 1401, 1408, 1413, 1420, 1432, 1439, 1444, 1452, 1457, 1463, 1466,
+ 1469, 1482, 1493, 1500, 1510, 1515, 1526, 1531, 1544, 1549, 1561, 1571, 1576,
+ 1584, 1587, 1594, 1602, 1608, 1617, 1627, 1631, 1634, 1643, 1657, 1660, 1669,
+ 1674, 1682, 1688, 1692, 1697, 1702, 1706, 1717, 1724, 1739, 1761, 1789, 1804,
+ 1813, 1821, 1825, 1834, 1843, 1854, 1858, 1884, 1888, 1893, 1897, 1901, 1909,
+ 1913, 1917, 1924, 1933, 1954, 1960, 1966, 1991, 1996, 2002, 2014, 2025, 2035,
+ 2038, 2043, 2052, 2057, 2061, 2073, 2077, 2081, 2085, 2089, 2095, 2101, 2105,
+ 2111, 2117, 2123, 2129, 2137, 2144, 2151, 2156, 2160, 2165, 2170, 2174, 2179,
+ 2184, 2188, 2193, 2198, 2202, 2207, 2212, 2216, 2223, 2228, 2232, 2237, 2241,
+ 2246, 2250, 2255, 2259, 2264, 2268, 2275, 2279, 2284, 2288, 2294, 2296, 2301,
+ 2306, 2312, 2316, 2321, 2325, 2329, 2333, 2335, 2342, 2353, 2364, 2372, 2383,
+ 2387, 2392, 2396, 2401, 2409, 2415, 2419, 2423, 2427, 2433, 2439, 2441, 2453,
+ 2459, 2465, 2487, 2502, 2507, 2514, 2519, 2526, 2531, 2538, 2543, 2550, 2555,
+ 2563, 2568, 2572, 2579, 2585, 2592, 2599, 2606, 2614, 2621, 2629, 2633, 2637,
+ 2639, 2643, 2647, 2649, 2664, 2679, 2691, 2702, 2708, 2722, 2724, 2736, 2738,
+ 2757, 2759, 2781, 2783, 2785, 2797, 2799, 2810, 2821, 2832, 2843, 2854, 2870,
+ 2874, 2883, 2893, 2897, 2904, 2912, 2915, 2920, 2927, 2931, 2935
+ ]
+
+
+class Java20Parser(Parser):
+ grammarFileName = "Java20Parser.g4"
+
+ atn = ATNDeserializer().deserialize(serializedATN())
+
+ decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
+
+ sharedContextCache = PredictionContextCache()
+
+ literalNames = ["", "'exports'", "'module'", "'non-sealed'",
+ "'<>'", "'open'", "'opens'", "'permits'", "'provides'",
+ "'record'", "'requires'", "'sealed'", "'to'", "'transitive'",
+ "'uses'", "'var'", "'with'", "'yield'", "'abstract'",
+ "'assert'", "'boolean'", "'break'", "'byte'", "'case'",
+ "'catch'", "'char'", "'class'", "'const'", "'continue'",
+ "'default'", "'do'", "'double'", "'else'", "'enum'",
+ "'extends'", "'final'", "'finally'", "'float'", "'for'",
+ "'if'", "'goto'", "'implements'", "'import'", "'instanceof'",
+ "'int'", "'interface'", "'long'", "'native'", "'new'",
+ "'package'", "'private'", "'protected'", "'public'",
+ "'return'", "'short'", "'static'", "'strictfp'", "'super'",
+ "'switch'", "'synchronized'", "'this'", "'throw'",
+ "'throws'", "'transient'", "'try'", "'void'", "'volatile'",
+ "'while'", "'_'", "", "", "",
+ "", "", "", "'null'", "'('",
+ "')'", "'{'", "'}'", "'['", "']'", "';'", "','", "'.'",
+ "'...'", "'@'", "'::'", "'='", "'>'", "'<'", "'!'",
+ "'~'", "'?'", "':'", "'->'", "'=='", "'<='", "'>='",
+ "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'",
+ "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='",
+ "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='",
+ "'>>='", "'>>>='"]
+
+ symbolicNames = ["", "EXPORTS", "MODULE", "NONSEALED", "OACA",
+ "OPEN", "OPENS", "PERMITS", "PROVIDES", "RECORD",
+ "REQUIRES", "SEALED", "TO", "TRANSITIVE", "USES",
+ "VAR", "WITH", "YIELD", "ABSTRACT", "ASSERT", "BOOLEAN",
+ "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS",
+ "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE",
+ "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR",
+ "IF", "GOTO", "IMPLEMENTS", "IMPORT", "INSTANCEOF",
+ "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE",
+ "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT",
+ "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED",
+ "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID",
+ "VOLATILE", "WHILE", "UNDER_SCORE", "IntegerLiteral",
+ "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral",
+ "StringLiteral", "TextBlock", "NullLiteral", "LPAREN",
+ "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK",
+ "SEMI", "COMMA", "DOT", "ELLIPSIS", "AT", "COLONCOLON",
+ "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION",
+ "COLON", "ARROW", "EQUAL", "LE", "GE", "NOTEQUAL",
+ "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL", "DIV",
+ "BITAND", "BITOR", "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN",
+ "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN",
+ "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN",
+ "URSHIFT_ASSIGN", "Identifier", "WS", "COMMENT", "LINE_COMMENT"]
+
+ RULE_start_ = 0
+ RULE_literal = 1
+ RULE_typeIdentifier = 2
+ RULE_unqualifiedMethodIdentifier = 3
+ RULE_primitiveType = 4
+ RULE_numericType = 5
+ RULE_integralType = 6
+ RULE_floatingPointType = 7
+ RULE_referenceType = 8
+ RULE_coit = 9
+ RULE_classOrInterfaceType = 10
+ RULE_classType = 11
+ RULE_interfaceType = 12
+ RULE_typeVariable = 13
+ RULE_arrayType = 14
+ RULE_dims = 15
+ RULE_typeParameter = 16
+ RULE_typeParameterModifier = 17
+ RULE_typeBound = 18
+ RULE_additionalBound = 19
+ RULE_typeArguments = 20
+ RULE_typeArgumentList = 21
+ RULE_typeArgument = 22
+ RULE_wildcard = 23
+ RULE_wildcardBounds = 24
+ RULE_moduleName = 25
+ RULE_packageName = 26
+ RULE_typeName = 27
+ RULE_packageOrTypeName = 28
+ RULE_expressionName = 29
+ RULE_methodName = 30
+ RULE_ambiguousName = 31
+ RULE_compilationUnit = 32
+ RULE_ordinaryCompilationUnit = 33
+ RULE_modularCompilationUnit = 34
+ RULE_packageDeclaration = 35
+ RULE_packageModifier = 36
+ RULE_importDeclaration = 37
+ RULE_singleTypeImportDeclaration = 38
+ RULE_typeImportOnDemandDeclaration = 39
+ RULE_singleStaticImportDeclaration = 40
+ RULE_staticImportOnDemandDeclaration = 41
+ RULE_topLevelClassOrInterfaceDeclaration = 42
+ RULE_moduleDeclaration = 43
+ RULE_moduleDirective = 44
+ RULE_requiresModifier = 45
+ RULE_classDeclaration = 46
+ RULE_normalClassDeclaration = 47
+ RULE_classModifier = 48
+ RULE_typeParameters = 49
+ RULE_typeParameterList = 50
+ RULE_classExtends = 51
+ RULE_classImplements = 52
+ RULE_interfaceTypeList = 53
+ RULE_classPermits = 54
+ RULE_classBody = 55
+ RULE_classBodyDeclaration = 56
+ RULE_classMemberDeclaration = 57
+ RULE_fieldDeclaration = 58
+ RULE_fieldModifier = 59
+ RULE_variableDeclaratorList = 60
+ RULE_variableDeclarator = 61
+ RULE_variableDeclaratorId = 62
+ RULE_variableInitializer = 63
+ RULE_unannType = 64
+ RULE_unannPrimitiveType = 65
+ RULE_unannReferenceType = 66
+ RULE_unannClassOrInterfaceType = 67
+ RULE_uCOIT = 68
+ RULE_unannClassType = 69
+ RULE_unannInterfaceType = 70
+ RULE_unannTypeVariable = 71
+ RULE_unannArrayType = 72
+ RULE_methodDeclaration = 73
+ RULE_methodModifier = 74
+ RULE_methodHeader = 75
+ RULE_result = 76
+ RULE_methodDeclarator = 77
+ RULE_receiverParameter = 78
+ RULE_formalParameterList = 79
+ RULE_formalParameter = 80
+ RULE_variableArityParameter = 81
+ RULE_variableModifier = 82
+ RULE_throwsT = 83
+ RULE_exceptionTypeList = 84
+ RULE_exceptionType = 85
+ RULE_methodBody = 86
+ RULE_instanceInitializer = 87
+ RULE_staticInitializer = 88
+ RULE_constructorDeclaration = 89
+ RULE_constructorModifier = 90
+ RULE_constructorDeclarator = 91
+ RULE_simpleTypeName = 92
+ RULE_constructorBody = 93
+ RULE_explicitConstructorInvocation = 94
+ RULE_enumDeclaration = 95
+ RULE_enumBody = 96
+ RULE_enumConstantList = 97
+ RULE_enumConstant = 98
+ RULE_enumConstantModifier = 99
+ RULE_enumBodyDeclarations = 100
+ RULE_recordDeclaration = 101
+ RULE_recordHeader = 102
+ RULE_recordComponentList = 103
+ RULE_recordComponent = 104
+ RULE_variableArityRecordComponent = 105
+ RULE_recordComponentModifier = 106
+ RULE_recordBody = 107
+ RULE_recordBodyDeclaration = 108
+ RULE_compactConstructorDeclaration = 109
+ RULE_interfaceDeclaration = 110
+ RULE_normalInterfaceDeclaration = 111
+ RULE_interfaceModifier = 112
+ RULE_interfaceExtends = 113
+ RULE_interfacePermits = 114
+ RULE_interfaceBody = 115
+ RULE_interfaceMemberDeclaration = 116
+ RULE_constantDeclaration = 117
+ RULE_constantModifier = 118
+ RULE_interfaceMethodDeclaration = 119
+ RULE_interfaceMethodModifier = 120
+ RULE_annotationInterfaceDeclaration = 121
+ RULE_annotationInterfaceBody = 122
+ RULE_annotationInterfaceMemberDeclaration = 123
+ RULE_annotationInterfaceElementDeclaration = 124
+ RULE_annotationInterfaceElementModifier = 125
+ RULE_defaultValue = 126
+ RULE_annotation = 127
+ RULE_normalAnnotation = 128
+ RULE_elementValuePairList = 129
+ RULE_elementValuePair = 130
+ RULE_elementValue = 131
+ RULE_elementValueArrayInitializer = 132
+ RULE_elementValueList = 133
+ RULE_markerAnnotation = 134
+ RULE_singleElementAnnotation = 135
+ RULE_arrayInitializer = 136
+ RULE_variableInitializerList = 137
+ RULE_block = 138
+ RULE_blockStatements = 139
+ RULE_blockStatement = 140
+ RULE_localClassOrInterfaceDeclaration = 141
+ RULE_localVariableDeclaration = 142
+ RULE_localVariableType = 143
+ RULE_localVariableDeclarationStatement = 144
+ RULE_statement = 145
+ RULE_statementNoShortIf = 146
+ RULE_statementWithoutTrailingSubstatement = 147
+ RULE_emptyStatement_ = 148
+ RULE_labeledStatement = 149
+ RULE_labeledStatementNoShortIf = 150
+ RULE_expressionStatement = 151
+ RULE_statementExpression = 152
+ RULE_ifThenStatement = 153
+ RULE_ifThenElseStatement = 154
+ RULE_ifThenElseStatementNoShortIf = 155
+ RULE_assertStatement = 156
+ RULE_switchStatement = 157
+ RULE_switchBlock = 158
+ RULE_switchRule = 159
+ RULE_switchBlockStatementGroup = 160
+ RULE_switchLabel = 161
+ RULE_caseConstant = 162
+ RULE_whileStatement = 163
+ RULE_whileStatementNoShortIf = 164
+ RULE_doStatement = 165
+ RULE_forStatement = 166
+ RULE_forStatementNoShortIf = 167
+ RULE_basicForStatement = 168
+ RULE_basicForStatementNoShortIf = 169
+ RULE_forInit = 170
+ RULE_forUpdate = 171
+ RULE_statementExpressionList = 172
+ RULE_enhancedForStatement = 173
+ RULE_enhancedForStatementNoShortIf = 174
+ RULE_breakStatement = 175
+ RULE_continueStatement = 176
+ RULE_returnStatement = 177
+ RULE_throwStatement = 178
+ RULE_synchronizedStatement = 179
+ RULE_tryStatement = 180
+ RULE_catches = 181
+ RULE_catchClause = 182
+ RULE_catchFormalParameter = 183
+ RULE_catchType = 184
+ RULE_finallyBlock = 185
+ RULE_tryWithResourcesStatement = 186
+ RULE_resourceSpecification = 187
+ RULE_resourceList = 188
+ RULE_resource = 189
+ RULE_variableAccess = 190
+ RULE_yieldStatement = 191
+ RULE_pattern = 192
+ RULE_typePattern = 193
+ RULE_expression = 194
+ RULE_primary = 195
+ RULE_primaryNoNewArray = 196
+ RULE_pNNA = 197
+ RULE_classLiteral = 198
+ RULE_classInstanceCreationExpression = 199
+ RULE_unqualifiedClassInstanceCreationExpression = 200
+ RULE_classOrInterfaceTypeToInstantiate = 201
+ RULE_typeArgumentsOrDiamond = 202
+ RULE_arrayCreationExpression = 203
+ RULE_arrayCreationExpressionWithoutInitializer = 204
+ RULE_arrayCreationExpressionWithInitializer = 205
+ RULE_dimExprs = 206
+ RULE_dimExpr = 207
+ RULE_arrayAccess = 208
+ RULE_fieldAccess = 209
+ RULE_methodInvocation = 210
+ RULE_argumentList = 211
+ RULE_methodReference = 212
+ RULE_postfixExpression = 213
+ RULE_pfE = 214
+ RULE_postIncrementExpression = 215
+ RULE_postDecrementExpression = 216
+ RULE_unaryExpression = 217
+ RULE_preIncrementExpression = 218
+ RULE_preDecrementExpression = 219
+ RULE_unaryExpressionNotPlusMinus = 220
+ RULE_castExpression = 221
+ RULE_multiplicativeExpression = 222
+ RULE_additiveExpression = 223
+ RULE_shiftExpression = 224
+ RULE_relationalExpression = 225
+ RULE_equalityExpression = 226
+ RULE_andExpression = 227
+ RULE_exclusiveOrExpression = 228
+ RULE_inclusiveOrExpression = 229
+ RULE_conditionalAndExpression = 230
+ RULE_conditionalOrExpression = 231
+ RULE_conditionalExpression = 232
+ RULE_assignmentExpression = 233
+ RULE_assignment = 234
+ RULE_leftHandSide = 235
+ RULE_assignmentOperator = 236
+ RULE_lambdaExpression = 237
+ RULE_lambdaParameters = 238
+ RULE_lambdaParameterList = 239
+ RULE_lambdaParameter = 240
+ RULE_lambdaParameterType = 241
+ RULE_lambdaBody = 242
+ RULE_switchExpression = 243
+ RULE_constantExpression = 244
+
+ ruleNames = ["start_", "literal", "typeIdentifier", "unqualifiedMethodIdentifier",
+ "primitiveType", "numericType", "integralType", "floatingPointType",
+ "referenceType", "coit", "classOrInterfaceType", "classType",
+ "interfaceType", "typeVariable", "arrayType", "dims",
+ "typeParameter", "typeParameterModifier", "typeBound",
+ "additionalBound", "typeArguments", "typeArgumentList",
+ "typeArgument", "wildcard", "wildcardBounds", "moduleName",
+ "packageName", "typeName", "packageOrTypeName", "expressionName",
+ "methodName", "ambiguousName", "compilationUnit", "ordinaryCompilationUnit",
+ "modularCompilationUnit", "packageDeclaration", "packageModifier",
+ "importDeclaration", "singleTypeImportDeclaration", "typeImportOnDemandDeclaration",
+ "singleStaticImportDeclaration", "staticImportOnDemandDeclaration",
+ "topLevelClassOrInterfaceDeclaration", "moduleDeclaration",
+ "moduleDirective", "requiresModifier", "classDeclaration",
+ "normalClassDeclaration", "classModifier", "typeParameters",
+ "typeParameterList", "classExtends", "classImplements",
+ "interfaceTypeList", "classPermits", "classBody", "classBodyDeclaration",
+ "classMemberDeclaration", "fieldDeclaration", "fieldModifier",
+ "variableDeclaratorList", "variableDeclarator", "variableDeclaratorId",
+ "variableInitializer", "unannType", "unannPrimitiveType",
+ "unannReferenceType", "unannClassOrInterfaceType", "uCOIT",
+ "unannClassType", "unannInterfaceType", "unannTypeVariable",
+ "unannArrayType", "methodDeclaration", "methodModifier",
+ "methodHeader", "result", "methodDeclarator", "receiverParameter",
+ "formalParameterList", "formalParameter", "variableArityParameter",
+ "variableModifier", "throwsT", "exceptionTypeList", "exceptionType",
+ "methodBody", "instanceInitializer", "staticInitializer",
+ "constructorDeclaration", "constructorModifier", "constructorDeclarator",
+ "simpleTypeName", "constructorBody", "explicitConstructorInvocation",
+ "enumDeclaration", "enumBody", "enumConstantList", "enumConstant",
+ "enumConstantModifier", "enumBodyDeclarations", "recordDeclaration",
+ "recordHeader", "recordComponentList", "recordComponent",
+ "variableArityRecordComponent", "recordComponentModifier",
+ "recordBody", "recordBodyDeclaration", "compactConstructorDeclaration",
+ "interfaceDeclaration", "normalInterfaceDeclaration",
+ "interfaceModifier", "interfaceExtends", "interfacePermits",
+ "interfaceBody", "interfaceMemberDeclaration", "constantDeclaration",
+ "constantModifier", "interfaceMethodDeclaration", "interfaceMethodModifier",
+ "annotationInterfaceDeclaration", "annotationInterfaceBody",
+ "annotationInterfaceMemberDeclaration", "annotationInterfaceElementDeclaration",
+ "annotationInterfaceElementModifier", "defaultValue",
+ "annotation", "normalAnnotation", "elementValuePairList",
+ "elementValuePair", "elementValue", "elementValueArrayInitializer",
+ "elementValueList", "markerAnnotation", "singleElementAnnotation",
+ "arrayInitializer", "variableInitializerList", "block",
+ "blockStatements", "blockStatement", "localClassOrInterfaceDeclaration",
+ "localVariableDeclaration", "localVariableType", "localVariableDeclarationStatement",
+ "statement", "statementNoShortIf", "statementWithoutTrailingSubstatement",
+ "emptyStatement_", "labeledStatement", "labeledStatementNoShortIf",
+ "expressionStatement", "statementExpression", "ifThenStatement",
+ "ifThenElseStatement", "ifThenElseStatementNoShortIf",
+ "assertStatement", "switchStatement", "switchBlock",
+ "switchRule", "switchBlockStatementGroup", "switchLabel",
+ "caseConstant", "whileStatement", "whileStatementNoShortIf",
+ "doStatement", "forStatement", "forStatementNoShortIf",
+ "basicForStatement", "basicForStatementNoShortIf", "forInit",
+ "forUpdate", "statementExpressionList", "enhancedForStatement",
+ "enhancedForStatementNoShortIf", "breakStatement", "continueStatement",
+ "returnStatement", "throwStatement", "synchronizedStatement",
+ "tryStatement", "catches", "catchClause", "catchFormalParameter",
+ "catchType", "finallyBlock", "tryWithResourcesStatement",
+ "resourceSpecification", "resourceList", "resource",
+ "variableAccess", "yieldStatement", "pattern", "typePattern",
+ "expression", "primary", "primaryNoNewArray", "pNNA",
+ "classLiteral", "classInstanceCreationExpression", "unqualifiedClassInstanceCreationExpression",
+ "classOrInterfaceTypeToInstantiate", "typeArgumentsOrDiamond",
+ "arrayCreationExpression", "arrayCreationExpressionWithoutInitializer",
+ "arrayCreationExpressionWithInitializer", "dimExprs",
+ "dimExpr", "arrayAccess", "fieldAccess", "methodInvocation",
+ "argumentList", "methodReference", "postfixExpression",
+ "pfE", "postIncrementExpression", "postDecrementExpression",
+ "unaryExpression", "preIncrementExpression", "preDecrementExpression",
+ "unaryExpressionNotPlusMinus", "castExpression", "multiplicativeExpression",
+ "additiveExpression", "shiftExpression", "relationalExpression",
+ "equalityExpression", "andExpression", "exclusiveOrExpression",
+ "inclusiveOrExpression", "conditionalAndExpression",
+ "conditionalOrExpression", "conditionalExpression", "assignmentExpression",
+ "assignment", "leftHandSide", "assignmentOperator", "lambdaExpression",
+ "lambdaParameters", "lambdaParameterList", "lambdaParameter",
+ "lambdaParameterType", "lambdaBody", "switchExpression",
+ "constantExpression"]
+
+ EOF = Token.EOF
+ EXPORTS = 1
+ MODULE = 2
+ NONSEALED = 3
+ OACA = 4
+ OPEN = 5
+ OPENS = 6
+ PERMITS = 7
+ PROVIDES = 8
+ RECORD = 9
+ REQUIRES = 10
+ SEALED = 11
+ TO = 12
+ TRANSITIVE = 13
+ USES = 14
+ VAR = 15
+ WITH = 16
+ YIELD = 17
+ ABSTRACT = 18
+ ASSERT = 19
+ BOOLEAN = 20
+ BREAK = 21
+ BYTE = 22
+ CASE = 23
+ CATCH = 24
+ CHAR = 25
+ CLASS = 26
+ CONST = 27
+ CONTINUE = 28
+ DEFAULT = 29
+ DO = 30
+ DOUBLE = 31
+ ELSE = 32
+ ENUM = 33
+ EXTENDS = 34
+ FINAL = 35
+ FINALLY = 36
+ FLOAT = 37
+ FOR = 38
+ IF = 39
+ GOTO = 40
+ IMPLEMENTS = 41
+ IMPORT = 42
+ INSTANCEOF = 43
+ INT = 44
+ INTERFACE = 45
+ LONG = 46
+ NATIVE = 47
+ NEW = 48
+ PACKAGE = 49
+ PRIVATE = 50
+ PROTECTED = 51
+ PUBLIC = 52
+ RETURN = 53
+ SHORT = 54
+ STATIC = 55
+ STRICTFP = 56
+ SUPER = 57
+ SWITCH = 58
+ SYNCHRONIZED = 59
+ THIS = 60
+ THROW = 61
+ THROWS = 62
+ TRANSIENT = 63
+ TRY = 64
+ VOID = 65
+ VOLATILE = 66
+ WHILE = 67
+ UNDER_SCORE = 68
+ IntegerLiteral = 69
+ FloatingPointLiteral = 70
+ BooleanLiteral = 71
+ CharacterLiteral = 72
+ StringLiteral = 73
+ TextBlock = 74
+ NullLiteral = 75
+ LPAREN = 76
+ RPAREN = 77
+ LBRACE = 78
+ RBRACE = 79
+ LBRACK = 80
+ RBRACK = 81
+ SEMI = 82
+ COMMA = 83
+ DOT = 84
+ ELLIPSIS = 85
+ AT = 86
+ COLONCOLON = 87
+ ASSIGN = 88
+ GT = 89
+ LT = 90
+ BANG = 91
+ TILDE = 92
+ QUESTION = 93
+ COLON = 94
+ ARROW = 95
+ EQUAL = 96
+ LE = 97
+ GE = 98
+ NOTEQUAL = 99
+ AND = 100
+ OR = 101
+ INC = 102
+ DEC = 103
+ ADD = 104
+ SUB = 105
+ MUL = 106
+ DIV = 107
+ BITAND = 108
+ BITOR = 109
+ CARET = 110
+ MOD = 111
+ ADD_ASSIGN = 112
+ SUB_ASSIGN = 113
+ MUL_ASSIGN = 114
+ DIV_ASSIGN = 115
+ AND_ASSIGN = 116
+ OR_ASSIGN = 117
+ XOR_ASSIGN = 118
+ MOD_ASSIGN = 119
+ LSHIFT_ASSIGN = 120
+ RSHIFT_ASSIGN = 121
+ URSHIFT_ASSIGN = 122
+ Identifier = 123
+ WS = 124
+ COMMENT = 125
+ LINE_COMMENT = 126
+
+ def __init__(self, input: TokenStream, output: TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.checkVersion("4.13.1")
+ self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
+ self._predicates = None
+
+ class Start_Context(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def compilationUnit(self):
+ return self.getTypedRuleContext(Java20Parser.CompilationUnitContext, 0)
+
+ def EOF(self):
+ return self.getToken(Java20Parser.EOF, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_start_
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStart_"):
+ listener.enterStart_(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStart_"):
+ listener.exitStart_(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStart_"):
+ return visitor.visitStart_(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def start_(self):
+
+ localctx = Java20Parser.Start_Context(self, self._ctx, self.state)
+ self.enterRule(localctx, 0, self.RULE_start_)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 490
+ self.compilationUnit()
+ self.state = 491
+ self.match(Java20Parser.EOF)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LiteralContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IntegerLiteral(self):
+ return self.getToken(Java20Parser.IntegerLiteral, 0)
+
+ def FloatingPointLiteral(self):
+ return self.getToken(Java20Parser.FloatingPointLiteral, 0)
+
+ def BooleanLiteral(self):
+ return self.getToken(Java20Parser.BooleanLiteral, 0)
+
+ def CharacterLiteral(self):
+ return self.getToken(Java20Parser.CharacterLiteral, 0)
+
+ def StringLiteral(self):
+ return self.getToken(Java20Parser.StringLiteral, 0)
+
+ def TextBlock(self):
+ return self.getToken(Java20Parser.TextBlock, 0)
+
+ def NullLiteral(self):
+ return self.getToken(Java20Parser.NullLiteral, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_literal
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLiteral"):
+ listener.enterLiteral(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLiteral"):
+ listener.exitLiteral(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLiteral"):
+ return visitor.visitLiteral(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def literal(self):
+
+ localctx = Java20Parser.LiteralContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 2, self.RULE_literal)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 493
+ _la = self._input.LA(1)
+ if not (((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 127) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeIdentifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeIdentifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeIdentifier"):
+ listener.enterTypeIdentifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeIdentifier"):
+ listener.exitTypeIdentifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeIdentifier"):
+ return visitor.visitTypeIdentifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeIdentifier(self):
+
+ localctx = Java20Parser.TypeIdentifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 4, self.RULE_typeIdentifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 495
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnqualifiedMethodIdentifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unqualifiedMethodIdentifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnqualifiedMethodIdentifier"):
+ listener.enterUnqualifiedMethodIdentifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnqualifiedMethodIdentifier"):
+ listener.exitUnqualifiedMethodIdentifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnqualifiedMethodIdentifier"):
+ return visitor.visitUnqualifiedMethodIdentifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unqualifiedMethodIdentifier(self):
+
+ localctx = Java20Parser.UnqualifiedMethodIdentifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 6, self.RULE_unqualifiedMethodIdentifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 497
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PrimitiveTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def numericType(self):
+ return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0)
+
+ def BOOLEAN(self):
+ return self.getToken(Java20Parser.BOOLEAN, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_primitiveType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPrimitiveType"):
+ listener.enterPrimitiveType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPrimitiveType"):
+ listener.exitPrimitiveType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPrimitiveType"):
+ return visitor.visitPrimitiveType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def primitiveType(self):
+
+ localctx = Java20Parser.PrimitiveTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 8, self.RULE_primitiveType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 502
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 499
+ self.annotation()
+ self.state = 504
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 507
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [22, 25, 31, 37, 44, 46, 54]:
+ self.state = 505
+ self.numericType()
+ pass
+ elif token in [20]:
+ self.state = 506
+ self.match(Java20Parser.BOOLEAN)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NumericTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def integralType(self):
+ return self.getTypedRuleContext(Java20Parser.IntegralTypeContext, 0)
+
+ def floatingPointType(self):
+ return self.getTypedRuleContext(Java20Parser.FloatingPointTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_numericType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNumericType"):
+ listener.enterNumericType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNumericType"):
+ listener.exitNumericType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNumericType"):
+ return visitor.visitNumericType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def numericType(self):
+
+ localctx = Java20Parser.NumericTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 10, self.RULE_numericType)
+ try:
+ self.state = 511
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [22, 25, 44, 46, 54]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 509
+ self.integralType()
+ pass
+ elif token in [31, 37]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 510
+ self.floatingPointType()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class IntegralTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def BYTE(self):
+ return self.getToken(Java20Parser.BYTE, 0)
+
+ def SHORT(self):
+ return self.getToken(Java20Parser.SHORT, 0)
+
+ def INT(self):
+ return self.getToken(Java20Parser.INT, 0)
+
+ def LONG(self):
+ return self.getToken(Java20Parser.LONG, 0)
+
+ def CHAR(self):
+ return self.getToken(Java20Parser.CHAR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_integralType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIntegralType"):
+ listener.enterIntegralType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIntegralType"):
+ listener.exitIntegralType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIntegralType"):
+ return visitor.visitIntegralType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def integralType(self):
+
+ localctx = Java20Parser.IntegralTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 12, self.RULE_integralType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 513
+ _la = self._input.LA(1)
+ if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 18102359477452800) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FloatingPointTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FLOAT(self):
+ return self.getToken(Java20Parser.FLOAT, 0)
+
+ def DOUBLE(self):
+ return self.getToken(Java20Parser.DOUBLE, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_floatingPointType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFloatingPointType"):
+ listener.enterFloatingPointType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFloatingPointType"):
+ listener.exitFloatingPointType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFloatingPointType"):
+ return visitor.visitFloatingPointType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def floatingPointType(self):
+
+ localctx = Java20Parser.FloatingPointTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 14, self.RULE_floatingPointType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 515
+ _la = self._input.LA(1)
+ if not (_la == 31 or _la == 37):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ReferenceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0)
+
+ def typeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0)
+
+ def arrayType(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_referenceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReferenceType"):
+ listener.enterReferenceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReferenceType"):
+ listener.exitReferenceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReferenceType"):
+ return visitor.visitReferenceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def referenceType(self):
+
+ localctx = Java20Parser.ReferenceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 16, self.RULE_referenceType)
+ try:
+ self.state = 520
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 3, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 517
+ self.classOrInterfaceType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 518
+ self.typeVariable()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 519
+ self.arrayType()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CoitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def coit(self):
+ return self.getTypedRuleContext(Java20Parser.CoitContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_coit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCoit"):
+ listener.enterCoit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCoit"):
+ listener.exitCoit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCoit"):
+ return visitor.visitCoit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def coit(self):
+
+ localctx = Java20Parser.CoitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 18, self.RULE_coit)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 522
+ self.match(Java20Parser.DOT)
+ self.state = 526
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 523
+ self.annotation()
+ self.state = 528
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 529
+ self.typeIdentifier()
+ self.state = 531
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 5, self._ctx)
+ if la_ == 1:
+ self.state = 530
+ self.typeArguments()
+
+ self.state = 534
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 6, self._ctx)
+ if la_ == 1:
+ self.state = 533
+ self.coit()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassOrInterfaceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def coit(self):
+ return self.getTypedRuleContext(Java20Parser.CoitContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classOrInterfaceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassOrInterfaceType"):
+ listener.enterClassOrInterfaceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassOrInterfaceType"):
+ listener.exitClassOrInterfaceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassOrInterfaceType"):
+ return visitor.visitClassOrInterfaceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classOrInterfaceType(self):
+
+ localctx = Java20Parser.ClassOrInterfaceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 20, self.RULE_classOrInterfaceType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 539
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 7, self._ctx)
+ if la_ == 1:
+ self.state = 536
+ self.packageName()
+ self.state = 537
+ self.match(Java20Parser.DOT)
+
+ self.state = 544
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 541
+ self.annotation()
+ self.state = 546
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 547
+ self.typeIdentifier()
+ self.state = 549
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 9, self._ctx)
+ if la_ == 1:
+ self.state = 548
+ self.typeArguments()
+
+ self.state = 552
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 10, self._ctx)
+ if la_ == 1:
+ self.state = 551
+ self.coit()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def classOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassType"):
+ listener.enterClassType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassType"):
+ listener.exitClassType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassType"):
+ return visitor.visitClassType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classType(self):
+
+ localctx = Java20Parser.ClassTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 22, self.RULE_classType)
+ self._la = 0 # Token type
+ try:
+ self.state = 588
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 17, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 557
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 554
+ self.annotation()
+ self.state = 559
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 560
+ self.typeIdentifier()
+ self.state = 562
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 561
+ self.typeArguments()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 564
+ self.packageName()
+ self.state = 565
+ self.match(Java20Parser.DOT)
+ self.state = 569
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 566
+ self.annotation()
+ self.state = 571
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 572
+ self.typeIdentifier()
+ self.state = 574
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 573
+ self.typeArguments()
+
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 576
+ self.classOrInterfaceType()
+ self.state = 577
+ self.match(Java20Parser.DOT)
+ self.state = 581
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 578
+ self.annotation()
+ self.state = 583
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 584
+ self.typeIdentifier()
+ self.state = 586
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 585
+ self.typeArguments()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceType"):
+ listener.enterInterfaceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceType"):
+ listener.exitInterfaceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceType"):
+ return visitor.visitInterfaceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceType(self):
+
+ localctx = Java20Parser.InterfaceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 24, self.RULE_interfaceType)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 590
+ self.classType()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeVariableContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeVariable
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeVariable"):
+ listener.enterTypeVariable(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeVariable"):
+ listener.exitTypeVariable(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeVariable"):
+ return visitor.visitTypeVariable(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeVariable(self):
+
+ localctx = Java20Parser.TypeVariableContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 26, self.RULE_typeVariable)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 595
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 592
+ self.annotation()
+ self.state = 597
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 598
+ self.typeIdentifier()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def primitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def typeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayType"):
+ listener.enterArrayType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayType"):
+ listener.exitArrayType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayType"):
+ return visitor.visitArrayType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayType(self):
+
+ localctx = Java20Parser.ArrayTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 28, self.RULE_arrayType)
+ try:
+ self.state = 609
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 19, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 600
+ self.primitiveType()
+ self.state = 601
+ self.dims()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 603
+ self.classType()
+ self.state = 604
+ self.dims()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 606
+ self.typeVariable()
+ self.state = 607
+ self.dims()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DimsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACK(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.LBRACK)
+ else:
+ return self.getToken(Java20Parser.LBRACK, i)
+
+ def RBRACK(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.RBRACK)
+ else:
+ return self.getToken(Java20Parser.RBRACK, i)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_dims
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDims"):
+ listener.enterDims(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDims"):
+ listener.exitDims(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDims"):
+ return visitor.visitDims(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dims(self):
+
+ localctx = Java20Parser.DimsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 30, self.RULE_dims)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 614
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 611
+ self.annotation()
+ self.state = 616
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 617
+ self.match(Java20Parser.LBRACK)
+ self.state = 618
+ self.match(Java20Parser.RBRACK)
+ self.state = 629
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 22, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 622
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 619
+ self.annotation()
+ self.state = 624
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 625
+ self.match(Java20Parser.LBRACK)
+ self.state = 626
+ self.match(Java20Parser.RBRACK)
+ self.state = 631
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 22, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def typeParameterModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeParameterModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeParameterModifierContext, i)
+
+ def typeBound(self):
+ return self.getTypedRuleContext(Java20Parser.TypeBoundContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeParameter"):
+ listener.enterTypeParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeParameter"):
+ listener.exitTypeParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeParameter"):
+ return visitor.visitTypeParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeParameter(self):
+
+ localctx = Java20Parser.TypeParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 32, self.RULE_typeParameter)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 635
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 632
+ self.typeParameterModifier()
+ self.state = 637
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 638
+ self.typeIdentifier()
+ self.state = 640
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 34:
+ self.state = 639
+ self.typeBound()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeParameterModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeParameterModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeParameterModifier"):
+ listener.enterTypeParameterModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeParameterModifier"):
+ listener.exitTypeParameterModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeParameterModifier"):
+ return visitor.visitTypeParameterModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeParameterModifier(self):
+
+ localctx = Java20Parser.TypeParameterModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 34, self.RULE_typeParameterModifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 642
+ self.annotation()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeBoundContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXTENDS(self):
+ return self.getToken(Java20Parser.EXTENDS, 0)
+
+ def typeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0)
+
+ def classOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0)
+
+ def additionalBound(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AdditionalBoundContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AdditionalBoundContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeBound
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeBound"):
+ listener.enterTypeBound(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeBound"):
+ listener.exitTypeBound(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeBound"):
+ return visitor.visitTypeBound(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeBound(self):
+
+ localctx = Java20Parser.TypeBoundContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 36, self.RULE_typeBound)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 644
+ self.match(Java20Parser.EXTENDS)
+ self.state = 653
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 26, self._ctx)
+ if la_ == 1:
+ self.state = 645
+ self.typeVariable()
+ pass
+
+ elif la_ == 2:
+ self.state = 646
+ self.classOrInterfaceType()
+ self.state = 650
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 108:
+ self.state = 647
+ self.additionalBound()
+ self.state = 652
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AdditionalBoundContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def BITAND(self):
+ return self.getToken(Java20Parser.BITAND, 0)
+
+ def interfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_additionalBound
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAdditionalBound"):
+ listener.enterAdditionalBound(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAdditionalBound"):
+ listener.exitAdditionalBound(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAdditionalBound"):
+ return visitor.visitAdditionalBound(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def additionalBound(self):
+
+ localctx = Java20Parser.AdditionalBoundContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 38, self.RULE_additionalBound)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 655
+ self.match(Java20Parser.BITAND)
+ self.state = 656
+ self.interfaceType()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeArgumentsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LT(self):
+ return self.getToken(Java20Parser.LT, 0)
+
+ def typeArgumentList(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentListContext, 0)
+
+ def GT(self):
+ return self.getToken(Java20Parser.GT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeArguments
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeArguments"):
+ listener.enterTypeArguments(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeArguments"):
+ listener.exitTypeArguments(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeArguments"):
+ return visitor.visitTypeArguments(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeArguments(self):
+
+ localctx = Java20Parser.TypeArgumentsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 40, self.RULE_typeArguments)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 658
+ self.match(Java20Parser.LT)
+ self.state = 659
+ self.typeArgumentList()
+ self.state = 660
+ self.match(Java20Parser.GT)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeArgumentListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeArgument(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeArgumentContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeArgumentList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeArgumentList"):
+ listener.enterTypeArgumentList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeArgumentList"):
+ listener.exitTypeArgumentList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeArgumentList"):
+ return visitor.visitTypeArgumentList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeArgumentList(self):
+
+ localctx = Java20Parser.TypeArgumentListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 42, self.RULE_typeArgumentList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 662
+ self.typeArgument()
+ self.state = 667
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 663
+ self.match(Java20Parser.COMMA)
+ self.state = 664
+ self.typeArgument()
+ self.state = 669
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeArgumentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def wildcard(self):
+ return self.getTypedRuleContext(Java20Parser.WildcardContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeArgument
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeArgument"):
+ listener.enterTypeArgument(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeArgument"):
+ listener.exitTypeArgument(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeArgument"):
+ return visitor.visitTypeArgument(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeArgument(self):
+
+ localctx = Java20Parser.TypeArgumentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 44, self.RULE_typeArgument)
+ try:
+ self.state = 672
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 28, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 670
+ self.referenceType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 671
+ self.wildcard()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class WildcardContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def QUESTION(self):
+ return self.getToken(Java20Parser.QUESTION, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def wildcardBounds(self):
+ return self.getTypedRuleContext(Java20Parser.WildcardBoundsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_wildcard
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWildcard"):
+ listener.enterWildcard(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWildcard"):
+ listener.exitWildcard(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWildcard"):
+ return visitor.visitWildcard(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def wildcard(self):
+
+ localctx = Java20Parser.WildcardContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 46, self.RULE_wildcard)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 677
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 674
+ self.annotation()
+ self.state = 679
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 680
+ self.match(Java20Parser.QUESTION)
+ self.state = 682
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 34 or _la == 57:
+ self.state = 681
+ self.wildcardBounds()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class WildcardBoundsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXTENDS(self):
+ return self.getToken(Java20Parser.EXTENDS, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_wildcardBounds
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWildcardBounds"):
+ listener.enterWildcardBounds(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWildcardBounds"):
+ listener.exitWildcardBounds(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWildcardBounds"):
+ return visitor.visitWildcardBounds(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def wildcardBounds(self):
+
+ localctx = Java20Parser.WildcardBoundsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 48, self.RULE_wildcardBounds)
+ try:
+ self.state = 688
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [34]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 684
+ self.match(Java20Parser.EXTENDS)
+ self.state = 685
+ self.referenceType()
+ pass
+ elif token in [57]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 686
+ self.match(Java20Parser.SUPER)
+ self.state = 687
+ self.referenceType()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ModuleNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def moduleName(self):
+ return self.getTypedRuleContext(Java20Parser.ModuleNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_moduleName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterModuleName"):
+ listener.enterModuleName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitModuleName"):
+ listener.exitModuleName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitModuleName"):
+ return visitor.visitModuleName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def moduleName(self):
+
+ localctx = Java20Parser.ModuleNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 50, self.RULE_moduleName)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 690
+ self.match(Java20Parser.Identifier)
+ self.state = 693
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 84:
+ self.state = 691
+ self.match(Java20Parser.DOT)
+ self.state = 692
+ self.moduleName()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PackageNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_packageName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPackageName"):
+ listener.enterPackageName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPackageName"):
+ listener.exitPackageName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPackageName"):
+ return visitor.visitPackageName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def packageName(self):
+
+ localctx = Java20Parser.PackageNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 52, self.RULE_packageName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 695
+ self.match(Java20Parser.Identifier)
+ self.state = 698
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 33, self._ctx)
+ if la_ == 1:
+ self.state = 696
+ self.match(Java20Parser.DOT)
+ self.state = 697
+ self.packageName()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeName"):
+ listener.enterTypeName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeName"):
+ listener.exitTypeName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeName"):
+ return visitor.visitTypeName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeName(self):
+
+ localctx = Java20Parser.TypeNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 54, self.RULE_typeName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 700
+ self.packageName()
+ self.state = 703
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 34, self._ctx)
+ if la_ == 1:
+ self.state = 701
+ self.match(Java20Parser.DOT)
+ self.state = 702
+ self.typeIdentifier()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PackageOrTypeNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def packageOrTypeName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageOrTypeNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_packageOrTypeName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPackageOrTypeName"):
+ listener.enterPackageOrTypeName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPackageOrTypeName"):
+ listener.exitPackageOrTypeName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPackageOrTypeName"):
+ return visitor.visitPackageOrTypeName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def packageOrTypeName(self):
+
+ localctx = Java20Parser.PackageOrTypeNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 56, self.RULE_packageOrTypeName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 705
+ self.match(Java20Parser.Identifier)
+ self.state = 708
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 35, self._ctx)
+ if la_ == 1:
+ self.state = 706
+ self.match(Java20Parser.DOT)
+ self.state = 707
+ self.packageOrTypeName()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExpressionNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def ambiguousName(self):
+ return self.getTypedRuleContext(Java20Parser.AmbiguousNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_expressionName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpressionName"):
+ listener.enterExpressionName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpressionName"):
+ listener.exitExpressionName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpressionName"):
+ return visitor.visitExpressionName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expressionName(self):
+
+ localctx = Java20Parser.ExpressionNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 58, self.RULE_expressionName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 713
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 36, self._ctx)
+ if la_ == 1:
+ self.state = 710
+ self.ambiguousName()
+ self.state = 711
+ self.match(Java20Parser.DOT)
+
+ self.state = 715
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unqualifiedMethodIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.UnqualifiedMethodIdentifierContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodName"):
+ listener.enterMethodName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodName"):
+ listener.exitMethodName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodName"):
+ return visitor.visitMethodName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodName(self):
+
+ localctx = Java20Parser.MethodNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 60, self.RULE_methodName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 717
+ self.unqualifiedMethodIdentifier()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AmbiguousNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def ambiguousName(self):
+ return self.getTypedRuleContext(Java20Parser.AmbiguousNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ambiguousName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAmbiguousName"):
+ listener.enterAmbiguousName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAmbiguousName"):
+ listener.exitAmbiguousName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAmbiguousName"):
+ return visitor.visitAmbiguousName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ambiguousName(self):
+
+ localctx = Java20Parser.AmbiguousNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 62, self.RULE_ambiguousName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 719
+ self.match(Java20Parser.Identifier)
+ self.state = 722
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 37, self._ctx)
+ if la_ == 1:
+ self.state = 720
+ self.match(Java20Parser.DOT)
+ self.state = 721
+ self.ambiguousName()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CompilationUnitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ordinaryCompilationUnit(self):
+ return self.getTypedRuleContext(Java20Parser.OrdinaryCompilationUnitContext, 0)
+
+ def modularCompilationUnit(self):
+ return self.getTypedRuleContext(Java20Parser.ModularCompilationUnitContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_compilationUnit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCompilationUnit"):
+ listener.enterCompilationUnit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCompilationUnit"):
+ listener.exitCompilationUnit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCompilationUnit"):
+ return visitor.visitCompilationUnit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def compilationUnit(self):
+
+ localctx = Java20Parser.CompilationUnitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 64, self.RULE_compilationUnit)
+ try:
+ self.state = 726
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 38, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 724
+ self.ordinaryCompilationUnit()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 725
+ self.modularCompilationUnit()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class OrdinaryCompilationUnitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def packageDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.PackageDeclarationContext, 0)
+
+ def importDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ImportDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ImportDeclarationContext, i)
+
+ def topLevelClassOrInterfaceDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TopLevelClassOrInterfaceDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TopLevelClassOrInterfaceDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ordinaryCompilationUnit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterOrdinaryCompilationUnit"):
+ listener.enterOrdinaryCompilationUnit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitOrdinaryCompilationUnit"):
+ listener.exitOrdinaryCompilationUnit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitOrdinaryCompilationUnit"):
+ return visitor.visitOrdinaryCompilationUnit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ordinaryCompilationUnit(self):
+
+ localctx = Java20Parser.OrdinaryCompilationUnitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 66, self.RULE_ordinaryCompilationUnit)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 729
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 39, self._ctx)
+ if la_ == 1:
+ self.state = 728
+ self.packageDeclaration()
+
+ self.state = 734
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 42:
+ self.state = 731
+ self.importDeclaration()
+ self.state = 736
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 740
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 116002917793925640) != 0) or _la == 82 or _la == 86:
+ self.state = 737
+ self.topLevelClassOrInterfaceDeclaration()
+ self.state = 742
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ModularCompilationUnitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def moduleDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ModuleDeclarationContext, 0)
+
+ def importDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ImportDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ImportDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_modularCompilationUnit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterModularCompilationUnit"):
+ listener.enterModularCompilationUnit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitModularCompilationUnit"):
+ listener.exitModularCompilationUnit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitModularCompilationUnit"):
+ return visitor.visitModularCompilationUnit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def modularCompilationUnit(self):
+
+ localctx = Java20Parser.ModularCompilationUnitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 68, self.RULE_modularCompilationUnit)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 746
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 42:
+ self.state = 743
+ self.importDeclaration()
+ self.state = 748
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 749
+ self.moduleDeclaration()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PackageDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def PACKAGE(self):
+ return self.getToken(Java20Parser.PACKAGE, 0)
+
+ def Identifier(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.Identifier)
+ else:
+ return self.getToken(Java20Parser.Identifier, i)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def packageModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.PackageModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.PackageModifierContext, i)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_packageDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPackageDeclaration"):
+ listener.enterPackageDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPackageDeclaration"):
+ listener.exitPackageDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPackageDeclaration"):
+ return visitor.visitPackageDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def packageDeclaration(self):
+
+ localctx = Java20Parser.PackageDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 70, self.RULE_packageDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 754
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 751
+ self.packageModifier()
+ self.state = 756
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 757
+ self.match(Java20Parser.PACKAGE)
+ self.state = 758
+ self.match(Java20Parser.Identifier)
+ self.state = 763
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 84:
+ self.state = 759
+ self.match(Java20Parser.DOT)
+ self.state = 760
+ self.match(Java20Parser.Identifier)
+ self.state = 765
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 766
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PackageModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_packageModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPackageModifier"):
+ listener.enterPackageModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPackageModifier"):
+ listener.exitPackageModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPackageModifier"):
+ return visitor.visitPackageModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def packageModifier(self):
+
+ localctx = Java20Parser.PackageModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 72, self.RULE_packageModifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 768
+ self.annotation()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ImportDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def singleTypeImportDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.SingleTypeImportDeclarationContext, 0)
+
+ def typeImportOnDemandDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.TypeImportOnDemandDeclarationContext, 0)
+
+ def singleStaticImportDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.SingleStaticImportDeclarationContext, 0)
+
+ def staticImportOnDemandDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.StaticImportOnDemandDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_importDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImportDeclaration"):
+ listener.enterImportDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImportDeclaration"):
+ listener.exitImportDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImportDeclaration"):
+ return visitor.visitImportDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def importDeclaration(self):
+
+ localctx = Java20Parser.ImportDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 74, self.RULE_importDeclaration)
+ try:
+ self.state = 774
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 45, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 770
+ self.singleTypeImportDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 771
+ self.typeImportOnDemandDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 772
+ self.singleStaticImportDeclaration()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 773
+ self.staticImportOnDemandDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SingleTypeImportDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Java20Parser.IMPORT, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_singleTypeImportDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSingleTypeImportDeclaration"):
+ listener.enterSingleTypeImportDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSingleTypeImportDeclaration"):
+ listener.exitSingleTypeImportDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSingleTypeImportDeclaration"):
+ return visitor.visitSingleTypeImportDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def singleTypeImportDeclaration(self):
+
+ localctx = Java20Parser.SingleTypeImportDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 76, self.RULE_singleTypeImportDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 776
+ self.match(Java20Parser.IMPORT)
+ self.state = 777
+ self.typeName()
+ self.state = 778
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeImportOnDemandDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Java20Parser.IMPORT, 0)
+
+ def packageOrTypeName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageOrTypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def MUL(self):
+ return self.getToken(Java20Parser.MUL, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeImportOnDemandDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeImportOnDemandDeclaration"):
+ listener.enterTypeImportOnDemandDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeImportOnDemandDeclaration"):
+ listener.exitTypeImportOnDemandDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeImportOnDemandDeclaration"):
+ return visitor.visitTypeImportOnDemandDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeImportOnDemandDeclaration(self):
+
+ localctx = Java20Parser.TypeImportOnDemandDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 78, self.RULE_typeImportOnDemandDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 780
+ self.match(Java20Parser.IMPORT)
+ self.state = 781
+ self.packageOrTypeName()
+ self.state = 782
+ self.match(Java20Parser.DOT)
+ self.state = 783
+ self.match(Java20Parser.MUL)
+ self.state = 784
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SingleStaticImportDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Java20Parser.IMPORT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_singleStaticImportDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSingleStaticImportDeclaration"):
+ listener.enterSingleStaticImportDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSingleStaticImportDeclaration"):
+ listener.exitSingleStaticImportDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSingleStaticImportDeclaration"):
+ return visitor.visitSingleStaticImportDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def singleStaticImportDeclaration(self):
+
+ localctx = Java20Parser.SingleStaticImportDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 80, self.RULE_singleStaticImportDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 786
+ self.match(Java20Parser.IMPORT)
+ self.state = 787
+ self.match(Java20Parser.STATIC)
+ self.state = 788
+ self.typeName()
+ self.state = 789
+ self.match(Java20Parser.DOT)
+ self.state = 790
+ self.match(Java20Parser.Identifier)
+ self.state = 791
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StaticImportOnDemandDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Java20Parser.IMPORT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def MUL(self):
+ return self.getToken(Java20Parser.MUL, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_staticImportOnDemandDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStaticImportOnDemandDeclaration"):
+ listener.enterStaticImportOnDemandDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStaticImportOnDemandDeclaration"):
+ listener.exitStaticImportOnDemandDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStaticImportOnDemandDeclaration"):
+ return visitor.visitStaticImportOnDemandDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def staticImportOnDemandDeclaration(self):
+
+ localctx = Java20Parser.StaticImportOnDemandDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 82, self.RULE_staticImportOnDemandDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 793
+ self.match(Java20Parser.IMPORT)
+ self.state = 794
+ self.match(Java20Parser.STATIC)
+ self.state = 795
+ self.typeName()
+ self.state = 796
+ self.match(Java20Parser.DOT)
+ self.state = 797
+ self.match(Java20Parser.MUL)
+ self.state = 798
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TopLevelClassOrInterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def interfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_topLevelClassOrInterfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTopLevelClassOrInterfaceDeclaration"):
+ listener.enterTopLevelClassOrInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTopLevelClassOrInterfaceDeclaration"):
+ listener.exitTopLevelClassOrInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTopLevelClassOrInterfaceDeclaration"):
+ return visitor.visitTopLevelClassOrInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def topLevelClassOrInterfaceDeclaration(self):
+
+ localctx = Java20Parser.TopLevelClassOrInterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 84, self.RULE_topLevelClassOrInterfaceDeclaration)
+ try:
+ self.state = 803
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 46, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 800
+ self.classDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 801
+ self.interfaceDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 802
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ModuleDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def MODULE(self):
+ return self.getToken(Java20Parser.MODULE, 0)
+
+ def Identifier(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.Identifier)
+ else:
+ return self.getToken(Java20Parser.Identifier, i)
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def OPEN(self):
+ return self.getToken(Java20Parser.OPEN, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def moduleDirective(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ModuleDirectiveContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ModuleDirectiveContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_moduleDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterModuleDeclaration"):
+ listener.enterModuleDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitModuleDeclaration"):
+ listener.exitModuleDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitModuleDeclaration"):
+ return visitor.visitModuleDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def moduleDeclaration(self):
+
+ localctx = Java20Parser.ModuleDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 86, self.RULE_moduleDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 808
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 805
+ self.annotation()
+ self.state = 810
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 812
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 5:
+ self.state = 811
+ self.match(Java20Parser.OPEN)
+
+ self.state = 814
+ self.match(Java20Parser.MODULE)
+ self.state = 815
+ self.match(Java20Parser.Identifier)
+ self.state = 820
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 84:
+ self.state = 816
+ self.match(Java20Parser.DOT)
+ self.state = 817
+ self.match(Java20Parser.Identifier)
+ self.state = 822
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 823
+ self.match(Java20Parser.LBRACE)
+ self.state = 827
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 17730) != 0):
+ self.state = 824
+ self.moduleDirective()
+ self.state = 829
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 830
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ModuleDirectiveContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def REQUIRES(self):
+ return self.getToken(Java20Parser.REQUIRES, 0)
+
+ def moduleName(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ModuleNameContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ModuleNameContext, i)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def requiresModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RequiresModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RequiresModifierContext, i)
+
+ def EXPORTS(self):
+ return self.getToken(Java20Parser.EXPORTS, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def TO(self):
+ return self.getToken(Java20Parser.TO, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def OPENS(self):
+ return self.getToken(Java20Parser.OPENS, 0)
+
+ def USES(self):
+ return self.getToken(Java20Parser.USES, 0)
+
+ def typeName(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeNameContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, i)
+
+ def PROVIDES(self):
+ return self.getToken(Java20Parser.PROVIDES, 0)
+
+ def WITH(self):
+ return self.getToken(Java20Parser.WITH, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_moduleDirective
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterModuleDirective"):
+ listener.enterModuleDirective(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitModuleDirective"):
+ listener.exitModuleDirective(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitModuleDirective"):
+ return visitor.visitModuleDirective(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def moduleDirective(self):
+
+ localctx = Java20Parser.ModuleDirectiveContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 88, self.RULE_moduleDirective)
+ self._la = 0 # Token type
+ try:
+ self.state = 889
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [10]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 832
+ self.match(Java20Parser.REQUIRES)
+ self.state = 836
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 13 or _la == 55:
+ self.state = 833
+ self.requiresModifier()
+ self.state = 838
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 839
+ self.moduleName()
+ self.state = 840
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [1]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 842
+ self.match(Java20Parser.EXPORTS)
+ self.state = 843
+ self.packageName()
+ self.state = 853
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 12:
+ self.state = 844
+ self.match(Java20Parser.TO)
+ self.state = 845
+ self.moduleName()
+ self.state = 850
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 846
+ self.match(Java20Parser.COMMA)
+ self.state = 847
+ self.moduleName()
+ self.state = 852
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 855
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [6]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 857
+ self.match(Java20Parser.OPENS)
+ self.state = 858
+ self.packageName()
+ self.state = 868
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 12:
+ self.state = 859
+ self.match(Java20Parser.TO)
+ self.state = 860
+ self.moduleName()
+ self.state = 865
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 861
+ self.match(Java20Parser.COMMA)
+ self.state = 862
+ self.moduleName()
+ self.state = 867
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 870
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [14]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 872
+ self.match(Java20Parser.USES)
+ self.state = 873
+ self.typeName()
+ self.state = 874
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [8]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 876
+ self.match(Java20Parser.PROVIDES)
+ self.state = 877
+ self.typeName()
+ self.state = 878
+ self.match(Java20Parser.WITH)
+ self.state = 879
+ self.typeName()
+ self.state = 884
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 880
+ self.match(Java20Parser.COMMA)
+ self.state = 881
+ self.typeName()
+ self.state = 886
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 887
+ self.match(Java20Parser.SEMI)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RequiresModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def TRANSITIVE(self):
+ return self.getToken(Java20Parser.TRANSITIVE, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_requiresModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRequiresModifier"):
+ listener.enterRequiresModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRequiresModifier"):
+ listener.exitRequiresModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRequiresModifier"):
+ return visitor.visitRequiresModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def requiresModifier(self):
+
+ localctx = Java20Parser.RequiresModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 90, self.RULE_requiresModifier)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 891
+ _la = self._input.LA(1)
+ if not (_la == 13 or _la == 55):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def normalClassDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.NormalClassDeclarationContext, 0)
+
+ def enumDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.EnumDeclarationContext, 0)
+
+ def recordDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.RecordDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassDeclaration"):
+ listener.enterClassDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassDeclaration"):
+ listener.exitClassDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassDeclaration"):
+ return visitor.visitClassDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classDeclaration(self):
+
+ localctx = Java20Parser.ClassDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 92, self.RULE_classDeclaration)
+ try:
+ self.state = 896
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 58, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 893
+ self.normalClassDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 894
+ self.enumDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 895
+ self.recordDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NormalClassDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CLASS(self):
+ return self.getToken(Java20Parser.CLASS, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def classBody(self):
+ return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0)
+
+ def classModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def classExtends(self):
+ return self.getTypedRuleContext(Java20Parser.ClassExtendsContext, 0)
+
+ def classImplements(self):
+ return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0)
+
+ def classPermits(self):
+ return self.getTypedRuleContext(Java20Parser.ClassPermitsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_normalClassDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNormalClassDeclaration"):
+ listener.enterNormalClassDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNormalClassDeclaration"):
+ listener.exitNormalClassDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNormalClassDeclaration"):
+ return visitor.visitNormalClassDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def normalClassDeclaration(self):
+
+ localctx = Java20Parser.NormalClassDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 94, self.RULE_normalClassDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 901
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86:
+ self.state = 898
+ self.classModifier()
+ self.state = 903
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 904
+ self.match(Java20Parser.CLASS)
+ self.state = 905
+ self.typeIdentifier()
+ self.state = 907
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 906
+ self.typeParameters()
+
+ self.state = 910
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 34:
+ self.state = 909
+ self.classExtends()
+
+ self.state = 913
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 41:
+ self.state = 912
+ self.classImplements()
+
+ self.state = 916
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 915
+ self.classPermits()
+
+ self.state = 918
+ self.classBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def SEALED(self):
+ return self.getToken(Java20Parser.SEALED, 0)
+
+ def NONSEALED(self):
+ return self.getToken(Java20Parser.NONSEALED, 0)
+
+ def STRICTFP(self):
+ return self.getToken(Java20Parser.STRICTFP, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassModifier"):
+ listener.enterClassModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassModifier"):
+ listener.exitClassModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassModifier"):
+ return visitor.visitClassModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classModifier(self):
+
+ localctx = Java20Parser.ClassModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 96, self.RULE_classModifier)
+ try:
+ self.state = 930
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 920
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 921
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 922
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 923
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 924
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 925
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 926
+ self.match(Java20Parser.FINAL)
+ pass
+ elif token in [11]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 927
+ self.match(Java20Parser.SEALED)
+ pass
+ elif token in [3]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 928
+ self.match(Java20Parser.NONSEALED)
+ pass
+ elif token in [56]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 929
+ self.match(Java20Parser.STRICTFP)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeParametersContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LT(self):
+ return self.getToken(Java20Parser.LT, 0)
+
+ def typeParameterList(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParameterListContext, 0)
+
+ def GT(self):
+ return self.getToken(Java20Parser.GT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeParameters
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeParameters"):
+ listener.enterTypeParameters(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeParameters"):
+ listener.exitTypeParameters(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeParameters"):
+ return visitor.visitTypeParameters(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeParameters(self):
+
+ localctx = Java20Parser.TypeParametersContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 98, self.RULE_typeParameters)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 932
+ self.match(Java20Parser.LT)
+ self.state = 933
+ self.typeParameterList()
+ self.state = 934
+ self.match(Java20Parser.GT)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeParameterListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeParameter(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeParameterContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeParameterContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeParameterList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeParameterList"):
+ listener.enterTypeParameterList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeParameterList"):
+ listener.exitTypeParameterList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeParameterList"):
+ return visitor.visitTypeParameterList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeParameterList(self):
+
+ localctx = Java20Parser.TypeParameterListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 100, self.RULE_typeParameterList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 936
+ self.typeParameter()
+ self.state = 941
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 937
+ self.match(Java20Parser.COMMA)
+ self.state = 938
+ self.typeParameter()
+ self.state = 943
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassExtendsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXTENDS(self):
+ return self.getToken(Java20Parser.EXTENDS, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classExtends
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassExtends"):
+ listener.enterClassExtends(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassExtends"):
+ listener.exitClassExtends(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassExtends"):
+ return visitor.visitClassExtends(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classExtends(self):
+
+ localctx = Java20Parser.ClassExtendsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 102, self.RULE_classExtends)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 944
+ self.match(Java20Parser.EXTENDS)
+ self.state = 945
+ self.classType()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassImplementsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPLEMENTS(self):
+ return self.getToken(Java20Parser.IMPLEMENTS, 0)
+
+ def interfaceTypeList(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceTypeListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classImplements
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassImplements"):
+ listener.enterClassImplements(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassImplements"):
+ listener.exitClassImplements(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassImplements"):
+ return visitor.visitClassImplements(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classImplements(self):
+
+ localctx = Java20Parser.ClassImplementsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 104, self.RULE_classImplements)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 947
+ self.match(Java20Parser.IMPLEMENTS)
+ self.state = 948
+ self.interfaceTypeList()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceTypeListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def interfaceType(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceTypeContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceTypeContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceTypeList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceTypeList"):
+ listener.enterInterfaceTypeList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceTypeList"):
+ listener.exitInterfaceTypeList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceTypeList"):
+ return visitor.visitInterfaceTypeList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceTypeList(self):
+
+ localctx = Java20Parser.InterfaceTypeListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 106, self.RULE_interfaceTypeList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 950
+ self.interfaceType()
+ self.state = 955
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 951
+ self.match(Java20Parser.COMMA)
+ self.state = 952
+ self.interfaceType()
+ self.state = 957
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassPermitsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def PERMITS(self):
+ return self.getToken(Java20Parser.PERMITS, 0)
+
+ def typeName(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeNameContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classPermits
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassPermits"):
+ listener.enterClassPermits(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassPermits"):
+ listener.exitClassPermits(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassPermits"):
+ return visitor.visitClassPermits(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classPermits(self):
+
+ localctx = Java20Parser.ClassPermitsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 108, self.RULE_classPermits)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 958
+ self.match(Java20Parser.PERMITS)
+ self.state = 959
+ self.typeName()
+ self.state = 964
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 960
+ self.match(Java20Parser.COMMA)
+ self.state = 961
+ self.typeName()
+ self.state = 966
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def classBodyDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassBodyDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassBody"):
+ listener.enterClassBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassBody"):
+ listener.exitClassBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassBody"):
+ return visitor.visitClassBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classBody(self):
+
+ localctx = Java20Parser.ClassBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 110, self.RULE_classBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 967
+ self.match(Java20Parser.LBRACE)
+ self.state = 971
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0):
+ self.state = 968
+ self.classBodyDeclaration()
+ self.state = 973
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 974
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassBodyDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classMemberDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassMemberDeclarationContext, 0)
+
+ def instanceInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.InstanceInitializerContext, 0)
+
+ def staticInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.StaticInitializerContext, 0)
+
+ def constructorDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ConstructorDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classBodyDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassBodyDeclaration"):
+ listener.enterClassBodyDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassBodyDeclaration"):
+ listener.exitClassBodyDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassBodyDeclaration"):
+ return visitor.visitClassBodyDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classBodyDeclaration(self):
+
+ localctx = Java20Parser.ClassBodyDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 112, self.RULE_classBodyDeclaration)
+ try:
+ self.state = 980
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 69, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 976
+ self.classMemberDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 977
+ self.instanceInitializer()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 978
+ self.staticInitializer()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 979
+ self.constructorDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassMemberDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def fieldDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.FieldDeclarationContext, 0)
+
+ def methodDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.MethodDeclarationContext, 0)
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def interfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classMemberDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassMemberDeclaration"):
+ listener.enterClassMemberDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassMemberDeclaration"):
+ listener.exitClassMemberDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassMemberDeclaration"):
+ return visitor.visitClassMemberDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classMemberDeclaration(self):
+
+ localctx = Java20Parser.ClassMemberDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 114, self.RULE_classMemberDeclaration)
+ try:
+ self.state = 987
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 70, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 982
+ self.fieldDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 983
+ self.methodDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 984
+ self.classDeclaration()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 985
+ self.interfaceDeclaration()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 986
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FieldDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def variableDeclaratorList(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def fieldModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.FieldModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.FieldModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_fieldDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFieldDeclaration"):
+ listener.enterFieldDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFieldDeclaration"):
+ listener.exitFieldDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFieldDeclaration"):
+ return visitor.visitFieldDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def fieldDeclaration(self):
+
+ localctx = Java20Parser.FieldDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 116, self.RULE_fieldDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 992
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while ((((_la - 35)) & ~0x3f) == 0 and ((1 << (_la - 35)) & 2251802230882305) != 0):
+ self.state = 989
+ self.fieldModifier()
+ self.state = 994
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 995
+ self.unannType()
+ self.state = 996
+ self.variableDeclaratorList()
+ self.state = 997
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FieldModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def TRANSIENT(self):
+ return self.getToken(Java20Parser.TRANSIENT, 0)
+
+ def VOLATILE(self):
+ return self.getToken(Java20Parser.VOLATILE, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_fieldModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFieldModifier"):
+ listener.enterFieldModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFieldModifier"):
+ listener.exitFieldModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFieldModifier"):
+ return visitor.visitFieldModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def fieldModifier(self):
+
+ localctx = Java20Parser.FieldModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 118, self.RULE_fieldModifier)
+ try:
+ self.state = 1007
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 999
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1000
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1001
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1002
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1003
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1004
+ self.match(Java20Parser.FINAL)
+ pass
+ elif token in [63]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1005
+ self.match(Java20Parser.TRANSIENT)
+ pass
+ elif token in [66]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1006
+ self.match(Java20Parser.VOLATILE)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableDeclaratorListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def variableDeclarator(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableDeclaratorContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableDeclaratorList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableDeclaratorList"):
+ listener.enterVariableDeclaratorList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableDeclaratorList"):
+ listener.exitVariableDeclaratorList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableDeclaratorList"):
+ return visitor.visitVariableDeclaratorList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableDeclaratorList(self):
+
+ localctx = Java20Parser.VariableDeclaratorListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 120, self.RULE_variableDeclaratorList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1009
+ self.variableDeclarator()
+ self.state = 1014
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 73, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1010
+ self.match(Java20Parser.COMMA)
+ self.state = 1011
+ self.variableDeclarator()
+ self.state = 1016
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 73, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableDeclaratorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def variableDeclaratorId(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0)
+
+ def ASSIGN(self):
+ return self.getToken(Java20Parser.ASSIGN, 0)
+
+ def variableInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.VariableInitializerContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableDeclarator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableDeclarator"):
+ listener.enterVariableDeclarator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableDeclarator"):
+ listener.exitVariableDeclarator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableDeclarator"):
+ return visitor.visitVariableDeclarator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableDeclarator(self):
+
+ localctx = Java20Parser.VariableDeclaratorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 122, self.RULE_variableDeclarator)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1017
+ self.variableDeclaratorId()
+ self.state = 1020
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 74, self._ctx)
+ if la_ == 1:
+ self.state = 1018
+ self.match(Java20Parser.ASSIGN)
+ self.state = 1019
+ self.variableInitializer()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableDeclaratorIdContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableDeclaratorId
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableDeclaratorId"):
+ listener.enterVariableDeclaratorId(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableDeclaratorId"):
+ listener.exitVariableDeclaratorId(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableDeclaratorId"):
+ return visitor.visitVariableDeclaratorId(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableDeclaratorId(self):
+
+ localctx = Java20Parser.VariableDeclaratorIdContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 124, self.RULE_variableDeclaratorId)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1022
+ self.match(Java20Parser.Identifier)
+ self.state = 1024
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 75, self._ctx)
+ if la_ == 1:
+ self.state = 1023
+ self.dims()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def arrayInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayInitializerContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableInitializer"):
+ listener.enterVariableInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableInitializer"):
+ listener.exitVariableInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableInitializer"):
+ return visitor.visitVariableInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableInitializer(self):
+
+ localctx = Java20Parser.VariableInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 126, self.RULE_variableInitializer)
+ try:
+ self.state = 1028
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92,
+ 102, 103, 104, 105, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1026
+ self.expression()
+ pass
+ elif token in [78]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1027
+ self.arrayInitializer()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannPrimitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannPrimitiveTypeContext, 0)
+
+ def unannReferenceType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannReferenceTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannType"):
+ listener.enterUnannType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannType"):
+ listener.exitUnannType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannType"):
+ return visitor.visitUnannType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannType(self):
+
+ localctx = Java20Parser.UnannTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 128, self.RULE_unannType)
+ try:
+ self.state = 1032
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 77, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1030
+ self.unannPrimitiveType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1031
+ self.unannReferenceType()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannPrimitiveTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def numericType(self):
+ return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0)
+
+ def BOOLEAN(self):
+ return self.getToken(Java20Parser.BOOLEAN, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannPrimitiveType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannPrimitiveType"):
+ listener.enterUnannPrimitiveType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannPrimitiveType"):
+ listener.exitUnannPrimitiveType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannPrimitiveType"):
+ return visitor.visitUnannPrimitiveType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannPrimitiveType(self):
+
+ localctx = Java20Parser.UnannPrimitiveTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 130, self.RULE_unannPrimitiveType)
+ try:
+ self.state = 1036
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [22, 25, 31, 37, 44, 46, 54]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1034
+ self.numericType()
+ pass
+ elif token in [20]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1035
+ self.match(Java20Parser.BOOLEAN)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannReferenceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannClassOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0)
+
+ def unannTypeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeVariableContext, 0)
+
+ def unannArrayType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannArrayTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannReferenceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannReferenceType"):
+ listener.enterUnannReferenceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannReferenceType"):
+ listener.exitUnannReferenceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannReferenceType"):
+ return visitor.visitUnannReferenceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannReferenceType(self):
+
+ localctx = Java20Parser.UnannReferenceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 132, self.RULE_unannReferenceType)
+ try:
+ self.state = 1041
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 79, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1038
+ self.unannClassOrInterfaceType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1039
+ self.unannTypeVariable()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1040
+ self.unannArrayType()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannClassOrInterfaceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def uCOIT(self):
+ return self.getTypedRuleContext(Java20Parser.UCOITContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannClassOrInterfaceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannClassOrInterfaceType"):
+ listener.enterUnannClassOrInterfaceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannClassOrInterfaceType"):
+ listener.exitUnannClassOrInterfaceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannClassOrInterfaceType"):
+ return visitor.visitUnannClassOrInterfaceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannClassOrInterfaceType(self):
+
+ localctx = Java20Parser.UnannClassOrInterfaceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 134, self.RULE_unannClassOrInterfaceType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1051
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 81, self._ctx)
+ if la_ == 1:
+ self.state = 1043
+ self.packageName()
+ self.state = 1044
+ self.match(Java20Parser.DOT)
+ self.state = 1048
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1045
+ self.annotation()
+ self.state = 1050
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1053
+ self.typeIdentifier()
+ self.state = 1055
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 82, self._ctx)
+ if la_ == 1:
+ self.state = 1054
+ self.typeArguments()
+
+ self.state = 1058
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 83, self._ctx)
+ if la_ == 1:
+ self.state = 1057
+ self.uCOIT()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UCOITContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def uCOIT(self):
+ return self.getTypedRuleContext(Java20Parser.UCOITContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_uCOIT
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUCOIT"):
+ listener.enterUCOIT(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUCOIT"):
+ listener.exitUCOIT(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUCOIT"):
+ return visitor.visitUCOIT(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def uCOIT(self):
+
+ localctx = Java20Parser.UCOITContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 136, self.RULE_uCOIT)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1060
+ self.match(Java20Parser.DOT)
+ self.state = 1064
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1061
+ self.annotation()
+ self.state = 1066
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1067
+ self.typeIdentifier()
+ self.state = 1069
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 85, self._ctx)
+ if la_ == 1:
+ self.state = 1068
+ self.typeArguments()
+
+ self.state = 1072
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 86, self._ctx)
+ if la_ == 1:
+ self.state = 1071
+ self.uCOIT()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannClassTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def packageName(self):
+ return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0)
+
+ def unannClassOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannClassType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannClassType"):
+ listener.enterUnannClassType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannClassType"):
+ listener.exitUnannClassType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannClassType"):
+ return visitor.visitUnannClassType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannClassType(self):
+
+ localctx = Java20Parser.UnannClassTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 138, self.RULE_unannClassType)
+ self._la = 0 # Token type
+ try:
+ self.state = 1093
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 91, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1074
+ self.typeIdentifier()
+ self.state = 1076
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1075
+ self.typeArguments()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1080
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 88, self._ctx)
+ if la_ == 1:
+ self.state = 1078
+ self.packageName()
+ pass
+
+ elif la_ == 2:
+ self.state = 1079
+ self.unannClassOrInterfaceType()
+ pass
+
+ self.state = 1082
+ self.match(Java20Parser.DOT)
+ self.state = 1086
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1083
+ self.annotation()
+ self.state = 1088
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1089
+ self.typeIdentifier()
+ self.state = 1091
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1090
+ self.typeArguments()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannInterfaceTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannClassType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannInterfaceType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannInterfaceType"):
+ listener.enterUnannInterfaceType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannInterfaceType"):
+ listener.exitUnannInterfaceType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannInterfaceType"):
+ return visitor.visitUnannInterfaceType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannInterfaceType(self):
+
+ localctx = Java20Parser.UnannInterfaceTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 140, self.RULE_unannInterfaceType)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1095
+ self.unannClassType()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannTypeVariableContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannTypeVariable
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannTypeVariable"):
+ listener.enterUnannTypeVariable(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannTypeVariable"):
+ listener.exitUnannTypeVariable(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannTypeVariable"):
+ return visitor.visitUnannTypeVariable(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannTypeVariable(self):
+
+ localctx = Java20Parser.UnannTypeVariableContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 142, self.RULE_unannTypeVariable)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1097
+ self.typeIdentifier()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnannArrayTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def unannPrimitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannPrimitiveTypeContext, 0)
+
+ def unannClassOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0)
+
+ def unannTypeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeVariableContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unannArrayType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnannArrayType"):
+ listener.enterUnannArrayType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnannArrayType"):
+ listener.exitUnannArrayType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnannArrayType"):
+ return visitor.visitUnannArrayType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unannArrayType(self):
+
+ localctx = Java20Parser.UnannArrayTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 144, self.RULE_unannArrayType)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1102
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 92, self._ctx)
+ if la_ == 1:
+ self.state = 1099
+ self.unannPrimitiveType()
+ pass
+
+ elif la_ == 2:
+ self.state = 1100
+ self.unannClassOrInterfaceType()
+ pass
+
+ elif la_ == 3:
+ self.state = 1101
+ self.unannTypeVariable()
+ pass
+
+ self.state = 1104
+ self.dims()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def methodHeader(self):
+ return self.getTypedRuleContext(Java20Parser.MethodHeaderContext, 0)
+
+ def methodBody(self):
+ return self.getTypedRuleContext(Java20Parser.MethodBodyContext, 0)
+
+ def methodModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.MethodModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.MethodModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodDeclaration"):
+ listener.enterMethodDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodDeclaration"):
+ listener.exitMethodDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodDeclaration"):
+ return visitor.visitMethodDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodDeclaration(self):
+
+ localctx = Java20Parser.MethodDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 146, self.RULE_methodDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1109
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 692569214556569600) != 0) or _la == 86:
+ self.state = 1106
+ self.methodModifier()
+ self.state = 1111
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1112
+ self.methodHeader()
+ self.state = 1113
+ self.methodBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def SYNCHRONIZED(self):
+ return self.getToken(Java20Parser.SYNCHRONIZED, 0)
+
+ def NATIVE(self):
+ return self.getToken(Java20Parser.NATIVE, 0)
+
+ def STRICTFP(self):
+ return self.getToken(Java20Parser.STRICTFP, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodModifier"):
+ listener.enterMethodModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodModifier"):
+ listener.exitMethodModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodModifier"):
+ return visitor.visitMethodModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodModifier(self):
+
+ localctx = Java20Parser.MethodModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 148, self.RULE_methodModifier)
+ try:
+ self.state = 1125
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1115
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1116
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1117
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1118
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1119
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1120
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1121
+ self.match(Java20Parser.FINAL)
+ pass
+ elif token in [59]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1122
+ self.match(Java20Parser.SYNCHRONIZED)
+ pass
+ elif token in [47]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1123
+ self.match(Java20Parser.NATIVE)
+ pass
+ elif token in [56]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 1124
+ self.match(Java20Parser.STRICTFP)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodHeaderContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def result(self):
+ return self.getTypedRuleContext(Java20Parser.ResultContext, 0)
+
+ def methodDeclarator(self):
+ return self.getTypedRuleContext(Java20Parser.MethodDeclaratorContext, 0)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def throwsT(self):
+ return self.getTypedRuleContext(Java20Parser.ThrowsTContext, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodHeader
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodHeader"):
+ listener.enterMethodHeader(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodHeader"):
+ listener.exitMethodHeader(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodHeader"):
+ return visitor.visitMethodHeader(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodHeader(self):
+
+ localctx = Java20Parser.MethodHeaderContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 150, self.RULE_methodHeader)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1134
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1127
+ self.typeParameters()
+ self.state = 1131
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1128
+ self.annotation()
+ self.state = 1133
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1136
+ self.result()
+ self.state = 1137
+ self.methodDeclarator()
+ self.state = 1139
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 1138
+ self.throwsT()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ResultContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def VOID(self):
+ return self.getToken(Java20Parser.VOID, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_result
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterResult"):
+ listener.enterResult(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitResult"):
+ listener.exitResult(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitResult"):
+ return visitor.visitResult(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def result(self):
+
+ localctx = Java20Parser.ResultContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 152, self.RULE_result)
+ try:
+ self.state = 1143
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1141
+ self.unannType()
+ pass
+ elif token in [65]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1142
+ self.match(Java20Parser.VOID)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodDeclaratorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def receiverParameter(self):
+ return self.getTypedRuleContext(Java20Parser.ReceiverParameterContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def formalParameterList(self):
+ return self.getTypedRuleContext(Java20Parser.FormalParameterListContext, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodDeclarator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodDeclarator"):
+ listener.enterMethodDeclarator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodDeclarator"):
+ listener.exitMethodDeclarator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodDeclarator"):
+ return visitor.visitMethodDeclarator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodDeclarator(self):
+
+ localctx = Java20Parser.MethodDeclaratorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 154, self.RULE_methodDeclarator)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1145
+ self.match(Java20Parser.Identifier)
+ self.state = 1146
+ self.match(Java20Parser.LPAREN)
+ self.state = 1150
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 99, self._ctx)
+ if la_ == 1:
+ self.state = 1147
+ self.receiverParameter()
+ self.state = 1148
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1153
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424676864) != 0) or _la == 86 or _la == 123:
+ self.state = 1152
+ self.formalParameterList()
+
+ self.state = 1155
+ self.match(Java20Parser.RPAREN)
+ self.state = 1157
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 80 or _la == 86:
+ self.state = 1156
+ self.dims()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ReceiverParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def THIS(self):
+ return self.getToken(Java20Parser.THIS, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_receiverParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReceiverParameter"):
+ listener.enterReceiverParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReceiverParameter"):
+ listener.exitReceiverParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReceiverParameter"):
+ return visitor.visitReceiverParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def receiverParameter(self):
+
+ localctx = Java20Parser.ReceiverParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 156, self.RULE_receiverParameter)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1162
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1159
+ self.annotation()
+ self.state = 1164
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1165
+ self.unannType()
+ self.state = 1168
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 123:
+ self.state = 1166
+ self.match(Java20Parser.Identifier)
+ self.state = 1167
+ self.match(Java20Parser.DOT)
+
+ self.state = 1170
+ self.match(Java20Parser.THIS)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FormalParameterListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def formalParameter(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.FormalParameterContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.FormalParameterContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_formalParameterList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFormalParameterList"):
+ listener.enterFormalParameterList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFormalParameterList"):
+ listener.exitFormalParameterList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFormalParameterList"):
+ return visitor.visitFormalParameterList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def formalParameterList(self):
+
+ localctx = Java20Parser.FormalParameterListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 158, self.RULE_formalParameterList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1172
+ self.formalParameter()
+ self.state = 1177
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1173
+ self.match(Java20Parser.COMMA)
+ self.state = 1174
+ self.formalParameter()
+ self.state = 1179
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FormalParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def variableDeclaratorId(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def variableArityParameter(self):
+ return self.getTypedRuleContext(Java20Parser.VariableArityParameterContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_formalParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFormalParameter"):
+ listener.enterFormalParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFormalParameter"):
+ listener.exitFormalParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFormalParameter"):
+ return visitor.visitFormalParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def formalParameter(self):
+
+ localctx = Java20Parser.FormalParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 160, self.RULE_formalParameter)
+ self._la = 0 # Token type
+ try:
+ self.state = 1190
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 106, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1183
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 1180
+ self.variableModifier()
+ self.state = 1185
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1186
+ self.unannType()
+ self.state = 1187
+ self.variableDeclaratorId()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1189
+ self.variableArityParameter()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableArityParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def ELLIPSIS(self):
+ return self.getToken(Java20Parser.ELLIPSIS, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableArityParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableArityParameter"):
+ listener.enterVariableArityParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableArityParameter"):
+ listener.exitVariableArityParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableArityParameter"):
+ return visitor.visitVariableArityParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableArityParameter(self):
+
+ localctx = Java20Parser.VariableArityParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 162, self.RULE_variableArityParameter)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1195
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 1192
+ self.variableModifier()
+ self.state = 1197
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1198
+ self.unannType()
+ self.state = 1202
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1199
+ self.annotation()
+ self.state = 1204
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1205
+ self.match(Java20Parser.ELLIPSIS)
+ self.state = 1206
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableModifier"):
+ listener.enterVariableModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableModifier"):
+ listener.exitVariableModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableModifier"):
+ return visitor.visitVariableModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableModifier(self):
+
+ localctx = Java20Parser.VariableModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 164, self.RULE_variableModifier)
+ try:
+ self.state = 1210
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1208
+ self.annotation()
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1209
+ self.match(Java20Parser.FINAL)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ThrowsTContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def THROWS(self):
+ return self.getToken(Java20Parser.THROWS, 0)
+
+ def exceptionTypeList(self):
+ return self.getTypedRuleContext(Java20Parser.ExceptionTypeListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_throwsT
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterThrowsT"):
+ listener.enterThrowsT(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitThrowsT"):
+ listener.exitThrowsT(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitThrowsT"):
+ return visitor.visitThrowsT(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def throwsT(self):
+
+ localctx = Java20Parser.ThrowsTContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 166, self.RULE_throwsT)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1212
+ self.match(Java20Parser.THROWS)
+ self.state = 1213
+ self.exceptionTypeList()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExceptionTypeListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def exceptionType(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ExceptionTypeContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ExceptionTypeContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_exceptionTypeList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExceptionTypeList"):
+ listener.enterExceptionTypeList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExceptionTypeList"):
+ listener.exitExceptionTypeList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExceptionTypeList"):
+ return visitor.visitExceptionTypeList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def exceptionTypeList(self):
+
+ localctx = Java20Parser.ExceptionTypeListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 168, self.RULE_exceptionTypeList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1215
+ self.exceptionType()
+ self.state = 1220
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1216
+ self.match(Java20Parser.COMMA)
+ self.state = 1217
+ self.exceptionType()
+ self.state = 1222
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExceptionTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def typeVariable(self):
+ return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_exceptionType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExceptionType"):
+ listener.enterExceptionType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExceptionType"):
+ listener.exitExceptionType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExceptionType"):
+ return visitor.visitExceptionType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def exceptionType(self):
+
+ localctx = Java20Parser.ExceptionTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 170, self.RULE_exceptionType)
+ try:
+ self.state = 1225
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 111, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1223
+ self.classType()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1224
+ self.typeVariable()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodBody"):
+ listener.enterMethodBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodBody"):
+ listener.exitMethodBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodBody"):
+ return visitor.visitMethodBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodBody(self):
+
+ localctx = Java20Parser.MethodBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 172, self.RULE_methodBody)
+ try:
+ self.state = 1229
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [78]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1227
+ self.block()
+ pass
+ elif token in [82]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1228
+ self.match(Java20Parser.SEMI)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InstanceInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_instanceInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInstanceInitializer"):
+ listener.enterInstanceInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInstanceInitializer"):
+ listener.exitInstanceInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInstanceInitializer"):
+ return visitor.visitInstanceInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def instanceInitializer(self):
+
+ localctx = Java20Parser.InstanceInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 174, self.RULE_instanceInitializer)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1231
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StaticInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_staticInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStaticInitializer"):
+ listener.enterStaticInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStaticInitializer"):
+ listener.exitStaticInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStaticInitializer"):
+ return visitor.visitStaticInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def staticInitializer(self):
+
+ localctx = Java20Parser.StaticInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 176, self.RULE_staticInitializer)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1233
+ self.match(Java20Parser.STATIC)
+ self.state = 1234
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstructorDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def constructorDeclarator(self):
+ return self.getTypedRuleContext(Java20Parser.ConstructorDeclaratorContext, 0)
+
+ def constructorBody(self):
+ return self.getTypedRuleContext(Java20Parser.ConstructorBodyContext, 0)
+
+ def constructorModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ConstructorModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ConstructorModifierContext, i)
+
+ def throwsT(self):
+ return self.getTypedRuleContext(Java20Parser.ThrowsTContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constructorDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstructorDeclaration"):
+ listener.enterConstructorDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstructorDeclaration"):
+ listener.exitConstructorDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstructorDeclaration"):
+ return visitor.visitConstructorDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constructorDeclaration(self):
+
+ localctx = Java20Parser.ConstructorDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 178, self.RULE_constructorDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1239
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while ((((_la - 50)) & ~0x3f) == 0 and ((1 << (_la - 50)) & 68719476743) != 0):
+ self.state = 1236
+ self.constructorModifier()
+ self.state = 1241
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1242
+ self.constructorDeclarator()
+ self.state = 1244
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 1243
+ self.throwsT()
+
+ self.state = 1246
+ self.constructorBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstructorModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constructorModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstructorModifier"):
+ listener.enterConstructorModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstructorModifier"):
+ listener.exitConstructorModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstructorModifier"):
+ return visitor.visitConstructorModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constructorModifier(self):
+
+ localctx = Java20Parser.ConstructorModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 180, self.RULE_constructorModifier)
+ try:
+ self.state = 1252
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1248
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1249
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1250
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1251
+ self.match(Java20Parser.PRIVATE)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstructorDeclaratorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simpleTypeName(self):
+ return self.getTypedRuleContext(Java20Parser.SimpleTypeNameContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def receiverParameter(self):
+ return self.getTypedRuleContext(Java20Parser.ReceiverParameterContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def formalParameterList(self):
+ return self.getTypedRuleContext(Java20Parser.FormalParameterListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constructorDeclarator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstructorDeclarator"):
+ listener.enterConstructorDeclarator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstructorDeclarator"):
+ listener.exitConstructorDeclarator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstructorDeclarator"):
+ return visitor.visitConstructorDeclarator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constructorDeclarator(self):
+
+ localctx = Java20Parser.ConstructorDeclaratorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 182, self.RULE_constructorDeclarator)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1255
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1254
+ self.typeParameters()
+
+ self.state = 1257
+ self.simpleTypeName()
+ self.state = 1258
+ self.match(Java20Parser.LPAREN)
+ self.state = 1262
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 117, self._ctx)
+ if la_ == 1:
+ self.state = 1259
+ self.receiverParameter()
+ self.state = 1260
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1265
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424676864) != 0) or _la == 86 or _la == 123:
+ self.state = 1264
+ self.formalParameterList()
+
+ self.state = 1267
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SimpleTypeNameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_simpleTypeName
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSimpleTypeName"):
+ listener.enterSimpleTypeName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSimpleTypeName"):
+ listener.exitSimpleTypeName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSimpleTypeName"):
+ return visitor.visitSimpleTypeName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def simpleTypeName(self):
+
+ localctx = Java20Parser.SimpleTypeNameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 184, self.RULE_simpleTypeName)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1269
+ self.typeIdentifier()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstructorBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def explicitConstructorInvocation(self):
+ return self.getTypedRuleContext(Java20Parser.ExplicitConstructorInvocationContext, 0)
+
+ def blockStatements(self):
+ return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constructorBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstructorBody"):
+ listener.enterConstructorBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstructorBody"):
+ listener.exitConstructorBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstructorBody"):
+ return visitor.visitConstructorBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constructorBody(self):
+
+ localctx = Java20Parser.ConstructorBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 186, self.RULE_constructorBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1271
+ self.match(Java20Parser.LBRACE)
+ self.state = 1273
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 119, self._ctx)
+ if la_ == 1:
+ self.state = 1272
+ self.explicitConstructorInvocation()
+
+ self.state = 1276
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0):
+ self.state = 1275
+ self.blockStatements()
+
+ self.state = 1278
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExplicitConstructorInvocationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def THIS(self):
+ return self.getToken(Java20Parser.THIS, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_explicitConstructorInvocation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExplicitConstructorInvocation"):
+ listener.enterExplicitConstructorInvocation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExplicitConstructorInvocation"):
+ listener.exitExplicitConstructorInvocation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExplicitConstructorInvocation"):
+ return visitor.visitExplicitConstructorInvocation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def explicitConstructorInvocation(self):
+
+ localctx = Java20Parser.ExplicitConstructorInvocationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 188, self.RULE_explicitConstructorInvocation)
+ self._la = 0 # Token type
+ try:
+ self.state = 1306
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 126, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1281
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1280
+ self.typeArguments()
+
+ self.state = 1283
+ _la = self._input.LA(1)
+ if not (_la == 57 or _la == 60):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 1284
+ self.match(Java20Parser.LPAREN)
+ self.state = 1286
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1285
+ self.argumentList()
+
+ self.state = 1288
+ self.match(Java20Parser.RPAREN)
+ self.state = 1289
+ self.match(Java20Parser.SEMI)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1292
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 123, self._ctx)
+ if la_ == 1:
+ self.state = 1290
+ self.expressionName()
+ pass
+
+ elif la_ == 2:
+ self.state = 1291
+ self.primary()
+ pass
+
+ self.state = 1294
+ self.match(Java20Parser.DOT)
+ self.state = 1296
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1295
+ self.typeArguments()
+
+ self.state = 1298
+ self.match(Java20Parser.SUPER)
+ self.state = 1299
+ self.match(Java20Parser.LPAREN)
+ self.state = 1301
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1300
+ self.argumentList()
+
+ self.state = 1303
+ self.match(Java20Parser.RPAREN)
+ self.state = 1304
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ENUM(self):
+ return self.getToken(Java20Parser.ENUM, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def enumBody(self):
+ return self.getTypedRuleContext(Java20Parser.EnumBodyContext, 0)
+
+ def classModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i)
+
+ def classImplements(self):
+ return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumDeclaration"):
+ listener.enterEnumDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumDeclaration"):
+ listener.exitEnumDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumDeclaration"):
+ return visitor.visitEnumDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumDeclaration(self):
+
+ localctx = Java20Parser.EnumDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 190, self.RULE_enumDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1311
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86:
+ self.state = 1308
+ self.classModifier()
+ self.state = 1313
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1314
+ self.match(Java20Parser.ENUM)
+ self.state = 1315
+ self.typeIdentifier()
+ self.state = 1317
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 41:
+ self.state = 1316
+ self.classImplements()
+
+ self.state = 1319
+ self.enumBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def enumConstantList(self):
+ return self.getTypedRuleContext(Java20Parser.EnumConstantListContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def enumBodyDeclarations(self):
+ return self.getTypedRuleContext(Java20Parser.EnumBodyDeclarationsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumBody"):
+ listener.enterEnumBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumBody"):
+ listener.exitEnumBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumBody"):
+ return visitor.visitEnumBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumBody(self):
+
+ localctx = Java20Parser.EnumBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 192, self.RULE_enumBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1321
+ self.match(Java20Parser.LBRACE)
+ self.state = 1323
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 86 or _la == 123:
+ self.state = 1322
+ self.enumConstantList()
+
+ self.state = 1326
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 83:
+ self.state = 1325
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1329
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 82:
+ self.state = 1328
+ self.enumBodyDeclarations()
+
+ self.state = 1331
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumConstantListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def enumConstant(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.EnumConstantContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.EnumConstantContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumConstantList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumConstantList"):
+ listener.enterEnumConstantList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumConstantList"):
+ listener.exitEnumConstantList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumConstantList"):
+ return visitor.visitEnumConstantList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumConstantList(self):
+
+ localctx = Java20Parser.EnumConstantListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 194, self.RULE_enumConstantList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1333
+ self.enumConstant()
+ self.state = 1338
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 132, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1334
+ self.match(Java20Parser.COMMA)
+ self.state = 1335
+ self.enumConstant()
+ self.state = 1340
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 132, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumConstantContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def enumConstantModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.EnumConstantModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.EnumConstantModifierContext, i)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def classBody(self):
+ return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumConstant
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumConstant"):
+ listener.enterEnumConstant(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumConstant"):
+ listener.exitEnumConstant(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumConstant"):
+ return visitor.visitEnumConstant(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumConstant(self):
+
+ localctx = Java20Parser.EnumConstantContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 196, self.RULE_enumConstant)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1344
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1341
+ self.enumConstantModifier()
+ self.state = 1346
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1347
+ self.match(Java20Parser.Identifier)
+ self.state = 1353
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 76:
+ self.state = 1348
+ self.match(Java20Parser.LPAREN)
+ self.state = 1350
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1349
+ self.argumentList()
+
+ self.state = 1352
+ self.match(Java20Parser.RPAREN)
+
+ self.state = 1356
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 78:
+ self.state = 1355
+ self.classBody()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumConstantModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumConstantModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumConstantModifier"):
+ listener.enterEnumConstantModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumConstantModifier"):
+ listener.exitEnumConstantModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumConstantModifier"):
+ return visitor.visitEnumConstantModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumConstantModifier(self):
+
+ localctx = Java20Parser.EnumConstantModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 198, self.RULE_enumConstantModifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1358
+ self.annotation()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnumBodyDeclarationsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def classBodyDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassBodyDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enumBodyDeclarations
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnumBodyDeclarations"):
+ listener.enterEnumBodyDeclarations(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnumBodyDeclarations"):
+ listener.exitEnumBodyDeclarations(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnumBodyDeclarations"):
+ return visitor.visitEnumBodyDeclarations(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enumBodyDeclarations(self):
+
+ localctx = Java20Parser.EnumBodyDeclarationsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 200, self.RULE_enumBodyDeclarations)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1360
+ self.match(Java20Parser.SEMI)
+ self.state = 1364
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0):
+ self.state = 1361
+ self.classBodyDeclaration()
+ self.state = 1366
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def RECORD(self):
+ return self.getToken(Java20Parser.RECORD, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def recordHeader(self):
+ return self.getTypedRuleContext(Java20Parser.RecordHeaderContext, 0)
+
+ def recordBody(self):
+ return self.getTypedRuleContext(Java20Parser.RecordBodyContext, 0)
+
+ def classModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def classImplements(self):
+ return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordDeclaration"):
+ listener.enterRecordDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordDeclaration"):
+ listener.exitRecordDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordDeclaration"):
+ return visitor.visitRecordDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordDeclaration(self):
+
+ localctx = Java20Parser.RecordDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 202, self.RULE_recordDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1370
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86:
+ self.state = 1367
+ self.classModifier()
+ self.state = 1372
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1373
+ self.match(Java20Parser.RECORD)
+ self.state = 1374
+ self.typeIdentifier()
+ self.state = 1376
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1375
+ self.typeParameters()
+
+ self.state = 1378
+ self.recordHeader()
+ self.state = 1380
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 41:
+ self.state = 1379
+ self.classImplements()
+
+ self.state = 1382
+ self.recordBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordHeaderContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def recordComponentList(self):
+ return self.getTypedRuleContext(Java20Parser.RecordComponentListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordHeader
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordHeader"):
+ listener.enterRecordHeader(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordHeader"):
+ listener.exitRecordHeader(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordHeader"):
+ return visitor.visitRecordHeader(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordHeader(self):
+
+ localctx = Java20Parser.RecordHeaderContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 204, self.RULE_recordHeader)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1384
+ self.match(Java20Parser.LPAREN)
+ self.state = 1386
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102499064938496) != 0) or _la == 86 or _la == 123:
+ self.state = 1385
+ self.recordComponentList()
+
+ self.state = 1388
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordComponentListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def recordComponent(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RecordComponentContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RecordComponentContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordComponentList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordComponentList"):
+ listener.enterRecordComponentList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordComponentList"):
+ listener.exitRecordComponentList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordComponentList"):
+ return visitor.visitRecordComponentList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordComponentList(self):
+
+ localctx = Java20Parser.RecordComponentListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 206, self.RULE_recordComponentList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1390
+ self.recordComponent()
+ self.state = 1395
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1391
+ self.match(Java20Parser.COMMA)
+ self.state = 1392
+ self.recordComponent()
+ self.state = 1397
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordComponentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def recordComponentModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RecordComponentModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RecordComponentModifierContext, i)
+
+ def variableArityRecordComponent(self):
+ return self.getTypedRuleContext(Java20Parser.VariableArityRecordComponentContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordComponent
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordComponent"):
+ listener.enterRecordComponent(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordComponent"):
+ listener.exitRecordComponent(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordComponent"):
+ return visitor.visitRecordComponent(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordComponent(self):
+
+ localctx = Java20Parser.RecordComponentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 208, self.RULE_recordComponent)
+ self._la = 0 # Token type
+ try:
+ self.state = 1408
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 144, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1401
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1398
+ self.recordComponentModifier()
+ self.state = 1403
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1404
+ self.unannType()
+ self.state = 1405
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1407
+ self.variableArityRecordComponent()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableArityRecordComponentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def ELLIPSIS(self):
+ return self.getToken(Java20Parser.ELLIPSIS, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def recordComponentModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RecordComponentModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RecordComponentModifierContext, i)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableArityRecordComponent
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableArityRecordComponent"):
+ listener.enterVariableArityRecordComponent(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableArityRecordComponent"):
+ listener.exitVariableArityRecordComponent(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableArityRecordComponent"):
+ return visitor.visitVariableArityRecordComponent(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableArityRecordComponent(self):
+
+ localctx = Java20Parser.VariableArityRecordComponentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 210, self.RULE_variableArityRecordComponent)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1413
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1410
+ self.recordComponentModifier()
+ self.state = 1415
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1416
+ self.unannType()
+ self.state = 1420
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 1417
+ self.annotation()
+ self.state = 1422
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1423
+ self.match(Java20Parser.ELLIPSIS)
+ self.state = 1424
+ self.match(Java20Parser.Identifier)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordComponentModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordComponentModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordComponentModifier"):
+ listener.enterRecordComponentModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordComponentModifier"):
+ listener.exitRecordComponentModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordComponentModifier"):
+ return visitor.visitRecordComponentModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordComponentModifier(self):
+
+ localctx = Java20Parser.RecordComponentModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 212, self.RULE_recordComponentModifier)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1426
+ self.annotation()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def recordBodyDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.RecordBodyDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.RecordBodyDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordBody"):
+ listener.enterRecordBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordBody"):
+ listener.exitRecordBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordBody"):
+ return visitor.visitRecordBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordBody(self):
+
+ localctx = Java20Parser.RecordBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 214, self.RULE_recordBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1428
+ self.match(Java20Parser.LBRACE)
+ self.state = 1432
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0):
+ self.state = 1429
+ self.recordBodyDeclaration()
+ self.state = 1434
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1435
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class RecordBodyDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classBodyDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, 0)
+
+ def compactConstructorDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.CompactConstructorDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_recordBodyDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRecordBodyDeclaration"):
+ listener.enterRecordBodyDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRecordBodyDeclaration"):
+ listener.exitRecordBodyDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRecordBodyDeclaration"):
+ return visitor.visitRecordBodyDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def recordBodyDeclaration(self):
+
+ localctx = Java20Parser.RecordBodyDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 216, self.RULE_recordBodyDeclaration)
+ try:
+ self.state = 1439
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 148, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1437
+ self.classBodyDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1438
+ self.compactConstructorDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CompactConstructorDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simpleTypeName(self):
+ return self.getTypedRuleContext(Java20Parser.SimpleTypeNameContext, 0)
+
+ def constructorBody(self):
+ return self.getTypedRuleContext(Java20Parser.ConstructorBodyContext, 0)
+
+ def constructorModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ConstructorModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ConstructorModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_compactConstructorDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCompactConstructorDeclaration"):
+ listener.enterCompactConstructorDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCompactConstructorDeclaration"):
+ listener.exitCompactConstructorDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCompactConstructorDeclaration"):
+ return visitor.visitCompactConstructorDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def compactConstructorDeclaration(self):
+
+ localctx = Java20Parser.CompactConstructorDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 218, self.RULE_compactConstructorDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1444
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while ((((_la - 50)) & ~0x3f) == 0 and ((1 << (_la - 50)) & 68719476743) != 0):
+ self.state = 1441
+ self.constructorModifier()
+ self.state = 1446
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1447
+ self.simpleTypeName()
+ self.state = 1448
+ self.constructorBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def normalInterfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.NormalInterfaceDeclarationContext, 0)
+
+ def annotationInterfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceDeclaration"):
+ listener.enterInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceDeclaration"):
+ listener.exitInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceDeclaration"):
+ return visitor.visitInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceDeclaration(self):
+
+ localctx = Java20Parser.InterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 220, self.RULE_interfaceDeclaration)
+ try:
+ self.state = 1452
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 150, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1450
+ self.normalInterfaceDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1451
+ self.annotationInterfaceDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NormalInterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def INTERFACE(self):
+ return self.getToken(Java20Parser.INTERFACE, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def interfaceBody(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceBodyContext, 0)
+
+ def interfaceModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceModifierContext, i)
+
+ def typeParameters(self):
+ return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0)
+
+ def interfaceExtends(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceExtendsContext, 0)
+
+ def interfacePermits(self):
+ return self.getTypedRuleContext(Java20Parser.InterfacePermitsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_normalInterfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNormalInterfaceDeclaration"):
+ listener.enterNormalInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNormalInterfaceDeclaration"):
+ listener.exitNormalInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNormalInterfaceDeclaration"):
+ return visitor.visitNormalInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def normalInterfaceDeclaration(self):
+
+ localctx = Java20Parser.NormalInterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 222, self.RULE_normalInterfaceDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1457
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967690405054472) != 0) or _la == 86:
+ self.state = 1454
+ self.interfaceModifier()
+ self.state = 1459
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1460
+ self.match(Java20Parser.INTERFACE)
+ self.state = 1461
+ self.typeIdentifier()
+ self.state = 1463
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 1462
+ self.typeParameters()
+
+ self.state = 1466
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 34:
+ self.state = 1465
+ self.interfaceExtends()
+
+ self.state = 1469
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 1468
+ self.interfacePermits()
+
+ self.state = 1471
+ self.interfaceBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PROTECTED(self):
+ return self.getToken(Java20Parser.PROTECTED, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def SEALED(self):
+ return self.getToken(Java20Parser.SEALED, 0)
+
+ def NONSEALED(self):
+ return self.getToken(Java20Parser.NONSEALED, 0)
+
+ def STRICTFP(self):
+ return self.getToken(Java20Parser.STRICTFP, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceModifier"):
+ listener.enterInterfaceModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceModifier"):
+ listener.exitInterfaceModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceModifier"):
+ return visitor.visitInterfaceModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceModifier(self):
+
+ localctx = Java20Parser.InterfaceModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 224, self.RULE_interfaceModifier)
+ try:
+ self.state = 1482
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1473
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1474
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [51]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1475
+ self.match(Java20Parser.PROTECTED)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1476
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1477
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1478
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [11]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1479
+ self.match(Java20Parser.SEALED)
+ pass
+ elif token in [3]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1480
+ self.match(Java20Parser.NONSEALED)
+ pass
+ elif token in [56]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1481
+ self.match(Java20Parser.STRICTFP)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceExtendsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXTENDS(self):
+ return self.getToken(Java20Parser.EXTENDS, 0)
+
+ def interfaceTypeList(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceTypeListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceExtends
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceExtends"):
+ listener.enterInterfaceExtends(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceExtends"):
+ listener.exitInterfaceExtends(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceExtends"):
+ return visitor.visitInterfaceExtends(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceExtends(self):
+
+ localctx = Java20Parser.InterfaceExtendsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 226, self.RULE_interfaceExtends)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1484
+ self.match(Java20Parser.EXTENDS)
+ self.state = 1485
+ self.interfaceTypeList()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfacePermitsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def PERMITS(self):
+ return self.getToken(Java20Parser.PERMITS, 0)
+
+ def typeName(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.TypeNameContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfacePermits
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfacePermits"):
+ listener.enterInterfacePermits(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfacePermits"):
+ listener.exitInterfacePermits(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfacePermits"):
+ return visitor.visitInterfacePermits(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfacePermits(self):
+
+ localctx = Java20Parser.InterfacePermitsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 228, self.RULE_interfacePermits)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1487
+ self.match(Java20Parser.PERMITS)
+ self.state = 1488
+ self.typeName()
+ self.state = 1493
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1489
+ self.match(Java20Parser.COMMA)
+ self.state = 1490
+ self.typeName()
+ self.state = 1495
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def interfaceMemberDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceMemberDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceMemberDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceBody"):
+ listener.enterInterfaceBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceBody"):
+ listener.exitInterfaceBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceBody"):
+ return visitor.visitInterfaceBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceBody(self):
+
+ localctx = Java20Parser.InterfaceBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 230, self.RULE_interfaceBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1496
+ self.match(Java20Parser.LBRACE)
+ self.state = 1500
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 134105417395735048) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187494401) != 0):
+ self.state = 1497
+ self.interfaceMemberDeclaration()
+ self.state = 1502
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1503
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceMemberDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def constantDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ConstantDeclarationContext, 0)
+
+ def interfaceMethodDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceMethodDeclarationContext, 0)
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def interfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceMemberDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceMemberDeclaration"):
+ listener.enterInterfaceMemberDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceMemberDeclaration"):
+ listener.exitInterfaceMemberDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceMemberDeclaration"):
+ return visitor.visitInterfaceMemberDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceMemberDeclaration(self):
+
+ localctx = Java20Parser.InterfaceMemberDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 232, self.RULE_interfaceMemberDeclaration)
+ try:
+ self.state = 1510
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 158, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1505
+ self.constantDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1506
+ self.interfaceMethodDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1507
+ self.classDeclaration()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1508
+ self.interfaceDeclaration()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1509
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstantDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def variableDeclaratorList(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def constantModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ConstantModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ConstantModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constantDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstantDeclaration"):
+ listener.enterConstantDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstantDeclaration"):
+ listener.exitConstantDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstantDeclaration"):
+ return visitor.visitConstantDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constantDeclaration(self):
+
+ localctx = Java20Parser.ConstantDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 234, self.RULE_constantDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1515
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while ((((_la - 35)) & ~0x3f) == 0 and ((1 << (_la - 35)) & 2251799814864897) != 0):
+ self.state = 1512
+ self.constantModifier()
+ self.state = 1517
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1518
+ self.unannType()
+ self.state = 1519
+ self.variableDeclaratorList()
+ self.state = 1520
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstantModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def FINAL(self):
+ return self.getToken(Java20Parser.FINAL, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constantModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstantModifier"):
+ listener.enterConstantModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstantModifier"):
+ listener.exitConstantModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstantModifier"):
+ return visitor.visitConstantModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constantModifier(self):
+
+ localctx = Java20Parser.ConstantModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 236, self.RULE_constantModifier)
+ try:
+ self.state = 1526
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1522
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1523
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1524
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [35]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1525
+ self.match(Java20Parser.FINAL)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceMethodDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def methodHeader(self):
+ return self.getTypedRuleContext(Java20Parser.MethodHeaderContext, 0)
+
+ def methodBody(self):
+ return self.getTypedRuleContext(Java20Parser.MethodBodyContext, 0)
+
+ def interfaceMethodModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceMethodModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceMethodModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceMethodDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceMethodDeclaration"):
+ listener.enterInterfaceMethodDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceMethodDeclaration"):
+ listener.exitInterfaceMethodDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceMethodDeclaration"):
+ return visitor.visitInterfaceMethodDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceMethodDeclaration(self):
+
+ localctx = Java20Parser.InterfaceMethodDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 238, self.RULE_interfaceMethodDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1531
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 113715891128238080) != 0) or _la == 86:
+ self.state = 1528
+ self.interfaceMethodModifier()
+ self.state = 1533
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1534
+ self.methodHeader()
+ self.state = 1535
+ self.methodBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class InterfaceMethodModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def PRIVATE(self):
+ return self.getToken(Java20Parser.PRIVATE, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def DEFAULT(self):
+ return self.getToken(Java20Parser.DEFAULT, 0)
+
+ def STATIC(self):
+ return self.getToken(Java20Parser.STATIC, 0)
+
+ def STRICTFP(self):
+ return self.getToken(Java20Parser.STRICTFP, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_interfaceMethodModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInterfaceMethodModifier"):
+ listener.enterInterfaceMethodModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInterfaceMethodModifier"):
+ listener.exitInterfaceMethodModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInterfaceMethodModifier"):
+ return visitor.visitInterfaceMethodModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def interfaceMethodModifier(self):
+
+ localctx = Java20Parser.InterfaceMethodModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 240, self.RULE_interfaceMethodModifier)
+ try:
+ self.state = 1544
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1537
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1538
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [50]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1539
+ self.match(Java20Parser.PRIVATE)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1540
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ elif token in [29]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1541
+ self.match(Java20Parser.DEFAULT)
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1542
+ self.match(Java20Parser.STATIC)
+ pass
+ elif token in [56]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1543
+ self.match(Java20Parser.STRICTFP)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Java20Parser.AT, 0)
+
+ def INTERFACE(self):
+ return self.getToken(Java20Parser.INTERFACE, 0)
+
+ def typeIdentifier(self):
+ return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0)
+
+ def annotationInterfaceBody(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceBodyContext, 0)
+
+ def interfaceModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.InterfaceModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.InterfaceModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceDeclaration"):
+ listener.enterAnnotationInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceDeclaration"):
+ listener.exitAnnotationInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceDeclaration"):
+ return visitor.visitAnnotationInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceDeclaration(self):
+
+ localctx = Java20Parser.AnnotationInterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 242, self.RULE_annotationInterfaceDeclaration)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1549
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 163, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1546
+ self.interfaceModifier()
+ self.state = 1551
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 163, self._ctx)
+
+ self.state = 1552
+ self.match(Java20Parser.AT)
+ self.state = 1553
+ self.match(Java20Parser.INTERFACE)
+ self.state = 1554
+ self.typeIdentifier()
+ self.state = 1555
+ self.annotationInterfaceBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def annotationInterfaceMemberDeclaration(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationInterfaceMemberDeclarationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceMemberDeclarationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceBody"):
+ listener.enterAnnotationInterfaceBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceBody"):
+ listener.exitAnnotationInterfaceBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceBody"):
+ return visitor.visitAnnotationInterfaceBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceBody(self):
+
+ localctx = Java20Parser.AnnotationInterfaceBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 244, self.RULE_annotationInterfaceBody)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1557
+ self.match(Java20Parser.LBRACE)
+ self.state = 1561
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 134105416858864136) != 0) or (
+ (((_la - 82)) & ~0x3f) == 0 and ((1 << (_la - 82)) & 2199023255569) != 0):
+ self.state = 1558
+ self.annotationInterfaceMemberDeclaration()
+ self.state = 1563
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1564
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceMemberDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotationInterfaceElementDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceElementDeclarationContext, 0)
+
+ def constantDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ConstantDeclarationContext, 0)
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def interfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceMemberDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceMemberDeclaration"):
+ listener.enterAnnotationInterfaceMemberDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceMemberDeclaration"):
+ listener.exitAnnotationInterfaceMemberDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceMemberDeclaration"):
+ return visitor.visitAnnotationInterfaceMemberDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceMemberDeclaration(self):
+
+ localctx = Java20Parser.AnnotationInterfaceMemberDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 246, self.RULE_annotationInterfaceMemberDeclaration)
+ try:
+ self.state = 1571
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 165, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1566
+ self.annotationInterfaceElementDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1567
+ self.constantDeclaration()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1568
+ self.classDeclaration()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1569
+ self.interfaceDeclaration()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1570
+ self.match(Java20Parser.SEMI)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceElementDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def annotationInterfaceElementModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationInterfaceElementModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceElementModifierContext, i)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def defaultValue(self):
+ return self.getTypedRuleContext(Java20Parser.DefaultValueContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceElementDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceElementDeclaration"):
+ listener.enterAnnotationInterfaceElementDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceElementDeclaration"):
+ listener.exitAnnotationInterfaceElementDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceElementDeclaration"):
+ return visitor.visitAnnotationInterfaceElementDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceElementDeclaration(self):
+
+ localctx = Java20Parser.AnnotationInterfaceElementDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 248, self.RULE_annotationInterfaceElementDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1576
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 18 or _la == 52 or _la == 86:
+ self.state = 1573
+ self.annotationInterfaceElementModifier()
+ self.state = 1578
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1579
+ self.unannType()
+ self.state = 1580
+ self.match(Java20Parser.Identifier)
+ self.state = 1581
+ self.match(Java20Parser.LPAREN)
+ self.state = 1582
+ self.match(Java20Parser.RPAREN)
+ self.state = 1584
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 80 or _la == 86:
+ self.state = 1583
+ self.dims()
+
+ self.state = 1587
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 29:
+ self.state = 1586
+ self.defaultValue()
+
+ self.state = 1589
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationInterfaceElementModifierContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def PUBLIC(self):
+ return self.getToken(Java20Parser.PUBLIC, 0)
+
+ def ABSTRACT(self):
+ return self.getToken(Java20Parser.ABSTRACT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotationInterfaceElementModifier
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotationInterfaceElementModifier"):
+ listener.enterAnnotationInterfaceElementModifier(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotationInterfaceElementModifier"):
+ listener.exitAnnotationInterfaceElementModifier(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotationInterfaceElementModifier"):
+ return visitor.visitAnnotationInterfaceElementModifier(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotationInterfaceElementModifier(self):
+
+ localctx = Java20Parser.AnnotationInterfaceElementModifierContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 250, self.RULE_annotationInterfaceElementModifier)
+ try:
+ self.state = 1594
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [86]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1591
+ self.annotation()
+ pass
+ elif token in [52]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1592
+ self.match(Java20Parser.PUBLIC)
+ pass
+ elif token in [18]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1593
+ self.match(Java20Parser.ABSTRACT)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DefaultValueContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DEFAULT(self):
+ return self.getToken(Java20Parser.DEFAULT, 0)
+
+ def elementValue(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_defaultValue
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDefaultValue"):
+ listener.enterDefaultValue(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDefaultValue"):
+ listener.exitDefaultValue(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDefaultValue"):
+ return visitor.visitDefaultValue(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def defaultValue(self):
+
+ localctx = Java20Parser.DefaultValueContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 252, self.RULE_defaultValue)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1596
+ self.match(Java20Parser.DEFAULT)
+ self.state = 1597
+ self.elementValue()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnotationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def normalAnnotation(self):
+ return self.getTypedRuleContext(Java20Parser.NormalAnnotationContext, 0)
+
+ def markerAnnotation(self):
+ return self.getTypedRuleContext(Java20Parser.MarkerAnnotationContext, 0)
+
+ def singleElementAnnotation(self):
+ return self.getTypedRuleContext(Java20Parser.SingleElementAnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_annotation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnotation"):
+ listener.enterAnnotation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnotation"):
+ listener.exitAnnotation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnotation"):
+ return visitor.visitAnnotation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annotation(self):
+
+ localctx = Java20Parser.AnnotationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 254, self.RULE_annotation)
+ try:
+ self.state = 1602
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 170, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1599
+ self.normalAnnotation()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1600
+ self.markerAnnotation()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1601
+ self.singleElementAnnotation()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NormalAnnotationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Java20Parser.AT, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def elementValuePairList(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValuePairListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_normalAnnotation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNormalAnnotation"):
+ listener.enterNormalAnnotation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNormalAnnotation"):
+ listener.exitNormalAnnotation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNormalAnnotation"):
+ return visitor.visitNormalAnnotation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def normalAnnotation(self):
+
+ localctx = Java20Parser.NormalAnnotationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 256, self.RULE_normalAnnotation)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1604
+ self.match(Java20Parser.AT)
+ self.state = 1605
+ self.typeName()
+ self.state = 1606
+ self.match(Java20Parser.LPAREN)
+ self.state = 1608
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 123:
+ self.state = 1607
+ self.elementValuePairList()
+
+ self.state = 1610
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValuePairListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def elementValuePair(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ElementValuePairContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ElementValuePairContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValuePairList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValuePairList"):
+ listener.enterElementValuePairList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValuePairList"):
+ listener.exitElementValuePairList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValuePairList"):
+ return visitor.visitElementValuePairList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValuePairList(self):
+
+ localctx = Java20Parser.ElementValuePairListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 258, self.RULE_elementValuePairList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1612
+ self.elementValuePair()
+ self.state = 1617
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1613
+ self.match(Java20Parser.COMMA)
+ self.state = 1614
+ self.elementValuePair()
+ self.state = 1619
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValuePairContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def ASSIGN(self):
+ return self.getToken(Java20Parser.ASSIGN, 0)
+
+ def elementValue(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValuePair
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValuePair"):
+ listener.enterElementValuePair(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValuePair"):
+ listener.exitElementValuePair(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValuePair"):
+ return visitor.visitElementValuePair(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValuePair(self):
+
+ localctx = Java20Parser.ElementValuePairContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 260, self.RULE_elementValuePair)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1620
+ self.match(Java20Parser.Identifier)
+ self.state = 1621
+ self.match(Java20Parser.ASSIGN)
+ self.state = 1622
+ self.elementValue()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValueContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0)
+
+ def elementValueArrayInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueArrayInitializerContext, 0)
+
+ def annotation(self):
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValue
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValue"):
+ listener.enterElementValue(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValue"):
+ listener.exitElementValue(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValue"):
+ return visitor.visitElementValue(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValue(self):
+
+ localctx = Java20Parser.ElementValueContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 262, self.RULE_elementValue)
+ try:
+ self.state = 1627
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 173, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1624
+ self.conditionalExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1625
+ self.elementValueArrayInitializer()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1626
+ self.annotation()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValueArrayInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def elementValueList(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueListContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValueArrayInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValueArrayInitializer"):
+ listener.enterElementValueArrayInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValueArrayInitializer"):
+ listener.exitElementValueArrayInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValueArrayInitializer"):
+ return visitor.visitElementValueArrayInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValueArrayInitializer(self):
+
+ localctx = Java20Parser.ElementValueArrayInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 264, self.RULE_elementValueArrayInitializer)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1629
+ self.match(Java20Parser.LBRACE)
+ self.state = 1631
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939449841) != 0):
+ self.state = 1630
+ self.elementValueList()
+
+ self.state = 1634
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 83:
+ self.state = 1633
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1636
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ElementValueListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def elementValue(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ElementValueContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ElementValueContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_elementValueList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterElementValueList"):
+ listener.enterElementValueList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitElementValueList"):
+ listener.exitElementValueList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitElementValueList"):
+ return visitor.visitElementValueList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def elementValueList(self):
+
+ localctx = Java20Parser.ElementValueListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 266, self.RULE_elementValueList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1638
+ self.elementValue()
+ self.state = 1643
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 176, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1639
+ self.match(Java20Parser.COMMA)
+ self.state = 1640
+ self.elementValue()
+ self.state = 1645
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 176, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MarkerAnnotationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Java20Parser.AT, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_markerAnnotation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMarkerAnnotation"):
+ listener.enterMarkerAnnotation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMarkerAnnotation"):
+ listener.exitMarkerAnnotation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMarkerAnnotation"):
+ return visitor.visitMarkerAnnotation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def markerAnnotation(self):
+
+ localctx = Java20Parser.MarkerAnnotationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 268, self.RULE_markerAnnotation)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1646
+ self.match(Java20Parser.AT)
+ self.state = 1647
+ self.typeName()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SingleElementAnnotationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Java20Parser.AT, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def elementValue(self):
+ return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_singleElementAnnotation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSingleElementAnnotation"):
+ listener.enterSingleElementAnnotation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSingleElementAnnotation"):
+ listener.exitSingleElementAnnotation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSingleElementAnnotation"):
+ return visitor.visitSingleElementAnnotation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def singleElementAnnotation(self):
+
+ localctx = Java20Parser.SingleElementAnnotationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 270, self.RULE_singleElementAnnotation)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1649
+ self.match(Java20Parser.AT)
+ self.state = 1650
+ self.typeName()
+ self.state = 1651
+ self.match(Java20Parser.LPAREN)
+ self.state = 1652
+ self.elementValue()
+ self.state = 1653
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def variableInitializerList(self):
+ return self.getTypedRuleContext(Java20Parser.VariableInitializerListContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Java20Parser.COMMA, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayInitializer"):
+ listener.enterArrayInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayInitializer"):
+ listener.exitArrayInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayInitializer"):
+ return visitor.visitArrayInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayInitializer(self):
+
+ localctx = Java20Parser.ArrayInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 272, self.RULE_arrayInitializer)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1655
+ self.match(Java20Parser.LBRACE)
+ self.state = 1657
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939449841) != 0):
+ self.state = 1656
+ self.variableInitializerList()
+
+ self.state = 1660
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 83:
+ self.state = 1659
+ self.match(Java20Parser.COMMA)
+
+ self.state = 1662
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableInitializerListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def variableInitializer(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableInitializerContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableInitializerContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableInitializerList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableInitializerList"):
+ listener.enterVariableInitializerList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableInitializerList"):
+ listener.exitVariableInitializerList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableInitializerList"):
+ return visitor.visitVariableInitializerList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableInitializerList(self):
+
+ localctx = Java20Parser.VariableInitializerListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 274, self.RULE_variableInitializerList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1664
+ self.variableInitializer()
+ self.state = 1669
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 179, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1665
+ self.match(Java20Parser.COMMA)
+ self.state = 1666
+ self.variableInitializer()
+ self.state = 1671
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 179, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BlockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def blockStatements(self):
+ return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_block
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBlock"):
+ listener.enterBlock(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBlock"):
+ listener.exitBlock(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBlock"):
+ return visitor.visitBlock(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def block(self):
+
+ localctx = Java20Parser.BlockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 276, self.RULE_block)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1672
+ self.match(Java20Parser.LBRACE)
+ self.state = 1674
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0):
+ self.state = 1673
+ self.blockStatements()
+
+ self.state = 1676
+ self.match(Java20Parser.RBRACE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BlockStatementsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def blockStatement(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.BlockStatementContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.BlockStatementContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_blockStatements
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBlockStatements"):
+ listener.enterBlockStatements(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBlockStatements"):
+ listener.exitBlockStatements(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBlockStatements"):
+ return visitor.visitBlockStatements(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def blockStatements(self):
+
+ localctx = Java20Parser.BlockStatementsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 278, self.RULE_blockStatements)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1678
+ self.blockStatement()
+ self.state = 1682
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0):
+ self.state = 1679
+ self.blockStatement()
+ self.state = 1684
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BlockStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localClassOrInterfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalClassOrInterfaceDeclarationContext, 0)
+
+ def localVariableDeclarationStatement(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationStatementContext, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_blockStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBlockStatement"):
+ listener.enterBlockStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBlockStatement"):
+ listener.exitBlockStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBlockStatement"):
+ return visitor.visitBlockStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def blockStatement(self):
+
+ localctx = Java20Parser.BlockStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 280, self.RULE_blockStatement)
+ try:
+ self.state = 1688
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 182, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1685
+ self.localClassOrInterfaceDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1686
+ self.localVariableDeclarationStatement()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1687
+ self.statement()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LocalClassOrInterfaceDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def classDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0)
+
+ def normalInterfaceDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.NormalInterfaceDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_localClassOrInterfaceDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLocalClassOrInterfaceDeclaration"):
+ listener.enterLocalClassOrInterfaceDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLocalClassOrInterfaceDeclaration"):
+ listener.exitLocalClassOrInterfaceDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLocalClassOrInterfaceDeclaration"):
+ return visitor.visitLocalClassOrInterfaceDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def localClassOrInterfaceDeclaration(self):
+
+ localctx = Java20Parser.LocalClassOrInterfaceDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 282, self.RULE_localClassOrInterfaceDeclaration)
+ try:
+ self.state = 1692
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 183, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1690
+ self.classDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1691
+ self.normalInterfaceDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LocalVariableDeclarationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localVariableType(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableTypeContext, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def variableDeclaratorList(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_localVariableDeclaration
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLocalVariableDeclaration"):
+ listener.enterLocalVariableDeclaration(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLocalVariableDeclaration"):
+ listener.exitLocalVariableDeclaration(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLocalVariableDeclaration"):
+ return visitor.visitLocalVariableDeclaration(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def localVariableDeclaration(self):
+
+ localctx = Java20Parser.LocalVariableDeclarationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 284, self.RULE_localVariableDeclaration)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1697
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 1694
+ self.variableModifier()
+ self.state = 1699
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1700
+ self.localVariableType()
+ self.state = 1702
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 185, self._ctx)
+ if la_ == 1:
+ self.state = 1701
+ self.variableDeclaratorList()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LocalVariableTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def VAR(self):
+ return self.getToken(Java20Parser.VAR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_localVariableType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLocalVariableType"):
+ listener.enterLocalVariableType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLocalVariableType"):
+ listener.exitLocalVariableType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLocalVariableType"):
+ return visitor.visitLocalVariableType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def localVariableType(self):
+
+ localctx = Java20Parser.LocalVariableTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 286, self.RULE_localVariableType)
+ try:
+ self.state = 1706
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1704
+ self.unannType()
+ pass
+ elif token in [15]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1705
+ self.match(Java20Parser.VAR)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LocalVariableDeclarationStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_localVariableDeclarationStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLocalVariableDeclarationStatement"):
+ listener.enterLocalVariableDeclarationStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLocalVariableDeclarationStatement"):
+ listener.exitLocalVariableDeclarationStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLocalVariableDeclarationStatement"):
+ return visitor.visitLocalVariableDeclarationStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def localVariableDeclarationStatement(self):
+
+ localctx = Java20Parser.LocalVariableDeclarationStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 288, self.RULE_localVariableDeclarationStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1708
+ self.localVariableDeclaration()
+ self.state = 1709
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementWithoutTrailingSubstatement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementWithoutTrailingSubstatementContext, 0)
+
+ def labeledStatement(self):
+ return self.getTypedRuleContext(Java20Parser.LabeledStatementContext, 0)
+
+ def ifThenStatement(self):
+ return self.getTypedRuleContext(Java20Parser.IfThenStatementContext, 0)
+
+ def ifThenElseStatement(self):
+ return self.getTypedRuleContext(Java20Parser.IfThenElseStatementContext, 0)
+
+ def whileStatement(self):
+ return self.getTypedRuleContext(Java20Parser.WhileStatementContext, 0)
+
+ def forStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ForStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatement"):
+ listener.enterStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatement"):
+ listener.exitStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatement"):
+ return visitor.visitStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statement(self):
+
+ localctx = Java20Parser.StatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 290, self.RULE_statement)
+ try:
+ self.state = 1717
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 187, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1711
+ self.statementWithoutTrailingSubstatement()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1712
+ self.labeledStatement()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1713
+ self.ifThenStatement()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1714
+ self.ifThenElseStatement()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1715
+ self.whileStatement()
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1716
+ self.forStatement()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementWithoutTrailingSubstatement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementWithoutTrailingSubstatementContext, 0)
+
+ def labeledStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.LabeledStatementNoShortIfContext, 0)
+
+ def ifThenElseStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.IfThenElseStatementNoShortIfContext, 0)
+
+ def whileStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.WhileStatementNoShortIfContext, 0)
+
+ def forStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.ForStatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatementNoShortIf"):
+ listener.enterStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatementNoShortIf"):
+ listener.exitStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatementNoShortIf"):
+ return visitor.visitStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statementNoShortIf(self):
+
+ localctx = Java20Parser.StatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 292, self.RULE_statementNoShortIf)
+ try:
+ self.state = 1724
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 188, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1719
+ self.statementWithoutTrailingSubstatement()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1720
+ self.labeledStatementNoShortIf()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1721
+ self.ifThenElseStatementNoShortIf()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1722
+ self.whileStatementNoShortIf()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1723
+ self.forStatementNoShortIf()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementWithoutTrailingSubstatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def emptyStatement_(self):
+ return self.getTypedRuleContext(Java20Parser.EmptyStatement_Context, 0)
+
+ def expressionStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionStatementContext, 0)
+
+ def assertStatement(self):
+ return self.getTypedRuleContext(Java20Parser.AssertStatementContext, 0)
+
+ def switchStatement(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchStatementContext, 0)
+
+ def doStatement(self):
+ return self.getTypedRuleContext(Java20Parser.DoStatementContext, 0)
+
+ def breakStatement(self):
+ return self.getTypedRuleContext(Java20Parser.BreakStatementContext, 0)
+
+ def continueStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ContinueStatementContext, 0)
+
+ def returnStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ReturnStatementContext, 0)
+
+ def synchronizedStatement(self):
+ return self.getTypedRuleContext(Java20Parser.SynchronizedStatementContext, 0)
+
+ def throwStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ThrowStatementContext, 0)
+
+ def tryStatement(self):
+ return self.getTypedRuleContext(Java20Parser.TryStatementContext, 0)
+
+ def yieldStatement(self):
+ return self.getTypedRuleContext(Java20Parser.YieldStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statementWithoutTrailingSubstatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatementWithoutTrailingSubstatement"):
+ listener.enterStatementWithoutTrailingSubstatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatementWithoutTrailingSubstatement"):
+ listener.exitStatementWithoutTrailingSubstatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatementWithoutTrailingSubstatement"):
+ return visitor.visitStatementWithoutTrailingSubstatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statementWithoutTrailingSubstatement(self):
+
+ localctx = Java20Parser.StatementWithoutTrailingSubstatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 294, self.RULE_statementWithoutTrailingSubstatement)
+ try:
+ self.state = 1739
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [78]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1726
+ self.block()
+ pass
+ elif token in [82]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1727
+ self.emptyStatement_()
+ pass
+ elif token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 102, 103,
+ 123]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1728
+ self.expressionStatement()
+ pass
+ elif token in [19]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1729
+ self.assertStatement()
+ pass
+ elif token in [58]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1730
+ self.switchStatement()
+ pass
+ elif token in [30]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1731
+ self.doStatement()
+ pass
+ elif token in [21]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1732
+ self.breakStatement()
+ pass
+ elif token in [28]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1733
+ self.continueStatement()
+ pass
+ elif token in [53]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1734
+ self.returnStatement()
+ pass
+ elif token in [59]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 1735
+ self.synchronizedStatement()
+ pass
+ elif token in [61]:
+ self.enterOuterAlt(localctx, 11)
+ self.state = 1736
+ self.throwStatement()
+ pass
+ elif token in [64]:
+ self.enterOuterAlt(localctx, 12)
+ self.state = 1737
+ self.tryStatement()
+ pass
+ elif token in [17]:
+ self.enterOuterAlt(localctx, 13)
+ self.state = 1738
+ self.yieldStatement()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EmptyStatement_Context(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_emptyStatement_
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEmptyStatement_"):
+ listener.enterEmptyStatement_(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEmptyStatement_"):
+ listener.exitEmptyStatement_(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEmptyStatement_"):
+ return visitor.visitEmptyStatement_(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def emptyStatement_(self):
+
+ localctx = Java20Parser.EmptyStatement_Context(self, self._ctx, self.state)
+ self.enterRule(localctx, 296, self.RULE_emptyStatement_)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1741
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LabeledStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_labeledStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLabeledStatement"):
+ listener.enterLabeledStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLabeledStatement"):
+ listener.exitLabeledStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLabeledStatement"):
+ return visitor.visitLabeledStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def labeledStatement(self):
+
+ localctx = Java20Parser.LabeledStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 298, self.RULE_labeledStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1743
+ self.match(Java20Parser.Identifier)
+ self.state = 1744
+ self.match(Java20Parser.COLON)
+ self.state = 1745
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LabeledStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_labeledStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLabeledStatementNoShortIf"):
+ listener.enterLabeledStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLabeledStatementNoShortIf"):
+ listener.exitLabeledStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLabeledStatementNoShortIf"):
+ return visitor.visitLabeledStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def labeledStatementNoShortIf(self):
+
+ localctx = Java20Parser.LabeledStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 300, self.RULE_labeledStatementNoShortIf)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1747
+ self.match(Java20Parser.Identifier)
+ self.state = 1748
+ self.match(Java20Parser.COLON)
+ self.state = 1749
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExpressionStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.StatementExpressionContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_expressionStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpressionStatement"):
+ listener.enterExpressionStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpressionStatement"):
+ listener.exitExpressionStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpressionStatement"):
+ return visitor.visitExpressionStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expressionStatement(self):
+
+ localctx = Java20Parser.ExpressionStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 302, self.RULE_expressionStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1751
+ self.statementExpression()
+ self.state = 1752
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def assignment(self):
+ return self.getTypedRuleContext(Java20Parser.AssignmentContext, 0)
+
+ def preIncrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PreIncrementExpressionContext, 0)
+
+ def preDecrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PreDecrementExpressionContext, 0)
+
+ def postIncrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostIncrementExpressionContext, 0)
+
+ def postDecrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostDecrementExpressionContext, 0)
+
+ def methodInvocation(self):
+ return self.getTypedRuleContext(Java20Parser.MethodInvocationContext, 0)
+
+ def classInstanceCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ClassInstanceCreationExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatementExpression"):
+ listener.enterStatementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatementExpression"):
+ listener.exitStatementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatementExpression"):
+ return visitor.visitStatementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statementExpression(self):
+
+ localctx = Java20Parser.StatementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 304, self.RULE_statementExpression)
+ try:
+ self.state = 1761
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 190, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1754
+ self.assignment()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1755
+ self.preIncrementExpression()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1756
+ self.preDecrementExpression()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1757
+ self.postIncrementExpression()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1758
+ self.postDecrementExpression()
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1759
+ self.methodInvocation()
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1760
+ self.classInstanceCreationExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class IfThenStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Java20Parser.IF, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ifThenStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIfThenStatement"):
+ listener.enterIfThenStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIfThenStatement"):
+ listener.exitIfThenStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIfThenStatement"):
+ return visitor.visitIfThenStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ifThenStatement(self):
+
+ localctx = Java20Parser.IfThenStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 306, self.RULE_ifThenStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1763
+ self.match(Java20Parser.IF)
+ self.state = 1764
+ self.match(Java20Parser.LPAREN)
+ self.state = 1765
+ self.expression()
+ self.state = 1766
+ self.match(Java20Parser.RPAREN)
+ self.state = 1767
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class IfThenElseStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Java20Parser.IF, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def ELSE(self):
+ return self.getToken(Java20Parser.ELSE, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ifThenElseStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIfThenElseStatement"):
+ listener.enterIfThenElseStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIfThenElseStatement"):
+ listener.exitIfThenElseStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIfThenElseStatement"):
+ return visitor.visitIfThenElseStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ifThenElseStatement(self):
+
+ localctx = Java20Parser.IfThenElseStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 308, self.RULE_ifThenElseStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1769
+ self.match(Java20Parser.IF)
+ self.state = 1770
+ self.match(Java20Parser.LPAREN)
+ self.state = 1771
+ self.expression()
+ self.state = 1772
+ self.match(Java20Parser.RPAREN)
+ self.state = 1773
+ self.statementNoShortIf()
+ self.state = 1774
+ self.match(Java20Parser.ELSE)
+ self.state = 1775
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class IfThenElseStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Java20Parser.IF, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.StatementNoShortIfContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, i)
+
+ def ELSE(self):
+ return self.getToken(Java20Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_ifThenElseStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIfThenElseStatementNoShortIf"):
+ listener.enterIfThenElseStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIfThenElseStatementNoShortIf"):
+ listener.exitIfThenElseStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIfThenElseStatementNoShortIf"):
+ return visitor.visitIfThenElseStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def ifThenElseStatementNoShortIf(self):
+
+ localctx = Java20Parser.IfThenElseStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 310, self.RULE_ifThenElseStatementNoShortIf)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1777
+ self.match(Java20Parser.IF)
+ self.state = 1778
+ self.match(Java20Parser.LPAREN)
+ self.state = 1779
+ self.expression()
+ self.state = 1780
+ self.match(Java20Parser.RPAREN)
+ self.state = 1781
+ self.statementNoShortIf()
+ self.state = 1782
+ self.match(Java20Parser.ELSE)
+ self.state = 1783
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AssertStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASSERT(self):
+ return self.getToken(Java20Parser.ASSERT, 0)
+
+ def expression(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ExpressionContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, i)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_assertStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssertStatement"):
+ listener.enterAssertStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssertStatement"):
+ listener.exitAssertStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssertStatement"):
+ return visitor.visitAssertStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assertStatement(self):
+
+ localctx = Java20Parser.AssertStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 312, self.RULE_assertStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1785
+ self.match(Java20Parser.ASSERT)
+ self.state = 1786
+ self.expression()
+ self.state = 1789
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 94:
+ self.state = 1787
+ self.match(Java20Parser.COLON)
+ self.state = 1788
+ self.expression()
+
+ self.state = 1791
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SWITCH(self):
+ return self.getToken(Java20Parser.SWITCH, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def switchBlock(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchBlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchStatement"):
+ listener.enterSwitchStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchStatement"):
+ listener.exitSwitchStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchStatement"):
+ return visitor.visitSwitchStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchStatement(self):
+
+ localctx = Java20Parser.SwitchStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 314, self.RULE_switchStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1793
+ self.match(Java20Parser.SWITCH)
+ self.state = 1794
+ self.match(Java20Parser.LPAREN)
+ self.state = 1795
+ self.expression()
+ self.state = 1796
+ self.match(Java20Parser.RPAREN)
+ self.state = 1797
+ self.switchBlock()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchBlockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACE(self):
+ return self.getToken(Java20Parser.LBRACE, 0)
+
+ def switchRule(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.SwitchRuleContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.SwitchRuleContext, i)
+
+ def RBRACE(self):
+ return self.getToken(Java20Parser.RBRACE, 0)
+
+ def switchBlockStatementGroup(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.SwitchBlockStatementGroupContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.SwitchBlockStatementGroupContext, i)
+
+ def switchLabel(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.SwitchLabelContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, i)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COLON)
+ else:
+ return self.getToken(Java20Parser.COLON, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchBlock
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchBlock"):
+ listener.enterSwitchBlock(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchBlock"):
+ listener.exitSwitchBlock(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchBlock"):
+ return visitor.visitSwitchBlock(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchBlock(self):
+
+ localctx = Java20Parser.SwitchBlockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 316, self.RULE_switchBlock)
+ self._la = 0 # Token type
+ try:
+ self.state = 1825
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 195, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1799
+ self.match(Java20Parser.LBRACE)
+ self.state = 1800
+ self.switchRule()
+ self.state = 1804
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 23 or _la == 29:
+ self.state = 1801
+ self.switchRule()
+ self.state = 1806
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1807
+ self.match(Java20Parser.RBRACE)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1809
+ self.match(Java20Parser.LBRACE)
+ self.state = 1813
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 193, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1810
+ self.switchBlockStatementGroup()
+ self.state = 1815
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 193, self._ctx)
+
+ self.state = 1821
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 23 or _la == 29:
+ self.state = 1816
+ self.switchLabel()
+ self.state = 1817
+ self.match(Java20Parser.COLON)
+ self.state = 1823
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1824
+ self.match(Java20Parser.RBRACE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchRuleContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def switchLabel(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, 0)
+
+ def ARROW(self):
+ return self.getToken(Java20Parser.ARROW, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def throwStatement(self):
+ return self.getTypedRuleContext(Java20Parser.ThrowStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchRule
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchRule"):
+ listener.enterSwitchRule(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchRule"):
+ listener.exitSwitchRule(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchRule"):
+ return visitor.visitSwitchRule(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchRule(self):
+
+ localctx = Java20Parser.SwitchRuleContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 318, self.RULE_switchRule)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1827
+ self.switchLabel()
+ self.state = 1828
+ self.match(Java20Parser.ARROW)
+ self.state = 1834
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92,
+ 102, 103, 104, 105, 123]:
+ self.state = 1829
+ self.expression()
+ self.state = 1830
+ self.match(Java20Parser.SEMI)
+ pass
+ elif token in [78]:
+ self.state = 1832
+ self.block()
+ pass
+ elif token in [61]:
+ self.state = 1833
+ self.throwStatement()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchBlockStatementGroupContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def switchLabel(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.SwitchLabelContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, i)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COLON)
+ else:
+ return self.getToken(Java20Parser.COLON, i)
+
+ def blockStatements(self):
+ return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchBlockStatementGroup
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchBlockStatementGroup"):
+ listener.enterSwitchBlockStatementGroup(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchBlockStatementGroup"):
+ listener.exitSwitchBlockStatementGroup(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchBlockStatementGroup"):
+ return visitor.visitSwitchBlockStatementGroup(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchBlockStatementGroup(self):
+
+ localctx = Java20Parser.SwitchBlockStatementGroupContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 320, self.RULE_switchBlockStatementGroup)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1836
+ self.switchLabel()
+ self.state = 1837
+ self.match(Java20Parser.COLON)
+ self.state = 1843
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 23 or _la == 29:
+ self.state = 1838
+ self.switchLabel()
+ self.state = 1839
+ self.match(Java20Parser.COLON)
+ self.state = 1845
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 1846
+ self.blockStatements()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchLabelContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CASE(self):
+ return self.getToken(Java20Parser.CASE, 0)
+
+ def caseConstant(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.CaseConstantContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.CaseConstantContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def DEFAULT(self):
+ return self.getToken(Java20Parser.DEFAULT, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchLabel
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchLabel"):
+ listener.enterSwitchLabel(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchLabel"):
+ listener.exitSwitchLabel(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchLabel"):
+ return visitor.visitSwitchLabel(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchLabel(self):
+
+ localctx = Java20Parser.SwitchLabelContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 322, self.RULE_switchLabel)
+ self._la = 0 # Token type
+ try:
+ self.state = 1858
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [23]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1848
+ self.match(Java20Parser.CASE)
+ self.state = 1849
+ self.caseConstant()
+ self.state = 1854
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1850
+ self.match(Java20Parser.COMMA)
+ self.state = 1851
+ self.caseConstant()
+ self.state = 1856
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+ elif token in [29]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1857
+ self.match(Java20Parser.DEFAULT)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CaseConstantContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_caseConstant
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCaseConstant"):
+ listener.enterCaseConstant(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCaseConstant"):
+ listener.exitCaseConstant(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCaseConstant"):
+ return visitor.visitCaseConstant(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def caseConstant(self):
+
+ localctx = Java20Parser.CaseConstantContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 324, self.RULE_caseConstant)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1860
+ self.conditionalExpression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class WhileStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def WHILE(self):
+ return self.getToken(Java20Parser.WHILE, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_whileStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWhileStatement"):
+ listener.enterWhileStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWhileStatement"):
+ listener.exitWhileStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWhileStatement"):
+ return visitor.visitWhileStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def whileStatement(self):
+
+ localctx = Java20Parser.WhileStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 326, self.RULE_whileStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1862
+ self.match(Java20Parser.WHILE)
+ self.state = 1863
+ self.match(Java20Parser.LPAREN)
+ self.state = 1864
+ self.expression()
+ self.state = 1865
+ self.match(Java20Parser.RPAREN)
+ self.state = 1866
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class WhileStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def WHILE(self):
+ return self.getToken(Java20Parser.WHILE, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_whileStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWhileStatementNoShortIf"):
+ listener.enterWhileStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWhileStatementNoShortIf"):
+ listener.exitWhileStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWhileStatementNoShortIf"):
+ return visitor.visitWhileStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def whileStatementNoShortIf(self):
+
+ localctx = Java20Parser.WhileStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 328, self.RULE_whileStatementNoShortIf)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1868
+ self.match(Java20Parser.WHILE)
+ self.state = 1869
+ self.match(Java20Parser.LPAREN)
+ self.state = 1870
+ self.expression()
+ self.state = 1871
+ self.match(Java20Parser.RPAREN)
+ self.state = 1872
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DoStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DO(self):
+ return self.getToken(Java20Parser.DO, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def WHILE(self):
+ return self.getToken(Java20Parser.WHILE, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_doStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDoStatement"):
+ listener.enterDoStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDoStatement"):
+ listener.exitDoStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDoStatement"):
+ return visitor.visitDoStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def doStatement(self):
+
+ localctx = Java20Parser.DoStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 330, self.RULE_doStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1874
+ self.match(Java20Parser.DO)
+ self.state = 1875
+ self.statement()
+ self.state = 1876
+ self.match(Java20Parser.WHILE)
+ self.state = 1877
+ self.match(Java20Parser.LPAREN)
+ self.state = 1878
+ self.expression()
+ self.state = 1879
+ self.match(Java20Parser.RPAREN)
+ self.state = 1880
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ForStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def basicForStatement(self):
+ return self.getTypedRuleContext(Java20Parser.BasicForStatementContext, 0)
+
+ def enhancedForStatement(self):
+ return self.getTypedRuleContext(Java20Parser.EnhancedForStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_forStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterForStatement"):
+ listener.enterForStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitForStatement"):
+ listener.exitForStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitForStatement"):
+ return visitor.visitForStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def forStatement(self):
+
+ localctx = Java20Parser.ForStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 332, self.RULE_forStatement)
+ try:
+ self.state = 1884
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 200, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1882
+ self.basicForStatement()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1883
+ self.enhancedForStatement()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ForStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def basicForStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.BasicForStatementNoShortIfContext, 0)
+
+ def enhancedForStatementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.EnhancedForStatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_forStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterForStatementNoShortIf"):
+ listener.enterForStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitForStatementNoShortIf"):
+ listener.exitForStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitForStatementNoShortIf"):
+ return visitor.visitForStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def forStatementNoShortIf(self):
+
+ localctx = Java20Parser.ForStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 334, self.RULE_forStatementNoShortIf)
+ try:
+ self.state = 1888
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 201, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1886
+ self.basicForStatementNoShortIf()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1887
+ self.enhancedForStatementNoShortIf()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BasicForStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Java20Parser.FOR, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def SEMI(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.SEMI)
+ else:
+ return self.getToken(Java20Parser.SEMI, i)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def forInit(self):
+ return self.getTypedRuleContext(Java20Parser.ForInitContext, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def forUpdate(self):
+ return self.getTypedRuleContext(Java20Parser.ForUpdateContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_basicForStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBasicForStatement"):
+ listener.enterBasicForStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBasicForStatement"):
+ listener.exitBasicForStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBasicForStatement"):
+ return visitor.visitBasicForStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def basicForStatement(self):
+
+ localctx = Java20Parser.BasicForStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 336, self.RULE_basicForStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1890
+ self.match(Java20Parser.FOR)
+ self.state = 1891
+ self.match(Java20Parser.LPAREN)
+ self.state = 1893
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420701084123136) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0):
+ self.state = 1892
+ self.forInit()
+
+ self.state = 1895
+ self.match(Java20Parser.SEMI)
+ self.state = 1897
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1896
+ self.expression()
+
+ self.state = 1899
+ self.match(Java20Parser.SEMI)
+ self.state = 1901
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420666724352000) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0):
+ self.state = 1900
+ self.forUpdate()
+
+ self.state = 1903
+ self.match(Java20Parser.RPAREN)
+ self.state = 1904
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BasicForStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Java20Parser.FOR, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def SEMI(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.SEMI)
+ else:
+ return self.getToken(Java20Parser.SEMI, i)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def forInit(self):
+ return self.getTypedRuleContext(Java20Parser.ForInitContext, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def forUpdate(self):
+ return self.getTypedRuleContext(Java20Parser.ForUpdateContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_basicForStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBasicForStatementNoShortIf"):
+ listener.enterBasicForStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBasicForStatementNoShortIf"):
+ listener.exitBasicForStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBasicForStatementNoShortIf"):
+ return visitor.visitBasicForStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def basicForStatementNoShortIf(self):
+
+ localctx = Java20Parser.BasicForStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 338, self.RULE_basicForStatementNoShortIf)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1906
+ self.match(Java20Parser.FOR)
+ self.state = 1907
+ self.match(Java20Parser.LPAREN)
+ self.state = 1909
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420701084123136) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0):
+ self.state = 1908
+ self.forInit()
+
+ self.state = 1911
+ self.match(Java20Parser.SEMI)
+ self.state = 1913
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1912
+ self.expression()
+
+ self.state = 1915
+ self.match(Java20Parser.SEMI)
+ self.state = 1917
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420666724352000) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0):
+ self.state = 1916
+ self.forUpdate()
+
+ self.state = 1919
+ self.match(Java20Parser.RPAREN)
+ self.state = 1920
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ForInitContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementExpressionList(self):
+ return self.getTypedRuleContext(Java20Parser.StatementExpressionListContext, 0)
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_forInit
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterForInit"):
+ listener.enterForInit(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitForInit"):
+ listener.exitForInit(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitForInit"):
+ return visitor.visitForInit(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def forInit(self):
+
+ localctx = Java20Parser.ForInitContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 340, self.RULE_forInit)
+ try:
+ self.state = 1924
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 208, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1922
+ self.statementExpressionList()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1923
+ self.localVariableDeclaration()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ForUpdateContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementExpressionList(self):
+ return self.getTypedRuleContext(Java20Parser.StatementExpressionListContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_forUpdate
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterForUpdate"):
+ listener.enterForUpdate(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitForUpdate"):
+ listener.exitForUpdate(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitForUpdate"):
+ return visitor.visitForUpdate(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def forUpdate(self):
+
+ localctx = Java20Parser.ForUpdateContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 342, self.RULE_forUpdate)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1926
+ self.statementExpressionList()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StatementExpressionListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def statementExpression(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.StatementExpressionContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.StatementExpressionContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_statementExpressionList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStatementExpressionList"):
+ listener.enterStatementExpressionList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStatementExpressionList"):
+ listener.exitStatementExpressionList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStatementExpressionList"):
+ return visitor.visitStatementExpressionList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def statementExpressionList(self):
+
+ localctx = Java20Parser.StatementExpressionListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 344, self.RULE_statementExpressionList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1928
+ self.statementExpression()
+ self.state = 1933
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 1929
+ self.match(Java20Parser.COMMA)
+ self.state = 1930
+ self.statementExpression()
+ self.state = 1935
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnhancedForStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Java20Parser.FOR, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statement(self):
+ return self.getTypedRuleContext(Java20Parser.StatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enhancedForStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnhancedForStatement"):
+ listener.enterEnhancedForStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnhancedForStatement"):
+ listener.exitEnhancedForStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnhancedForStatement"):
+ return visitor.visitEnhancedForStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enhancedForStatement(self):
+
+ localctx = Java20Parser.EnhancedForStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 346, self.RULE_enhancedForStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1936
+ self.match(Java20Parser.FOR)
+ self.state = 1937
+ self.match(Java20Parser.LPAREN)
+ self.state = 1938
+ self.localVariableDeclaration()
+ self.state = 1939
+ self.match(Java20Parser.COLON)
+ self.state = 1940
+ self.expression()
+ self.state = 1941
+ self.match(Java20Parser.RPAREN)
+ self.state = 1942
+ self.statement()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class EnhancedForStatementNoShortIfContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Java20Parser.FOR, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def statementNoShortIf(self):
+ return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_enhancedForStatementNoShortIf
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEnhancedForStatementNoShortIf"):
+ listener.enterEnhancedForStatementNoShortIf(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEnhancedForStatementNoShortIf"):
+ listener.exitEnhancedForStatementNoShortIf(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEnhancedForStatementNoShortIf"):
+ return visitor.visitEnhancedForStatementNoShortIf(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def enhancedForStatementNoShortIf(self):
+
+ localctx = Java20Parser.EnhancedForStatementNoShortIfContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 348, self.RULE_enhancedForStatementNoShortIf)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1944
+ self.match(Java20Parser.FOR)
+ self.state = 1945
+ self.match(Java20Parser.LPAREN)
+ self.state = 1946
+ self.localVariableDeclaration()
+ self.state = 1947
+ self.match(Java20Parser.COLON)
+ self.state = 1948
+ self.expression()
+ self.state = 1949
+ self.match(Java20Parser.RPAREN)
+ self.state = 1950
+ self.statementNoShortIf()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BreakStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def BREAK(self):
+ return self.getToken(Java20Parser.BREAK, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_breakStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBreakStatement"):
+ listener.enterBreakStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBreakStatement"):
+ listener.exitBreakStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBreakStatement"):
+ return visitor.visitBreakStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def breakStatement(self):
+
+ localctx = Java20Parser.BreakStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 350, self.RULE_breakStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1952
+ self.match(Java20Parser.BREAK)
+ self.state = 1954
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 123:
+ self.state = 1953
+ self.match(Java20Parser.Identifier)
+
+ self.state = 1956
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ContinueStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CONTINUE(self):
+ return self.getToken(Java20Parser.CONTINUE, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_continueStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterContinueStatement"):
+ listener.enterContinueStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitContinueStatement"):
+ listener.exitContinueStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitContinueStatement"):
+ return visitor.visitContinueStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def continueStatement(self):
+
+ localctx = Java20Parser.ContinueStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 352, self.RULE_continueStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1958
+ self.match(Java20Parser.CONTINUE)
+ self.state = 1960
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 123:
+ self.state = 1959
+ self.match(Java20Parser.Identifier)
+
+ self.state = 1962
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ReturnStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def RETURN(self):
+ return self.getToken(Java20Parser.RETURN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_returnStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReturnStatement"):
+ listener.enterReturnStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReturnStatement"):
+ listener.exitReturnStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReturnStatement"):
+ return visitor.visitReturnStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def returnStatement(self):
+
+ localctx = Java20Parser.ReturnStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 354, self.RULE_returnStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1964
+ self.match(Java20Parser.RETURN)
+ self.state = 1966
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 1965
+ self.expression()
+
+ self.state = 1968
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ThrowStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def THROW(self):
+ return self.getToken(Java20Parser.THROW, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_throwStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterThrowStatement"):
+ listener.enterThrowStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitThrowStatement"):
+ listener.exitThrowStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitThrowStatement"):
+ return visitor.visitThrowStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def throwStatement(self):
+
+ localctx = Java20Parser.ThrowStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 356, self.RULE_throwStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1970
+ self.match(Java20Parser.THROW)
+ self.state = 1971
+ self.expression()
+ self.state = 1972
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SynchronizedStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SYNCHRONIZED(self):
+ return self.getToken(Java20Parser.SYNCHRONIZED, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_synchronizedStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSynchronizedStatement"):
+ listener.enterSynchronizedStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSynchronizedStatement"):
+ listener.exitSynchronizedStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSynchronizedStatement"):
+ return visitor.visitSynchronizedStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def synchronizedStatement(self):
+
+ localctx = Java20Parser.SynchronizedStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 358, self.RULE_synchronizedStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1974
+ self.match(Java20Parser.SYNCHRONIZED)
+ self.state = 1975
+ self.match(Java20Parser.LPAREN)
+ self.state = 1976
+ self.expression()
+ self.state = 1977
+ self.match(Java20Parser.RPAREN)
+ self.state = 1978
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TryStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def TRY(self):
+ return self.getToken(Java20Parser.TRY, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def catches(self):
+ return self.getTypedRuleContext(Java20Parser.CatchesContext, 0)
+
+ def finallyBlock(self):
+ return self.getTypedRuleContext(Java20Parser.FinallyBlockContext, 0)
+
+ def tryWithResourcesStatement(self):
+ return self.getTypedRuleContext(Java20Parser.TryWithResourcesStatementContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_tryStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTryStatement"):
+ listener.enterTryStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTryStatement"):
+ listener.exitTryStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTryStatement"):
+ return visitor.visitTryStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def tryStatement(self):
+
+ localctx = Java20Parser.TryStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 360, self.RULE_tryStatement)
+ self._la = 0 # Token type
+ try:
+ self.state = 1996
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 214, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1980
+ self.match(Java20Parser.TRY)
+ self.state = 1981
+ self.block()
+ self.state = 1982
+ self.catches()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1984
+ self.match(Java20Parser.TRY)
+ self.state = 1985
+ self.block()
+ self.state = 1986
+ self.finallyBlock()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1988
+ self.match(Java20Parser.TRY)
+ self.state = 1989
+ self.block()
+ self.state = 1991
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 24:
+ self.state = 1990
+ self.catches()
+
+ self.state = 1993
+ self.finallyBlock()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1995
+ self.tryWithResourcesStatement()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CatchesContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def catchClause(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.CatchClauseContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.CatchClauseContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_catches
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCatches"):
+ listener.enterCatches(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCatches"):
+ listener.exitCatches(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCatches"):
+ return visitor.visitCatches(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def catches(self):
+
+ localctx = Java20Parser.CatchesContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 362, self.RULE_catches)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1998
+ self.catchClause()
+ self.state = 2002
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 24:
+ self.state = 1999
+ self.catchClause()
+ self.state = 2004
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CatchClauseContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CATCH(self):
+ return self.getToken(Java20Parser.CATCH, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def catchFormalParameter(self):
+ return self.getTypedRuleContext(Java20Parser.CatchFormalParameterContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_catchClause
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCatchClause"):
+ listener.enterCatchClause(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCatchClause"):
+ listener.exitCatchClause(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCatchClause"):
+ return visitor.visitCatchClause(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def catchClause(self):
+
+ localctx = Java20Parser.CatchClauseContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 364, self.RULE_catchClause)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2005
+ self.match(Java20Parser.CATCH)
+ self.state = 2006
+ self.match(Java20Parser.LPAREN)
+ self.state = 2007
+ self.catchFormalParameter()
+ self.state = 2008
+ self.match(Java20Parser.RPAREN)
+ self.state = 2009
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CatchFormalParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def catchType(self):
+ return self.getTypedRuleContext(Java20Parser.CatchTypeContext, 0)
+
+ def variableDeclaratorId(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_catchFormalParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCatchFormalParameter"):
+ listener.enterCatchFormalParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCatchFormalParameter"):
+ listener.exitCatchFormalParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCatchFormalParameter"):
+ return visitor.visitCatchFormalParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def catchFormalParameter(self):
+
+ localctx = Java20Parser.CatchFormalParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 366, self.RULE_catchFormalParameter)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2014
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 2011
+ self.variableModifier()
+ self.state = 2016
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2017
+ self.catchType()
+ self.state = 2018
+ self.variableDeclaratorId()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CatchTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannClassType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannClassTypeContext, 0)
+
+ def BITOR(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.BITOR)
+ else:
+ return self.getToken(Java20Parser.BITOR, i)
+
+ def classType(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ClassTypeContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_catchType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCatchType"):
+ listener.enterCatchType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCatchType"):
+ listener.exitCatchType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCatchType"):
+ return visitor.visitCatchType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def catchType(self):
+
+ localctx = Java20Parser.CatchTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 368, self.RULE_catchType)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2020
+ self.unannClassType()
+ self.state = 2025
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 109:
+ self.state = 2021
+ self.match(Java20Parser.BITOR)
+ self.state = 2022
+ self.classType()
+ self.state = 2027
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FinallyBlockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FINALLY(self):
+ return self.getToken(Java20Parser.FINALLY, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_finallyBlock
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFinallyBlock"):
+ listener.enterFinallyBlock(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFinallyBlock"):
+ listener.exitFinallyBlock(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFinallyBlock"):
+ return visitor.visitFinallyBlock(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def finallyBlock(self):
+
+ localctx = Java20Parser.FinallyBlockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 370, self.RULE_finallyBlock)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2028
+ self.match(Java20Parser.FINALLY)
+ self.state = 2029
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TryWithResourcesStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def TRY(self):
+ return self.getToken(Java20Parser.TRY, 0)
+
+ def resourceSpecification(self):
+ return self.getTypedRuleContext(Java20Parser.ResourceSpecificationContext, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def catches(self):
+ return self.getTypedRuleContext(Java20Parser.CatchesContext, 0)
+
+ def finallyBlock(self):
+ return self.getTypedRuleContext(Java20Parser.FinallyBlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_tryWithResourcesStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTryWithResourcesStatement"):
+ listener.enterTryWithResourcesStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTryWithResourcesStatement"):
+ listener.exitTryWithResourcesStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTryWithResourcesStatement"):
+ return visitor.visitTryWithResourcesStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def tryWithResourcesStatement(self):
+
+ localctx = Java20Parser.TryWithResourcesStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 372, self.RULE_tryWithResourcesStatement)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2031
+ self.match(Java20Parser.TRY)
+ self.state = 2032
+ self.resourceSpecification()
+ self.state = 2033
+ self.block()
+ self.state = 2035
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 24:
+ self.state = 2034
+ self.catches()
+
+ self.state = 2038
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 36:
+ self.state = 2037
+ self.finallyBlock()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ResourceSpecificationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def resourceList(self):
+ return self.getTypedRuleContext(Java20Parser.ResourceListContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_resourceSpecification
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterResourceSpecification"):
+ listener.enterResourceSpecification(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitResourceSpecification"):
+ listener.exitResourceSpecification(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitResourceSpecification"):
+ return visitor.visitResourceSpecification(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def resourceSpecification(self):
+
+ localctx = Java20Parser.ResourceSpecificationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 374, self.RULE_resourceSpecification)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2040
+ self.match(Java20Parser.LPAREN)
+ self.state = 2041
+ self.resourceList()
+ self.state = 2043
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 82:
+ self.state = 2042
+ self.match(Java20Parser.SEMI)
+
+ self.state = 2045
+ self.match(Java20Parser.RPAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ResourceListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def resource(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ResourceContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ResourceContext, i)
+
+ def SEMI(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.SEMI)
+ else:
+ return self.getToken(Java20Parser.SEMI, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_resourceList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterResourceList"):
+ listener.enterResourceList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitResourceList"):
+ listener.exitResourceList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitResourceList"):
+ return visitor.visitResourceList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def resourceList(self):
+
+ localctx = Java20Parser.ResourceListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 376, self.RULE_resourceList)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2047
+ self.resource()
+ self.state = 2052
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 221, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 2048
+ self.match(Java20Parser.SEMI)
+ self.state = 2049
+ self.resource()
+ self.state = 2054
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 221, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ResourceContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def variableAccess(self):
+ return self.getTypedRuleContext(Java20Parser.VariableAccessContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_resource
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterResource"):
+ listener.enterResource(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitResource"):
+ listener.exitResource(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitResource"):
+ return visitor.visitResource(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def resource(self):
+
+ localctx = Java20Parser.ResourceContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 378, self.RULE_resource)
+ try:
+ self.state = 2057
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 222, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2055
+ self.localVariableDeclaration()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2056
+ self.variableAccess()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VariableAccessContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def fieldAccess(self):
+ return self.getTypedRuleContext(Java20Parser.FieldAccessContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_variableAccess
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVariableAccess"):
+ listener.enterVariableAccess(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVariableAccess"):
+ listener.exitVariableAccess(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVariableAccess"):
+ return visitor.visitVariableAccess(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def variableAccess(self):
+
+ localctx = Java20Parser.VariableAccessContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 380, self.RULE_variableAccess)
+ try:
+ self.state = 2061
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 223, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2059
+ self.expressionName()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2060
+ self.fieldAccess()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class YieldStatementContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def YIELD(self):
+ return self.getToken(Java20Parser.YIELD, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def SEMI(self):
+ return self.getToken(Java20Parser.SEMI, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_yieldStatement
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterYieldStatement"):
+ listener.enterYieldStatement(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitYieldStatement"):
+ listener.exitYieldStatement(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitYieldStatement"):
+ return visitor.visitYieldStatement(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def yieldStatement(self):
+
+ localctx = Java20Parser.YieldStatementContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 382, self.RULE_yieldStatement)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2063
+ self.match(Java20Parser.YIELD)
+ self.state = 2064
+ self.expression()
+ self.state = 2065
+ self.match(Java20Parser.SEMI)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PatternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typePattern(self):
+ return self.getTypedRuleContext(Java20Parser.TypePatternContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPattern"):
+ listener.enterPattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPattern"):
+ listener.exitPattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPattern"):
+ return visitor.visitPattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pattern(self):
+
+ localctx = Java20Parser.PatternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 384, self.RULE_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2067
+ self.typePattern()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypePatternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def localVariableDeclaration(self):
+ return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typePattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypePattern"):
+ listener.enterTypePattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypePattern"):
+ listener.exitTypePattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypePattern"):
+ return visitor.visitTypePattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typePattern(self):
+
+ localctx = Java20Parser.TypePatternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 386, self.RULE_typePattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2069
+ self.localVariableDeclaration()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def lambdaExpression(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0)
+
+ def assignmentExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AssignmentExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_expression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpression"):
+ listener.enterExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpression"):
+ listener.exitExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpression"):
+ return visitor.visitExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expression(self):
+
+ localctx = Java20Parser.ExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 388, self.RULE_expression)
+ try:
+ self.state = 2073
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 224, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2071
+ self.lambdaExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2072
+ self.assignmentExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PrimaryContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def primaryNoNewArray(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryNoNewArrayContext, 0)
+
+ def arrayCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_primary
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPrimary"):
+ listener.enterPrimary(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPrimary"):
+ listener.exitPrimary(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPrimary"):
+ return visitor.visitPrimary(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def primary(self):
+
+ localctx = Java20Parser.PrimaryContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 390, self.RULE_primary)
+ try:
+ self.state = 2077
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 225, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2075
+ self.primaryNoNewArray()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2076
+ self.arrayCreationExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PrimaryNoNewArrayContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def literal(self):
+ return self.getTypedRuleContext(Java20Parser.LiteralContext, 0)
+
+ def pNNA(self):
+ return self.getTypedRuleContext(Java20Parser.PNNAContext, 0)
+
+ def classLiteral(self):
+ return self.getTypedRuleContext(Java20Parser.ClassLiteralContext, 0)
+
+ def THIS(self):
+ return self.getToken(Java20Parser.THIS, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def unqualifiedClassInstanceCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def arrayCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def LBRACK(self):
+ return self.getToken(Java20Parser.LBRACK, 0)
+
+ def RBRACK(self):
+ return self.getToken(Java20Parser.RBRACK, 0)
+
+ def arrayCreationExpressionWithInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0)
+
+ def methodName(self):
+ return self.getTypedRuleContext(Java20Parser.MethodNameContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def COLONCOLON(self):
+ return self.getToken(Java20Parser.COLONCOLON, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def arrayType(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_primaryNoNewArray
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPrimaryNoNewArray"):
+ listener.enterPrimaryNoNewArray(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPrimaryNoNewArray"):
+ listener.exitPrimaryNoNewArray(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPrimaryNoNewArray"):
+ return visitor.visitPrimaryNoNewArray(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def primaryNoNewArray(self):
+
+ localctx = Java20Parser.PrimaryNoNewArrayContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 392, self.RULE_primaryNoNewArray)
+ self._la = 0 # Token type
+ try:
+ self.state = 2296
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 269, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2079
+ self.literal()
+ self.state = 2081
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 226, self._ctx)
+ if la_ == 1:
+ self.state = 2080
+ self.pNNA()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2083
+ self.classLiteral()
+ self.state = 2085
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 227, self._ctx)
+ if la_ == 1:
+ self.state = 2084
+ self.pNNA()
+
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2087
+ self.match(Java20Parser.THIS)
+ self.state = 2089
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 228, self._ctx)
+ if la_ == 1:
+ self.state = 2088
+ self.pNNA()
+
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2091
+ self.typeName()
+ self.state = 2092
+ self.match(Java20Parser.DOT)
+ self.state = 2093
+ self.match(Java20Parser.THIS)
+ self.state = 2095
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 229, self._ctx)
+ if la_ == 1:
+ self.state = 2094
+ self.pNNA()
+
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2097
+ self.match(Java20Parser.LPAREN)
+ self.state = 2098
+ self.expression()
+ self.state = 2099
+ self.match(Java20Parser.RPAREN)
+ self.state = 2101
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 230, self._ctx)
+ if la_ == 1:
+ self.state = 2100
+ self.pNNA()
+
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 2103
+ self.unqualifiedClassInstanceCreationExpression()
+ self.state = 2105
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 231, self._ctx)
+ if la_ == 1:
+ self.state = 2104
+ self.pNNA()
+
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 2107
+ self.expressionName()
+ self.state = 2108
+ self.match(Java20Parser.DOT)
+ self.state = 2109
+ self.unqualifiedClassInstanceCreationExpression()
+ self.state = 2111
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 232, self._ctx)
+ if la_ == 1:
+ self.state = 2110
+ self.pNNA()
+
+ pass
+
+ elif la_ == 8:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 2113
+ self.arrayCreationExpression()
+ self.state = 2114
+ self.match(Java20Parser.DOT)
+ self.state = 2115
+ self.unqualifiedClassInstanceCreationExpression()
+ self.state = 2117
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 233, self._ctx)
+ if la_ == 1:
+ self.state = 2116
+ self.pNNA()
+
+ pass
+
+ elif la_ == 9:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 2119
+ self.arrayCreationExpression()
+ self.state = 2120
+ self.match(Java20Parser.DOT)
+ self.state = 2121
+ self.match(Java20Parser.Identifier)
+ self.state = 2123
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 234, self._ctx)
+ if la_ == 1:
+ self.state = 2122
+ self.pNNA()
+
+ pass
+
+ elif la_ == 10:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 2125
+ self.match(Java20Parser.SUPER)
+ self.state = 2126
+ self.match(Java20Parser.DOT)
+ self.state = 2127
+ self.match(Java20Parser.Identifier)
+ self.state = 2129
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 235, self._ctx)
+ if la_ == 1:
+ self.state = 2128
+ self.pNNA()
+
+ pass
+
+ elif la_ == 11:
+ self.enterOuterAlt(localctx, 11)
+ self.state = 2131
+ self.typeName()
+ self.state = 2132
+ self.match(Java20Parser.DOT)
+ self.state = 2133
+ self.match(Java20Parser.SUPER)
+ self.state = 2134
+ self.match(Java20Parser.DOT)
+ self.state = 2135
+ self.match(Java20Parser.Identifier)
+ self.state = 2137
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 236, self._ctx)
+ if la_ == 1:
+ self.state = 2136
+ self.pNNA()
+
+ pass
+
+ elif la_ == 12:
+ self.enterOuterAlt(localctx, 12)
+ self.state = 2139
+ self.expressionName()
+ self.state = 2140
+ self.match(Java20Parser.LBRACK)
+ self.state = 2141
+ self.expression()
+ self.state = 2142
+ self.match(Java20Parser.RBRACK)
+ self.state = 2144
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 237, self._ctx)
+ if la_ == 1:
+ self.state = 2143
+ self.pNNA()
+
+ pass
+
+ elif la_ == 13:
+ self.enterOuterAlt(localctx, 13)
+ self.state = 2146
+ self.arrayCreationExpressionWithInitializer()
+ self.state = 2147
+ self.match(Java20Parser.LBRACK)
+ self.state = 2148
+ self.expression()
+ self.state = 2149
+ self.match(Java20Parser.RBRACK)
+ self.state = 2151
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 238, self._ctx)
+ if la_ == 1:
+ self.state = 2150
+ self.pNNA()
+
+ pass
+
+ elif la_ == 14:
+ self.enterOuterAlt(localctx, 14)
+ self.state = 2153
+ self.methodName()
+ self.state = 2154
+ self.match(Java20Parser.LPAREN)
+ self.state = 2156
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2155
+ self.argumentList()
+
+ self.state = 2158
+ self.match(Java20Parser.RPAREN)
+ self.state = 2160
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 240, self._ctx)
+ if la_ == 1:
+ self.state = 2159
+ self.pNNA()
+
+ pass
+
+ elif la_ == 15:
+ self.enterOuterAlt(localctx, 15)
+ self.state = 2162
+ self.typeName()
+ self.state = 2163
+ self.match(Java20Parser.DOT)
+ self.state = 2165
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2164
+ self.typeArguments()
+
+ self.state = 2167
+ self.match(Java20Parser.Identifier)
+ self.state = 2168
+ self.match(Java20Parser.LPAREN)
+ self.state = 2170
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2169
+ self.argumentList()
+
+ self.state = 2172
+ self.match(Java20Parser.RPAREN)
+ self.state = 2174
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 243, self._ctx)
+ if la_ == 1:
+ self.state = 2173
+ self.pNNA()
+
+ pass
+
+ elif la_ == 16:
+ self.enterOuterAlt(localctx, 16)
+ self.state = 2176
+ self.expressionName()
+ self.state = 2177
+ self.match(Java20Parser.DOT)
+ self.state = 2179
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2178
+ self.typeArguments()
+
+ self.state = 2181
+ self.match(Java20Parser.Identifier)
+ self.state = 2182
+ self.match(Java20Parser.LPAREN)
+ self.state = 2184
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2183
+ self.argumentList()
+
+ self.state = 2186
+ self.match(Java20Parser.RPAREN)
+ self.state = 2188
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 246, self._ctx)
+ if la_ == 1:
+ self.state = 2187
+ self.pNNA()
+
+ pass
+
+ elif la_ == 17:
+ self.enterOuterAlt(localctx, 17)
+ self.state = 2190
+ self.arrayCreationExpression()
+ self.state = 2191
+ self.match(Java20Parser.DOT)
+ self.state = 2193
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2192
+ self.typeArguments()
+
+ self.state = 2195
+ self.match(Java20Parser.Identifier)
+ self.state = 2196
+ self.match(Java20Parser.LPAREN)
+ self.state = 2198
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2197
+ self.argumentList()
+
+ self.state = 2200
+ self.match(Java20Parser.RPAREN)
+ self.state = 2202
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 249, self._ctx)
+ if la_ == 1:
+ self.state = 2201
+ self.pNNA()
+
+ pass
+
+ elif la_ == 18:
+ self.enterOuterAlt(localctx, 18)
+ self.state = 2204
+ self.match(Java20Parser.SUPER)
+ self.state = 2205
+ self.match(Java20Parser.DOT)
+ self.state = 2207
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2206
+ self.typeArguments()
+
+ self.state = 2209
+ self.match(Java20Parser.Identifier)
+ self.state = 2210
+ self.match(Java20Parser.LPAREN)
+ self.state = 2212
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2211
+ self.argumentList()
+
+ self.state = 2214
+ self.match(Java20Parser.RPAREN)
+ self.state = 2216
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 252, self._ctx)
+ if la_ == 1:
+ self.state = 2215
+ self.pNNA()
+
+ pass
+
+ elif la_ == 19:
+ self.enterOuterAlt(localctx, 19)
+ self.state = 2218
+ self.typeName()
+ self.state = 2219
+ self.match(Java20Parser.DOT)
+ self.state = 2220
+ self.match(Java20Parser.SUPER)
+ self.state = 2221
+ self.match(Java20Parser.DOT)
+ self.state = 2223
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2222
+ self.typeArguments()
+
+ self.state = 2225
+ self.match(Java20Parser.Identifier)
+ self.state = 2226
+ self.match(Java20Parser.LPAREN)
+ self.state = 2228
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2227
+ self.argumentList()
+
+ self.state = 2230
+ self.match(Java20Parser.RPAREN)
+ self.state = 2232
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 255, self._ctx)
+ if la_ == 1:
+ self.state = 2231
+ self.pNNA()
+
+ pass
+
+ elif la_ == 20:
+ self.enterOuterAlt(localctx, 20)
+ self.state = 2234
+ self.expressionName()
+ self.state = 2235
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2237
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2236
+ self.typeArguments()
+
+ self.state = 2239
+ self.match(Java20Parser.Identifier)
+ self.state = 2241
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 257, self._ctx)
+ if la_ == 1:
+ self.state = 2240
+ self.pNNA()
+
+ pass
+
+ elif la_ == 21:
+ self.enterOuterAlt(localctx, 21)
+ self.state = 2243
+ self.arrayCreationExpression()
+ self.state = 2244
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2246
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2245
+ self.typeArguments()
+
+ self.state = 2248
+ self.match(Java20Parser.Identifier)
+ self.state = 2250
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 259, self._ctx)
+ if la_ == 1:
+ self.state = 2249
+ self.pNNA()
+
+ pass
+
+ elif la_ == 22:
+ self.enterOuterAlt(localctx, 22)
+ self.state = 2252
+ self.referenceType()
+ self.state = 2253
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2255
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2254
+ self.typeArguments()
+
+ self.state = 2257
+ self.match(Java20Parser.Identifier)
+ self.state = 2259
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 261, self._ctx)
+ if la_ == 1:
+ self.state = 2258
+ self.pNNA()
+
+ pass
+
+ elif la_ == 23:
+ self.enterOuterAlt(localctx, 23)
+ self.state = 2261
+ self.match(Java20Parser.SUPER)
+ self.state = 2262
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2264
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2263
+ self.typeArguments()
+
+ self.state = 2266
+ self.match(Java20Parser.Identifier)
+ self.state = 2268
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 263, self._ctx)
+ if la_ == 1:
+ self.state = 2267
+ self.pNNA()
+
+ pass
+
+ elif la_ == 24:
+ self.enterOuterAlt(localctx, 24)
+ self.state = 2270
+ self.typeName()
+ self.state = 2271
+ self.match(Java20Parser.DOT)
+ self.state = 2272
+ self.match(Java20Parser.SUPER)
+ self.state = 2273
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2275
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2274
+ self.typeArguments()
+
+ self.state = 2277
+ self.match(Java20Parser.Identifier)
+ self.state = 2279
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 265, self._ctx)
+ if la_ == 1:
+ self.state = 2278
+ self.pNNA()
+
+ pass
+
+ elif la_ == 25:
+ self.enterOuterAlt(localctx, 25)
+ self.state = 2281
+ self.classType()
+ self.state = 2282
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2284
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2283
+ self.typeArguments()
+
+ self.state = 2286
+ self.match(Java20Parser.NEW)
+ self.state = 2288
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 267, self._ctx)
+ if la_ == 1:
+ self.state = 2287
+ self.pNNA()
+
+ pass
+
+ elif la_ == 26:
+ self.enterOuterAlt(localctx, 26)
+ self.state = 2290
+ self.arrayType()
+ self.state = 2291
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2292
+ self.match(Java20Parser.NEW)
+ self.state = 2294
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 268, self._ctx)
+ if la_ == 1:
+ self.state = 2293
+ self.pNNA()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PNNAContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def unqualifiedClassInstanceCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0)
+
+ def pNNA(self):
+ return self.getTypedRuleContext(Java20Parser.PNNAContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def LBRACK(self):
+ return self.getToken(Java20Parser.LBRACK, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RBRACK(self):
+ return self.getToken(Java20Parser.RBRACK, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def COLONCOLON(self):
+ return self.getToken(Java20Parser.COLONCOLON, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_pNNA
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPNNA"):
+ listener.enterPNNA(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPNNA"):
+ listener.exitPNNA(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPNNA"):
+ return visitor.visitPNNA(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pNNA(self):
+
+ localctx = Java20Parser.PNNAContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 394, self.RULE_pNNA)
+ self._la = 0 # Token type
+ try:
+ self.state = 2335
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 278, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2298
+ self.match(Java20Parser.DOT)
+ self.state = 2299
+ self.unqualifiedClassInstanceCreationExpression()
+ self.state = 2301
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 270, self._ctx)
+ if la_ == 1:
+ self.state = 2300
+ self.pNNA()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2303
+ self.match(Java20Parser.DOT)
+ self.state = 2304
+ self.match(Java20Parser.Identifier)
+ self.state = 2306
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 271, self._ctx)
+ if la_ == 1:
+ self.state = 2305
+ self.pNNA()
+
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2308
+ self.match(Java20Parser.LBRACK)
+ self.state = 2309
+ self.expression()
+ self.state = 2310
+ self.match(Java20Parser.RBRACK)
+ self.state = 2312
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 272, self._ctx)
+ if la_ == 1:
+ self.state = 2311
+ self.pNNA()
+
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2314
+ self.match(Java20Parser.DOT)
+ self.state = 2316
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2315
+ self.typeArguments()
+
+ self.state = 2318
+ self.match(Java20Parser.Identifier)
+ self.state = 2319
+ self.match(Java20Parser.LPAREN)
+ self.state = 2321
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2320
+ self.argumentList()
+
+ self.state = 2323
+ self.match(Java20Parser.RPAREN)
+ self.state = 2325
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 275, self._ctx)
+ if la_ == 1:
+ self.state = 2324
+ self.pNNA()
+
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2327
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2329
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2328
+ self.typeArguments()
+
+ self.state = 2331
+ self.match(Java20Parser.Identifier)
+ self.state = 2333
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 277, self._ctx)
+ if la_ == 1:
+ self.state = 2332
+ self.pNNA()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassLiteralContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def CLASS(self):
+ return self.getToken(Java20Parser.CLASS, 0)
+
+ def LBRACK(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.LBRACK)
+ else:
+ return self.getToken(Java20Parser.LBRACK, i)
+
+ def RBRACK(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.RBRACK)
+ else:
+ return self.getToken(Java20Parser.RBRACK, i)
+
+ def numericType(self):
+ return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0)
+
+ def BOOLEAN(self):
+ return self.getToken(Java20Parser.BOOLEAN, 0)
+
+ def VOID(self):
+ return self.getToken(Java20Parser.VOID, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classLiteral
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassLiteral"):
+ listener.enterClassLiteral(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassLiteral"):
+ listener.exitClassLiteral(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassLiteral"):
+ return visitor.visitClassLiteral(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classLiteral(self):
+
+ localctx = Java20Parser.ClassLiteralContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 396, self.RULE_classLiteral)
+ self._la = 0 # Token type
+ try:
+ self.state = 2372
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2337
+ self.typeName()
+ self.state = 2342
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 80:
+ self.state = 2338
+ self.match(Java20Parser.LBRACK)
+ self.state = 2339
+ self.match(Java20Parser.RBRACK)
+ self.state = 2344
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2345
+ self.match(Java20Parser.DOT)
+ self.state = 2346
+ self.match(Java20Parser.CLASS)
+ pass
+ elif token in [22, 25, 31, 37, 44, 46, 54]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2348
+ self.numericType()
+ self.state = 2353
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 80:
+ self.state = 2349
+ self.match(Java20Parser.LBRACK)
+ self.state = 2350
+ self.match(Java20Parser.RBRACK)
+ self.state = 2355
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2356
+ self.match(Java20Parser.DOT)
+ self.state = 2357
+ self.match(Java20Parser.CLASS)
+ pass
+ elif token in [20]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2359
+ self.match(Java20Parser.BOOLEAN)
+ self.state = 2364
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 80:
+ self.state = 2360
+ self.match(Java20Parser.LBRACK)
+ self.state = 2361
+ self.match(Java20Parser.RBRACK)
+ self.state = 2366
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2367
+ self.match(Java20Parser.DOT)
+ self.state = 2368
+ self.match(Java20Parser.CLASS)
+ pass
+ elif token in [65]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2369
+ self.match(Java20Parser.VOID)
+ self.state = 2370
+ self.match(Java20Parser.DOT)
+ self.state = 2371
+ self.match(Java20Parser.CLASS)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassInstanceCreationExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unqualifiedClassInstanceCreationExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classInstanceCreationExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassInstanceCreationExpression"):
+ listener.enterClassInstanceCreationExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassInstanceCreationExpression"):
+ listener.exitClassInstanceCreationExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassInstanceCreationExpression"):
+ return visitor.visitClassInstanceCreationExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classInstanceCreationExpression(self):
+
+ localctx = Java20Parser.ClassInstanceCreationExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 398, self.RULE_classInstanceCreationExpression)
+ try:
+ self.state = 2383
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 283, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2374
+ self.unqualifiedClassInstanceCreationExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2375
+ self.expressionName()
+ self.state = 2376
+ self.match(Java20Parser.DOT)
+ self.state = 2377
+ self.unqualifiedClassInstanceCreationExpression()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2379
+ self.primary()
+ self.state = 2380
+ self.match(Java20Parser.DOT)
+ self.state = 2381
+ self.unqualifiedClassInstanceCreationExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnqualifiedClassInstanceCreationExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def classOrInterfaceTypeToInstantiate(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeToInstantiateContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def classBody(self):
+ return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unqualifiedClassInstanceCreationExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnqualifiedClassInstanceCreationExpression"):
+ listener.enterUnqualifiedClassInstanceCreationExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnqualifiedClassInstanceCreationExpression"):
+ listener.exitUnqualifiedClassInstanceCreationExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnqualifiedClassInstanceCreationExpression"):
+ return visitor.visitUnqualifiedClassInstanceCreationExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unqualifiedClassInstanceCreationExpression(self):
+
+ localctx = Java20Parser.UnqualifiedClassInstanceCreationExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 400, self.RULE_unqualifiedClassInstanceCreationExpression)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2385
+ self.match(Java20Parser.NEW)
+ self.state = 2387
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2386
+ self.typeArguments()
+
+ self.state = 2389
+ self.classOrInterfaceTypeToInstantiate()
+ self.state = 2390
+ self.match(Java20Parser.LPAREN)
+ self.state = 2392
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2391
+ self.argumentList()
+
+ self.state = 2394
+ self.match(Java20Parser.RPAREN)
+ self.state = 2396
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 286, self._ctx)
+ if la_ == 1:
+ self.state = 2395
+ self.classBody()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassOrInterfaceTypeToInstantiateContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def Identifier(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.Identifier)
+ else:
+ return self.getToken(Java20Parser.Identifier, i)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def typeArgumentsOrDiamond(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsOrDiamondContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_classOrInterfaceTypeToInstantiate
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassOrInterfaceTypeToInstantiate"):
+ listener.enterClassOrInterfaceTypeToInstantiate(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassOrInterfaceTypeToInstantiate"):
+ listener.exitClassOrInterfaceTypeToInstantiate(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassOrInterfaceTypeToInstantiate"):
+ return visitor.visitClassOrInterfaceTypeToInstantiate(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classOrInterfaceTypeToInstantiate(self):
+
+ localctx = Java20Parser.ClassOrInterfaceTypeToInstantiateContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 402, self.RULE_classOrInterfaceTypeToInstantiate)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2401
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 2398
+ self.annotation()
+ self.state = 2403
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2404
+ self.match(Java20Parser.Identifier)
+ self.state = 2415
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 84:
+ self.state = 2405
+ self.match(Java20Parser.DOT)
+ self.state = 2409
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 2406
+ self.annotation()
+ self.state = 2411
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2412
+ self.match(Java20Parser.Identifier)
+ self.state = 2417
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2419
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 4 or _la == 90:
+ self.state = 2418
+ self.typeArgumentsOrDiamond()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypeArgumentsOrDiamondContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def OACA(self):
+ return self.getToken(Java20Parser.OACA, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_typeArgumentsOrDiamond
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypeArgumentsOrDiamond"):
+ listener.enterTypeArgumentsOrDiamond(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypeArgumentsOrDiamond"):
+ listener.exitTypeArgumentsOrDiamond(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypeArgumentsOrDiamond"):
+ return visitor.visitTypeArgumentsOrDiamond(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typeArgumentsOrDiamond(self):
+
+ localctx = Java20Parser.TypeArgumentsOrDiamondContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 404, self.RULE_typeArgumentsOrDiamond)
+ try:
+ self.state = 2423
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [90]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2421
+ self.typeArguments()
+ pass
+ elif token in [4]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2422
+ self.match(Java20Parser.OACA)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayCreationExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def arrayCreationExpressionWithoutInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithoutInitializerContext, 0)
+
+ def arrayCreationExpressionWithInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayCreationExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayCreationExpression"):
+ listener.enterArrayCreationExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayCreationExpression"):
+ listener.exitArrayCreationExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayCreationExpression"):
+ return visitor.visitArrayCreationExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayCreationExpression(self):
+
+ localctx = Java20Parser.ArrayCreationExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 406, self.RULE_arrayCreationExpression)
+ try:
+ self.state = 2427
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 292, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2425
+ self.arrayCreationExpressionWithoutInitializer()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2426
+ self.arrayCreationExpressionWithInitializer()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayCreationExpressionWithoutInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def primitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0)
+
+ def dimExprs(self):
+ return self.getTypedRuleContext(Java20Parser.DimExprsContext, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayCreationExpressionWithoutInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayCreationExpressionWithoutInitializer"):
+ listener.enterArrayCreationExpressionWithoutInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayCreationExpressionWithoutInitializer"):
+ listener.exitArrayCreationExpressionWithoutInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayCreationExpressionWithoutInitializer"):
+ return visitor.visitArrayCreationExpressionWithoutInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayCreationExpressionWithoutInitializer(self):
+
+ localctx = Java20Parser.ArrayCreationExpressionWithoutInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 408, self.RULE_arrayCreationExpressionWithoutInitializer)
+ try:
+ self.state = 2441
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 295, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2429
+ self.match(Java20Parser.NEW)
+ self.state = 2430
+ self.primitiveType()
+ self.state = 2431
+ self.dimExprs()
+ self.state = 2433
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 293, self._ctx)
+ if la_ == 1:
+ self.state = 2432
+ self.dims()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2435
+ self.match(Java20Parser.NEW)
+ self.state = 2436
+ self.classType()
+ self.state = 2437
+ self.dimExprs()
+ self.state = 2439
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 294, self._ctx)
+ if la_ == 1:
+ self.state = 2438
+ self.dims()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayCreationExpressionWithInitializerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def primitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0)
+
+ def dims(self):
+ return self.getTypedRuleContext(Java20Parser.DimsContext, 0)
+
+ def arrayInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayInitializerContext, 0)
+
+ def classOrInterfaceType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayCreationExpressionWithInitializer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayCreationExpressionWithInitializer"):
+ listener.enterArrayCreationExpressionWithInitializer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayCreationExpressionWithInitializer"):
+ listener.exitArrayCreationExpressionWithInitializer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayCreationExpressionWithInitializer"):
+ return visitor.visitArrayCreationExpressionWithInitializer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayCreationExpressionWithInitializer(self):
+
+ localctx = Java20Parser.ArrayCreationExpressionWithInitializerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 410, self.RULE_arrayCreationExpressionWithInitializer)
+ try:
+ self.state = 2453
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 296, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2443
+ self.match(Java20Parser.NEW)
+ self.state = 2444
+ self.primitiveType()
+ self.state = 2445
+ self.dims()
+ self.state = 2446
+ self.arrayInitializer()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2448
+ self.match(Java20Parser.NEW)
+ self.state = 2449
+ self.classOrInterfaceType()
+ self.state = 2450
+ self.dims()
+ self.state = 2451
+ self.arrayInitializer()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DimExprsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def dimExpr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.DimExprContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.DimExprContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_dimExprs
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDimExprs"):
+ listener.enterDimExprs(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDimExprs"):
+ listener.exitDimExprs(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDimExprs"):
+ return visitor.visitDimExprs(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dimExprs(self):
+
+ localctx = Java20Parser.DimExprsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 412, self.RULE_dimExprs)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2455
+ self.dimExpr()
+ self.state = 2459
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 297, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 2456
+ self.dimExpr()
+ self.state = 2461
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 297, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DimExprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LBRACK(self):
+ return self.getToken(Java20Parser.LBRACK, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RBRACK(self):
+ return self.getToken(Java20Parser.RBRACK, 0)
+
+ def annotation(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AnnotationContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AnnotationContext, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_dimExpr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDimExpr"):
+ listener.enterDimExpr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDimExpr"):
+ listener.exitDimExpr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDimExpr"):
+ return visitor.visitDimExpr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dimExpr(self):
+
+ localctx = Java20Parser.DimExprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 414, self.RULE_dimExpr)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2465
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 86:
+ self.state = 2462
+ self.annotation()
+ self.state = 2467
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2468
+ self.match(Java20Parser.LBRACK)
+ self.state = 2469
+ self.expression()
+ self.state = 2470
+ self.match(Java20Parser.RBRACK)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArrayAccessContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def LBRACK(self):
+ return self.getToken(Java20Parser.LBRACK, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RBRACK(self):
+ return self.getToken(Java20Parser.RBRACK, 0)
+
+ def primaryNoNewArray(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryNoNewArrayContext, 0)
+
+ def arrayCreationExpressionWithInitializer(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_arrayAccess
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArrayAccess"):
+ listener.enterArrayAccess(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArrayAccess"):
+ listener.exitArrayAccess(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArrayAccess"):
+ return visitor.visitArrayAccess(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arrayAccess(self):
+
+ localctx = Java20Parser.ArrayAccessContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 416, self.RULE_arrayAccess)
+ try:
+ self.state = 2487
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 299, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2472
+ self.expressionName()
+ self.state = 2473
+ self.match(Java20Parser.LBRACK)
+ self.state = 2474
+ self.expression()
+ self.state = 2475
+ self.match(Java20Parser.RBRACK)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2477
+ self.primaryNoNewArray()
+ self.state = 2478
+ self.match(Java20Parser.LBRACK)
+ self.state = 2479
+ self.expression()
+ self.state = 2480
+ self.match(Java20Parser.RBRACK)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2482
+ self.arrayCreationExpressionWithInitializer()
+ self.state = 2483
+ self.match(Java20Parser.LBRACK)
+ self.state = 2484
+ self.expression()
+ self.state = 2485
+ self.match(Java20Parser.RBRACK)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FieldAccessContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_fieldAccess
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFieldAccess"):
+ listener.enterFieldAccess(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFieldAccess"):
+ listener.exitFieldAccess(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFieldAccess"):
+ return visitor.visitFieldAccess(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def fieldAccess(self):
+
+ localctx = Java20Parser.FieldAccessContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 418, self.RULE_fieldAccess)
+ try:
+ self.state = 2502
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 300, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2489
+ self.primary()
+ self.state = 2490
+ self.match(Java20Parser.DOT)
+ self.state = 2491
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2493
+ self.match(Java20Parser.SUPER)
+ self.state = 2494
+ self.match(Java20Parser.DOT)
+ self.state = 2495
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2496
+ self.typeName()
+ self.state = 2497
+ self.match(Java20Parser.DOT)
+ self.state = 2498
+ self.match(Java20Parser.SUPER)
+ self.state = 2499
+ self.match(Java20Parser.DOT)
+ self.state = 2500
+ self.match(Java20Parser.Identifier)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodInvocationContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def methodName(self):
+ return self.getTypedRuleContext(Java20Parser.MethodNameContext, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def argumentList(self):
+ return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.DOT)
+ else:
+ return self.getToken(Java20Parser.DOT, i)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodInvocation
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodInvocation"):
+ listener.enterMethodInvocation(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodInvocation"):
+ listener.exitMethodInvocation(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodInvocation"):
+ return visitor.visitMethodInvocation(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodInvocation(self):
+
+ localctx = Java20Parser.MethodInvocationContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 420, self.RULE_methodInvocation)
+ self._la = 0 # Token type
+ try:
+ self.state = 2572
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 312, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2504
+ self.methodName()
+ self.state = 2505
+ self.match(Java20Parser.LPAREN)
+ self.state = 2507
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2506
+ self.argumentList()
+
+ self.state = 2509
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2511
+ self.typeName()
+ self.state = 2512
+ self.match(Java20Parser.DOT)
+ self.state = 2514
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2513
+ self.typeArguments()
+
+ self.state = 2516
+ self.match(Java20Parser.Identifier)
+ self.state = 2517
+ self.match(Java20Parser.LPAREN)
+ self.state = 2519
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2518
+ self.argumentList()
+
+ self.state = 2521
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2523
+ self.expressionName()
+ self.state = 2524
+ self.match(Java20Parser.DOT)
+ self.state = 2526
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2525
+ self.typeArguments()
+
+ self.state = 2528
+ self.match(Java20Parser.Identifier)
+ self.state = 2529
+ self.match(Java20Parser.LPAREN)
+ self.state = 2531
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2530
+ self.argumentList()
+
+ self.state = 2533
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2535
+ self.primary()
+ self.state = 2536
+ self.match(Java20Parser.DOT)
+ self.state = 2538
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2537
+ self.typeArguments()
+
+ self.state = 2540
+ self.match(Java20Parser.Identifier)
+ self.state = 2541
+ self.match(Java20Parser.LPAREN)
+ self.state = 2543
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2542
+ self.argumentList()
+
+ self.state = 2545
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2547
+ self.match(Java20Parser.SUPER)
+ self.state = 2548
+ self.match(Java20Parser.DOT)
+ self.state = 2550
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2549
+ self.typeArguments()
+
+ self.state = 2552
+ self.match(Java20Parser.Identifier)
+ self.state = 2553
+ self.match(Java20Parser.LPAREN)
+ self.state = 2555
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2554
+ self.argumentList()
+
+ self.state = 2557
+ self.match(Java20Parser.RPAREN)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 2558
+ self.typeName()
+ self.state = 2559
+ self.match(Java20Parser.DOT)
+ self.state = 2560
+ self.match(Java20Parser.SUPER)
+ self.state = 2561
+ self.match(Java20Parser.DOT)
+ self.state = 2563
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2562
+ self.typeArguments()
+
+ self.state = 2565
+ self.match(Java20Parser.Identifier)
+ self.state = 2566
+ self.match(Java20Parser.LPAREN)
+ self.state = 2568
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or (
+ (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0):
+ self.state = 2567
+ self.argumentList()
+
+ self.state = 2570
+ self.match(Java20Parser.RPAREN)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArgumentListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expression(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.ExpressionContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_argumentList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArgumentList"):
+ listener.enterArgumentList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArgumentList"):
+ listener.exitArgumentList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArgumentList"):
+ return visitor.visitArgumentList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def argumentList(self):
+
+ localctx = Java20Parser.ArgumentListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 422, self.RULE_argumentList)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2574
+ self.expression()
+ self.state = 2579
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 2575
+ self.match(Java20Parser.COMMA)
+ self.state = 2576
+ self.expression()
+ self.state = 2581
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MethodReferenceContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def COLONCOLON(self):
+ return self.getToken(Java20Parser.COLONCOLON, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def typeArguments(self):
+ return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0)
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def SUPER(self):
+ return self.getToken(Java20Parser.SUPER, 0)
+
+ def typeName(self):
+ return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0)
+
+ def DOT(self):
+ return self.getToken(Java20Parser.DOT, 0)
+
+ def classType(self):
+ return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0)
+
+ def NEW(self):
+ return self.getToken(Java20Parser.NEW, 0)
+
+ def arrayType(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_methodReference
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMethodReference"):
+ listener.enterMethodReference(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMethodReference"):
+ listener.exitMethodReference(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMethodReference"):
+ return visitor.visitMethodReference(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def methodReference(self):
+
+ localctx = Java20Parser.MethodReferenceContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 424, self.RULE_methodReference)
+ self._la = 0 # Token type
+ try:
+ self.state = 2629
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 320, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2582
+ self.expressionName()
+ self.state = 2583
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2585
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2584
+ self.typeArguments()
+
+ self.state = 2587
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2589
+ self.primary()
+ self.state = 2590
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2592
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2591
+ self.typeArguments()
+
+ self.state = 2594
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2596
+ self.referenceType()
+ self.state = 2597
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2599
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2598
+ self.typeArguments()
+
+ self.state = 2601
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2603
+ self.match(Java20Parser.SUPER)
+ self.state = 2604
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2606
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2605
+ self.typeArguments()
+
+ self.state = 2608
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2609
+ self.typeName()
+ self.state = 2610
+ self.match(Java20Parser.DOT)
+ self.state = 2611
+ self.match(Java20Parser.SUPER)
+ self.state = 2612
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2614
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2613
+ self.typeArguments()
+
+ self.state = 2616
+ self.match(Java20Parser.Identifier)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 2618
+ self.classType()
+ self.state = 2619
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2621
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 90:
+ self.state = 2620
+ self.typeArguments()
+
+ self.state = 2623
+ self.match(Java20Parser.NEW)
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 2625
+ self.arrayType()
+ self.state = 2626
+ self.match(Java20Parser.COLONCOLON)
+ self.state = 2627
+ self.match(Java20Parser.NEW)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PostfixExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def primary(self):
+ return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0)
+
+ def pfE(self):
+ return self.getTypedRuleContext(Java20Parser.PfEContext, 0)
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_postfixExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPostfixExpression"):
+ listener.enterPostfixExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPostfixExpression"):
+ listener.exitPostfixExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPostfixExpression"):
+ return visitor.visitPostfixExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def postfixExpression(self):
+
+ localctx = Java20Parser.PostfixExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 426, self.RULE_postfixExpression)
+ try:
+ self.state = 2639
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 323, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2631
+ self.primary()
+ self.state = 2633
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 321, self._ctx)
+ if la_ == 1:
+ self.state = 2632
+ self.pfE()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2635
+ self.expressionName()
+ self.state = 2637
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 322, self._ctx)
+ if la_ == 1:
+ self.state = 2636
+ self.pfE()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PfEContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def INC(self):
+ return self.getToken(Java20Parser.INC, 0)
+
+ def pfE(self):
+ return self.getTypedRuleContext(Java20Parser.PfEContext, 0)
+
+ def DEC(self):
+ return self.getToken(Java20Parser.DEC, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_pfE
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPfE"):
+ listener.enterPfE(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPfE"):
+ listener.exitPfE(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPfE"):
+ return visitor.visitPfE(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pfE(self):
+
+ localctx = Java20Parser.PfEContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 428, self.RULE_pfE)
+ try:
+ self.state = 2649
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [102]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2641
+ self.match(Java20Parser.INC)
+ self.state = 2643
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 324, self._ctx)
+ if la_ == 1:
+ self.state = 2642
+ self.pfE()
+
+ pass
+ elif token in [103]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2645
+ self.match(Java20Parser.DEC)
+ self.state = 2647
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 325, self._ctx)
+ if la_ == 1:
+ self.state = 2646
+ self.pfE()
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PostIncrementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def postfixExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0)
+
+ def INC(self):
+ return self.getToken(Java20Parser.INC, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_postIncrementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPostIncrementExpression"):
+ listener.enterPostIncrementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPostIncrementExpression"):
+ listener.exitPostIncrementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPostIncrementExpression"):
+ return visitor.visitPostIncrementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def postIncrementExpression(self):
+
+ localctx = Java20Parser.PostIncrementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 430, self.RULE_postIncrementExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2651
+ self.postfixExpression()
+ self.state = 2652
+ self.match(Java20Parser.INC)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PostDecrementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def postfixExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0)
+
+ def DEC(self):
+ return self.getToken(Java20Parser.DEC, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_postDecrementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPostDecrementExpression"):
+ listener.enterPostDecrementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPostDecrementExpression"):
+ listener.exitPostDecrementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPostDecrementExpression"):
+ return visitor.visitPostDecrementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def postDecrementExpression(self):
+
+ localctx = Java20Parser.PostDecrementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 432, self.RULE_postDecrementExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2654
+ self.postfixExpression()
+ self.state = 2655
+ self.match(Java20Parser.DEC)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnaryExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def preIncrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PreIncrementExpressionContext, 0)
+
+ def preDecrementExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PreDecrementExpressionContext, 0)
+
+ def ADD(self):
+ return self.getToken(Java20Parser.ADD, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def SUB(self):
+ return self.getToken(Java20Parser.SUB, 0)
+
+ def unaryExpressionNotPlusMinus(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionNotPlusMinusContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unaryExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnaryExpression"):
+ listener.enterUnaryExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnaryExpression"):
+ listener.exitUnaryExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnaryExpression"):
+ return visitor.visitUnaryExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unaryExpression(self):
+
+ localctx = Java20Parser.UnaryExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 434, self.RULE_unaryExpression)
+ try:
+ self.state = 2664
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [102]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2657
+ self.preIncrementExpression()
+ pass
+ elif token in [103]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2658
+ self.preDecrementExpression()
+ pass
+ elif token in [104]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2659
+ self.match(Java20Parser.ADD)
+ self.state = 2660
+ self.unaryExpression()
+ pass
+ elif token in [105]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2661
+ self.match(Java20Parser.SUB)
+ self.state = 2662
+ self.unaryExpression()
+ pass
+ elif token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91,
+ 92, 123]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2663
+ self.unaryExpressionNotPlusMinus()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PreIncrementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def INC(self):
+ return self.getToken(Java20Parser.INC, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_preIncrementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPreIncrementExpression"):
+ listener.enterPreIncrementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPreIncrementExpression"):
+ listener.exitPreIncrementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPreIncrementExpression"):
+ return visitor.visitPreIncrementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def preIncrementExpression(self):
+
+ localctx = Java20Parser.PreIncrementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 436, self.RULE_preIncrementExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2666
+ self.match(Java20Parser.INC)
+ self.state = 2667
+ self.unaryExpression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PreDecrementExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DEC(self):
+ return self.getToken(Java20Parser.DEC, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_preDecrementExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPreDecrementExpression"):
+ listener.enterPreDecrementExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPreDecrementExpression"):
+ listener.exitPreDecrementExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPreDecrementExpression"):
+ return visitor.visitPreDecrementExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def preDecrementExpression(self):
+
+ localctx = Java20Parser.PreDecrementExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 438, self.RULE_preDecrementExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2669
+ self.match(Java20Parser.DEC)
+ self.state = 2670
+ self.unaryExpression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class UnaryExpressionNotPlusMinusContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def postfixExpression(self):
+ return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0)
+
+ def TILDE(self):
+ return self.getToken(Java20Parser.TILDE, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def BANG(self):
+ return self.getToken(Java20Parser.BANG, 0)
+
+ def castExpression(self):
+ return self.getTypedRuleContext(Java20Parser.CastExpressionContext, 0)
+
+ def switchExpression(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_unaryExpressionNotPlusMinus
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterUnaryExpressionNotPlusMinus"):
+ listener.enterUnaryExpressionNotPlusMinus(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitUnaryExpressionNotPlusMinus"):
+ listener.exitUnaryExpressionNotPlusMinus(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitUnaryExpressionNotPlusMinus"):
+ return visitor.visitUnaryExpressionNotPlusMinus(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def unaryExpressionNotPlusMinus(self):
+
+ localctx = Java20Parser.UnaryExpressionNotPlusMinusContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 440, self.RULE_unaryExpressionNotPlusMinus)
+ try:
+ self.state = 2679
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 328, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2672
+ self.postfixExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2673
+ self.match(Java20Parser.TILDE)
+ self.state = 2674
+ self.unaryExpression()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2675
+ self.match(Java20Parser.BANG)
+ self.state = 2676
+ self.unaryExpression()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 2677
+ self.castExpression()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 2678
+ self.switchExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class CastExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def primitiveType(self):
+ return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def unaryExpressionNotPlusMinus(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionNotPlusMinusContext, 0)
+
+ def additionalBound(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.AdditionalBoundContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.AdditionalBoundContext, i)
+
+ def lambdaExpression(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_castExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCastExpression"):
+ listener.enterCastExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCastExpression"):
+ listener.exitCastExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCastExpression"):
+ return visitor.visitCastExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def castExpression(self):
+
+ localctx = Java20Parser.CastExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 442, self.RULE_castExpression)
+ self._la = 0 # Token type
+ try:
+ self.state = 2708
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 331, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2681
+ self.match(Java20Parser.LPAREN)
+ self.state = 2682
+ self.primitiveType()
+ self.state = 2683
+ self.match(Java20Parser.RPAREN)
+ self.state = 2684
+ self.unaryExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2686
+ self.match(Java20Parser.LPAREN)
+ self.state = 2687
+ self.referenceType()
+ self.state = 2691
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 108:
+ self.state = 2688
+ self.additionalBound()
+ self.state = 2693
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2694
+ self.match(Java20Parser.RPAREN)
+ self.state = 2695
+ self.unaryExpressionNotPlusMinus()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2697
+ self.match(Java20Parser.LPAREN)
+ self.state = 2698
+ self.referenceType()
+ self.state = 2702
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 108:
+ self.state = 2699
+ self.additionalBound()
+ self.state = 2704
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2705
+ self.match(Java20Parser.RPAREN)
+ self.state = 2706
+ self.lambdaExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class MultiplicativeExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unaryExpression(self):
+ return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0)
+
+ def multiplicativeExpression(self):
+ return self.getTypedRuleContext(Java20Parser.MultiplicativeExpressionContext, 0)
+
+ def MUL(self):
+ return self.getToken(Java20Parser.MUL, 0)
+
+ def DIV(self):
+ return self.getToken(Java20Parser.DIV, 0)
+
+ def MOD(self):
+ return self.getToken(Java20Parser.MOD, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_multiplicativeExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMultiplicativeExpression"):
+ listener.enterMultiplicativeExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMultiplicativeExpression"):
+ listener.exitMultiplicativeExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMultiplicativeExpression"):
+ return visitor.visitMultiplicativeExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def multiplicativeExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.MultiplicativeExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 444
+ self.enterRecursionRule(localctx, 444, self.RULE_multiplicativeExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2711
+ self.unaryExpression()
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2724
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 333, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2722
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 332, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression)
+ self.state = 2713
+ if not self.precpred(self._ctx, 3):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+ self.state = 2714
+ self.match(Java20Parser.MUL)
+ self.state = 2715
+ self.unaryExpression()
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression)
+ self.state = 2716
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2717
+ self.match(Java20Parser.DIV)
+ self.state = 2718
+ self.unaryExpression()
+ pass
+
+ elif la_ == 3:
+ localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression)
+ self.state = 2719
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2720
+ self.match(Java20Parser.MOD)
+ self.state = 2721
+ self.unaryExpression()
+ pass
+
+ self.state = 2726
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 333, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class AdditiveExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def multiplicativeExpression(self):
+ return self.getTypedRuleContext(Java20Parser.MultiplicativeExpressionContext, 0)
+
+ def additiveExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AdditiveExpressionContext, 0)
+
+ def ADD(self):
+ return self.getToken(Java20Parser.ADD, 0)
+
+ def SUB(self):
+ return self.getToken(Java20Parser.SUB, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_additiveExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAdditiveExpression"):
+ listener.enterAdditiveExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAdditiveExpression"):
+ listener.exitAdditiveExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAdditiveExpression"):
+ return visitor.visitAdditiveExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def additiveExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.AdditiveExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 446
+ self.enterRecursionRule(localctx, 446, self.RULE_additiveExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2728
+ self.multiplicativeExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2738
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 335, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2736
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 334, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.AdditiveExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveExpression)
+ self.state = 2730
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2731
+ self.match(Java20Parser.ADD)
+ self.state = 2732
+ self.multiplicativeExpression(0)
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.AdditiveExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveExpression)
+ self.state = 2733
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2734
+ self.match(Java20Parser.SUB)
+ self.state = 2735
+ self.multiplicativeExpression(0)
+ pass
+
+ self.state = 2740
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 335, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ShiftExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def additiveExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AdditiveExpressionContext, 0)
+
+ def shiftExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ShiftExpressionContext, 0)
+
+ def LT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.LT)
+ else:
+ return self.getToken(Java20Parser.LT, i)
+
+ def GT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.GT)
+ else:
+ return self.getToken(Java20Parser.GT, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_shiftExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterShiftExpression"):
+ listener.enterShiftExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitShiftExpression"):
+ listener.exitShiftExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitShiftExpression"):
+ return visitor.visitShiftExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def shiftExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.ShiftExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 448
+ self.enterRecursionRule(localctx, 448, self.RULE_shiftExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2742
+ self.additiveExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2759
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 337, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2757
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 336, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression)
+ self.state = 2744
+ if not self.precpred(self._ctx, 3):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+ self.state = 2745
+ self.match(Java20Parser.LT)
+ self.state = 2746
+ self.match(Java20Parser.LT)
+ self.state = 2747
+ self.additiveExpression(0)
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression)
+ self.state = 2748
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2749
+ self.match(Java20Parser.GT)
+ self.state = 2750
+ self.match(Java20Parser.GT)
+ self.state = 2751
+ self.additiveExpression(0)
+ pass
+
+ elif la_ == 3:
+ localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression)
+ self.state = 2752
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2753
+ self.match(Java20Parser.GT)
+ self.state = 2754
+ self.match(Java20Parser.GT)
+ self.state = 2755
+ self.match(Java20Parser.GT)
+ self.state = 2756
+ self.additiveExpression(0)
+ pass
+
+ self.state = 2761
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 337, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class RelationalExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def shiftExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ShiftExpressionContext, 0)
+
+ def relationalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.RelationalExpressionContext, 0)
+
+ def LT(self):
+ return self.getToken(Java20Parser.LT, 0)
+
+ def GT(self):
+ return self.getToken(Java20Parser.GT, 0)
+
+ def LE(self):
+ return self.getToken(Java20Parser.LE, 0)
+
+ def GE(self):
+ return self.getToken(Java20Parser.GE, 0)
+
+ def INSTANCEOF(self):
+ return self.getToken(Java20Parser.INSTANCEOF, 0)
+
+ def referenceType(self):
+ return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Java20Parser.PatternContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_relationalExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRelationalExpression"):
+ listener.enterRelationalExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRelationalExpression"):
+ listener.exitRelationalExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRelationalExpression"):
+ return visitor.visitRelationalExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def relationalExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.RelationalExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 450
+ self.enterRecursionRule(localctx, 450, self.RULE_relationalExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2763
+ self.shiftExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2785
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 340, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2783
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 339, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2765
+ if not self.precpred(self._ctx, 5):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 5)")
+ self.state = 2766
+ self.match(Java20Parser.LT)
+ self.state = 2767
+ self.shiftExpression(0)
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2768
+ if not self.precpred(self._ctx, 4):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 4)")
+ self.state = 2769
+ self.match(Java20Parser.GT)
+ self.state = 2770
+ self.shiftExpression(0)
+ pass
+
+ elif la_ == 3:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2771
+ if not self.precpred(self._ctx, 3):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+ self.state = 2772
+ self.match(Java20Parser.LE)
+ self.state = 2773
+ self.shiftExpression(0)
+ pass
+
+ elif la_ == 4:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2774
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2775
+ self.match(Java20Parser.GE)
+ self.state = 2776
+ self.shiftExpression(0)
+ pass
+
+ elif la_ == 5:
+ localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression)
+ self.state = 2777
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2778
+ self.match(Java20Parser.INSTANCEOF)
+ self.state = 2781
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 338, self._ctx)
+ if la_ == 1:
+ self.state = 2779
+ self.referenceType()
+ pass
+
+ elif la_ == 2:
+ self.state = 2780
+ self.pattern()
+ pass
+
+ pass
+
+ self.state = 2787
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 340, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class EqualityExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def relationalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.RelationalExpressionContext, 0)
+
+ def equalityExpression(self):
+ return self.getTypedRuleContext(Java20Parser.EqualityExpressionContext, 0)
+
+ def EQUAL(self):
+ return self.getToken(Java20Parser.EQUAL, 0)
+
+ def NOTEQUAL(self):
+ return self.getToken(Java20Parser.NOTEQUAL, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_equalityExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEqualityExpression"):
+ listener.enterEqualityExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEqualityExpression"):
+ listener.exitEqualityExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEqualityExpression"):
+ return visitor.visitEqualityExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def equalityExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.EqualityExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 452
+ self.enterRecursionRule(localctx, 452, self.RULE_equalityExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2789
+ self.relationalExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2799
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 342, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 2797
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 341, self._ctx)
+ if la_ == 1:
+ localctx = Java20Parser.EqualityExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityExpression)
+ self.state = 2791
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 2792
+ self.match(Java20Parser.EQUAL)
+ self.state = 2793
+ self.relationalExpression(0)
+ pass
+
+ elif la_ == 2:
+ localctx = Java20Parser.EqualityExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityExpression)
+ self.state = 2794
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2795
+ self.match(Java20Parser.NOTEQUAL)
+ self.state = 2796
+ self.relationalExpression(0)
+ pass
+
+ self.state = 2801
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 342, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class AndExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def equalityExpression(self):
+ return self.getTypedRuleContext(Java20Parser.EqualityExpressionContext, 0)
+
+ def andExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AndExpressionContext, 0)
+
+ def BITAND(self):
+ return self.getToken(Java20Parser.BITAND, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_andExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAndExpression"):
+ listener.enterAndExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAndExpression"):
+ listener.exitAndExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAndExpression"):
+ return visitor.visitAndExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def andExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.AndExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 454
+ self.enterRecursionRule(localctx, 454, self.RULE_andExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2803
+ self.equalityExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2810
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 343, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.AndExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_andExpression)
+ self.state = 2805
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2806
+ self.match(Java20Parser.BITAND)
+ self.state = 2807
+ self.equalityExpression(0)
+ self.state = 2812
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 343, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ExclusiveOrExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def andExpression(self):
+ return self.getTypedRuleContext(Java20Parser.AndExpressionContext, 0)
+
+ def exclusiveOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ExclusiveOrExpressionContext, 0)
+
+ def CARET(self):
+ return self.getToken(Java20Parser.CARET, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_exclusiveOrExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExclusiveOrExpression"):
+ listener.enterExclusiveOrExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExclusiveOrExpression"):
+ listener.exitExclusiveOrExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExclusiveOrExpression"):
+ return visitor.visitExclusiveOrExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def exclusiveOrExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.ExclusiveOrExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 456
+ self.enterRecursionRule(localctx, 456, self.RULE_exclusiveOrExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2814
+ self.andExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2821
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 344, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.ExclusiveOrExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_exclusiveOrExpression)
+ self.state = 2816
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2817
+ self.match(Java20Parser.CARET)
+ self.state = 2818
+ self.andExpression(0)
+ self.state = 2823
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 344, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class InclusiveOrExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def exclusiveOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ExclusiveOrExpressionContext, 0)
+
+ def inclusiveOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.InclusiveOrExpressionContext, 0)
+
+ def BITOR(self):
+ return self.getToken(Java20Parser.BITOR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_inclusiveOrExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterInclusiveOrExpression"):
+ listener.enterInclusiveOrExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitInclusiveOrExpression"):
+ listener.exitInclusiveOrExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitInclusiveOrExpression"):
+ return visitor.visitInclusiveOrExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def inclusiveOrExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.InclusiveOrExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 458
+ self.enterRecursionRule(localctx, 458, self.RULE_inclusiveOrExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2825
+ self.exclusiveOrExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2832
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 345, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.InclusiveOrExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_inclusiveOrExpression)
+ self.state = 2827
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2828
+ self.match(Java20Parser.BITOR)
+ self.state = 2829
+ self.exclusiveOrExpression(0)
+ self.state = 2834
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 345, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ConditionalAndExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def inclusiveOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.InclusiveOrExpressionContext, 0)
+
+ def conditionalAndExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalAndExpressionContext, 0)
+
+ def AND(self):
+ return self.getToken(Java20Parser.AND, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_conditionalAndExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConditionalAndExpression"):
+ listener.enterConditionalAndExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConditionalAndExpression"):
+ listener.exitConditionalAndExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConditionalAndExpression"):
+ return visitor.visitConditionalAndExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def conditionalAndExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.ConditionalAndExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 460
+ self.enterRecursionRule(localctx, 460, self.RULE_conditionalAndExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2836
+ self.inclusiveOrExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2843
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 346, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.ConditionalAndExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_conditionalAndExpression)
+ self.state = 2838
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2839
+ self.match(Java20Parser.AND)
+ self.state = 2840
+ self.inclusiveOrExpression(0)
+ self.state = 2845
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 346, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ConditionalOrExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalAndExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalAndExpressionContext, 0)
+
+ def conditionalOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalOrExpressionContext, 0)
+
+ def OR(self):
+ return self.getToken(Java20Parser.OR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_conditionalOrExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConditionalOrExpression"):
+ listener.enterConditionalOrExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConditionalOrExpression"):
+ listener.exitConditionalOrExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConditionalOrExpression"):
+ return visitor.visitConditionalOrExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def conditionalOrExpression(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Java20Parser.ConditionalOrExpressionContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 462
+ self.enterRecursionRule(localctx, 462, self.RULE_conditionalOrExpression, _p)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2847
+ self.conditionalAndExpression(0)
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 2854
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 347, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ localctx = Java20Parser.ConditionalOrExpressionContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_conditionalOrExpression)
+ self.state = 2849
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 2850
+ self.match(Java20Parser.OR)
+ self.state = 2851
+ self.conditionalAndExpression(0)
+ self.state = 2856
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 347, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class ConditionalExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalOrExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalOrExpressionContext, 0)
+
+ def QUESTION(self):
+ return self.getToken(Java20Parser.QUESTION, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def COLON(self):
+ return self.getToken(Java20Parser.COLON, 0)
+
+ def conditionalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0)
+
+ def lambdaExpression(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_conditionalExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConditionalExpression"):
+ listener.enterConditionalExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConditionalExpression"):
+ listener.exitConditionalExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConditionalExpression"):
+ return visitor.visitConditionalExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def conditionalExpression(self):
+
+ localctx = Java20Parser.ConditionalExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 464, self.RULE_conditionalExpression)
+ try:
+ self.state = 2870
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 348, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2857
+ self.conditionalOrExpression(0)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2858
+ self.conditionalOrExpression(0)
+ self.state = 2859
+ self.match(Java20Parser.QUESTION)
+ self.state = 2860
+ self.expression()
+ self.state = 2861
+ self.match(Java20Parser.COLON)
+ self.state = 2862
+ self.conditionalExpression()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2864
+ self.conditionalOrExpression(0)
+ self.state = 2865
+ self.match(Java20Parser.QUESTION)
+ self.state = 2866
+ self.expression()
+ self.state = 2867
+ self.match(Java20Parser.COLON)
+ self.state = 2868
+ self.lambdaExpression()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AssignmentExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def conditionalExpression(self):
+ return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0)
+
+ def assignment(self):
+ return self.getTypedRuleContext(Java20Parser.AssignmentContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_assignmentExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssignmentExpression"):
+ listener.enterAssignmentExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssignmentExpression"):
+ listener.exitAssignmentExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssignmentExpression"):
+ return visitor.visitAssignmentExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assignmentExpression(self):
+
+ localctx = Java20Parser.AssignmentExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 466, self.RULE_assignmentExpression)
+ try:
+ self.state = 2874
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 349, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2872
+ self.conditionalExpression()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2873
+ self.assignment()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AssignmentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def leftHandSide(self):
+ return self.getTypedRuleContext(Java20Parser.LeftHandSideContext, 0)
+
+ def assignmentOperator(self):
+ return self.getTypedRuleContext(Java20Parser.AssignmentOperatorContext, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_assignment
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssignment"):
+ listener.enterAssignment(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssignment"):
+ listener.exitAssignment(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssignment"):
+ return visitor.visitAssignment(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assignment(self):
+
+ localctx = Java20Parser.AssignmentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 468, self.RULE_assignment)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2876
+ self.leftHandSide()
+ self.state = 2877
+ self.assignmentOperator()
+ self.state = 2878
+ self.expression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LeftHandSideContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expressionName(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0)
+
+ def fieldAccess(self):
+ return self.getTypedRuleContext(Java20Parser.FieldAccessContext, 0)
+
+ def arrayAccess(self):
+ return self.getTypedRuleContext(Java20Parser.ArrayAccessContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_leftHandSide
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLeftHandSide"):
+ listener.enterLeftHandSide(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLeftHandSide"):
+ listener.exitLeftHandSide(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLeftHandSide"):
+ return visitor.visitLeftHandSide(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def leftHandSide(self):
+
+ localctx = Java20Parser.LeftHandSideContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 470, self.RULE_leftHandSide)
+ try:
+ self.state = 2883
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 350, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2880
+ self.expressionName()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(loc)
+ self.state = 2881
+ self.fieldAccess()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 2882
+ self.arrayAccess()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AssignmentOperatorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASSIGN(self):
+ return self.getToken(Java20Parser.ASSIGN, 0)
+
+ def MUL_ASSIGN(self):
+ return self.getToken(Java20Parser.MUL_ASSIGN, 0)
+
+ def DIV_ASSIGN(self):
+ return self.getToken(Java20Parser.DIV_ASSIGN, 0)
+
+ def MOD_ASSIGN(self):
+ return self.getToken(Java20Parser.MOD_ASSIGN, 0)
+
+ def ADD_ASSIGN(self):
+ return self.getToken(Java20Parser.ADD_ASSIGN, 0)
+
+ def SUB_ASSIGN(self):
+ return self.getToken(Java20Parser.SUB_ASSIGN, 0)
+
+ def LSHIFT_ASSIGN(self):
+ return self.getToken(Java20Parser.LSHIFT_ASSIGN, 0)
+
+ def RSHIFT_ASSIGN(self):
+ return self.getToken(Java20Parser.RSHIFT_ASSIGN, 0)
+
+ def URSHIFT_ASSIGN(self):
+ return self.getToken(Java20Parser.URSHIFT_ASSIGN, 0)
+
+ def AND_ASSIGN(self):
+ return self.getToken(Java20Parser.AND_ASSIGN, 0)
+
+ def XOR_ASSIGN(self):
+ return self.getToken(Java20Parser.XOR_ASSIGN, 0)
+
+ def OR_ASSIGN(self):
+ return self.getToken(Java20Parser.OR_ASSIGN, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_assignmentOperator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssignmentOperator"):
+ listener.enterAssignmentOperator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssignmentOperator"):
+ listener.exitAssignmentOperator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssignmentOperator"):
+ return visitor.visitAssignmentOperator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assignmentOperator(self):
+
+ localctx = Java20Parser.AssignmentOperatorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 472, self.RULE_assignmentOperator)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2885
+ _la = self._input.LA(1)
+ if not (((((_la - 88)) & ~0x3f) == 0 and ((1 << (_la - 88)) & 34342961153) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def lambdaParameters(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaParametersContext, 0)
+
+ def ARROW(self):
+ return self.getToken(Java20Parser.ARROW, 0)
+
+ def lambdaBody(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaBodyContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaExpression"):
+ listener.enterLambdaExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaExpression"):
+ listener.exitLambdaExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaExpression"):
+ return visitor.visitLambdaExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaExpression(self):
+
+ localctx = Java20Parser.LambdaExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 474, self.RULE_lambdaExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2887
+ self.lambdaParameters()
+ self.state = 2888
+ self.match(Java20Parser.ARROW)
+ self.state = 2889
+ self.lambdaBody()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaParametersContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def lambdaParameterList(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaParameterListContext, 0)
+
+ def Identifier(self):
+ return self.getToken(Java20Parser.Identifier, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaParameters
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaParameters"):
+ listener.enterLambdaParameters(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaParameters"):
+ listener.exitLambdaParameters(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaParameters"):
+ return visitor.visitLambdaParameters(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaParameters(self):
+
+ localctx = Java20Parser.LambdaParametersContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 476, self.RULE_lambdaParameters)
+ self._la = 0 # Token type
+ try:
+ self.state = 2897
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [76]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2891
+ self.match(Java20Parser.LPAREN)
+ self.state = 2893
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424709632) != 0) or _la == 86 or _la == 123:
+ self.state = 2892
+ self.lambdaParameterList()
+
+ self.state = 2895
+ self.match(Java20Parser.RPAREN)
+ pass
+ elif token in [123]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2896
+ self.match(Java20Parser.Identifier)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaParameterListContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def lambdaParameter(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.LambdaParameterContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.LambdaParameterContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.COMMA)
+ else:
+ return self.getToken(Java20Parser.COMMA, i)
+
+ def Identifier(self, i: int = None):
+ if i is None:
+ return self.getTokens(Java20Parser.Identifier)
+ else:
+ return self.getToken(Java20Parser.Identifier, i)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaParameterList
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaParameterList"):
+ listener.enterLambdaParameterList(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaParameterList"):
+ listener.exitLambdaParameterList(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaParameterList"):
+ return visitor.visitLambdaParameterList(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaParameterList(self):
+
+ localctx = Java20Parser.LambdaParameterListContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 478, self.RULE_lambdaParameterList)
+ self._la = 0 # Token type
+ try:
+ self.state = 2915
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 355, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2899
+ self.lambdaParameter()
+ self.state = 2904
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 2900
+ self.match(Java20Parser.COMMA)
+ self.state = 2901
+ self.lambdaParameter()
+ self.state = 2906
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2907
+ self.match(Java20Parser.Identifier)
+ self.state = 2912
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 83:
+ self.state = 2908
+ self.match(Java20Parser.COMMA)
+ self.state = 2909
+ self.match(Java20Parser.Identifier)
+ self.state = 2914
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaParameterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def lambdaParameterType(self):
+ return self.getTypedRuleContext(Java20Parser.LambdaParameterTypeContext, 0)
+
+ def variableDeclaratorId(self):
+ return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0)
+
+ def variableModifier(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Java20Parser.VariableModifierContext)
+ else:
+ return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i)
+
+ def variableArityParameter(self):
+ return self.getTypedRuleContext(Java20Parser.VariableArityParameterContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaParameter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaParameter"):
+ listener.enterLambdaParameter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaParameter"):
+ listener.exitLambdaParameter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaParameter"):
+ return visitor.visitLambdaParameter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaParameter(self):
+
+ localctx = Java20Parser.LambdaParameterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 480, self.RULE_lambdaParameter)
+ self._la = 0 # Token type
+ try:
+ self.state = 2927
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 357, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2920
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 35 or _la == 86:
+ self.state = 2917
+ self.variableModifier()
+ self.state = 2922
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 2923
+ self.lambdaParameterType()
+ self.state = 2924
+ self.variableDeclaratorId()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2926
+ self.variableArityParameter()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaParameterTypeContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def unannType(self):
+ return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0)
+
+ def VAR(self):
+ return self.getToken(Java20Parser.VAR, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaParameterType
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaParameterType"):
+ listener.enterLambdaParameterType(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaParameterType"):
+ listener.exitLambdaParameterType(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaParameterType"):
+ return visitor.visitLambdaParameterType(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaParameterType(self):
+
+ localctx = Java20Parser.LambdaParameterTypeContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 482, self.RULE_lambdaParameterType)
+ try:
+ self.state = 2931
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2929
+ self.unannType()
+ pass
+ elif token in [15]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2930
+ self.match(Java20Parser.VAR)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdaBodyContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Java20Parser.BlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_lambdaBody
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdaBody"):
+ listener.enterLambdaBody(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdaBody"):
+ listener.exitLambdaBody(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdaBody"):
+ return visitor.visitLambdaBody(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdaBody(self):
+
+ localctx = Java20Parser.LambdaBodyContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 484, self.RULE_lambdaBody)
+ try:
+ self.state = 2935
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92,
+ 102, 103, 104, 105, 123]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2933
+ self.expression()
+ pass
+ elif token in [78]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 2934
+ self.block()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SwitchExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def SWITCH(self):
+ return self.getToken(Java20Parser.SWITCH, 0)
+
+ def LPAREN(self):
+ return self.getToken(Java20Parser.LPAREN, 0)
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def RPAREN(self):
+ return self.getToken(Java20Parser.RPAREN, 0)
+
+ def switchBlock(self):
+ return self.getTypedRuleContext(Java20Parser.SwitchBlockContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_switchExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSwitchExpression"):
+ listener.enterSwitchExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSwitchExpression"):
+ listener.exitSwitchExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSwitchExpression"):
+ return visitor.visitSwitchExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def switchExpression(self):
+
+ localctx = Java20Parser.SwitchExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 486, self.RULE_switchExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2937
+ self.match(Java20Parser.SWITCH)
+ self.state = 2938
+ self.match(Java20Parser.LPAREN)
+ self.state = 2939
+ self.expression()
+ self.state = 2940
+ self.match(Java20Parser.RPAREN)
+ self.state = 2941
+ self.switchBlock()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ConstantExpressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expression(self):
+ return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0)
+
+ def getRuleIndex(self):
+ return Java20Parser.RULE_constantExpression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterConstantExpression"):
+ listener.enterConstantExpression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitConstantExpression"):
+ listener.exitConstantExpression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitConstantExpression"):
+ return visitor.visitConstantExpression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def constantExpression(self):
+
+ localctx = Java20Parser.ConstantExpressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 488, self.RULE_constantExpression)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 2943
+ self.expression()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int):
+ if self._predicates == None:
+ self._predicates = dict()
+ self._predicates[222] = self.multiplicativeExpression_sempred
+ self._predicates[223] = self.additiveExpression_sempred
+ self._predicates[224] = self.shiftExpression_sempred
+ self._predicates[225] = self.relationalExpression_sempred
+ self._predicates[226] = self.equalityExpression_sempred
+ self._predicates[227] = self.andExpression_sempred
+ self._predicates[228] = self.exclusiveOrExpression_sempred
+ self._predicates[229] = self.inclusiveOrExpression_sempred
+ self._predicates[230] = self.conditionalAndExpression_sempred
+ self._predicates[231] = self.conditionalOrExpression_sempred
+ pred = self._predicates.get(ruleIndex, None)
+ if pred is None:
+ raise Exception("No predicate with index:" + str(ruleIndex))
+ else:
+ return pred(localctx, predIndex)
+
+ def multiplicativeExpression_sempred(self, localctx: MultiplicativeExpressionContext, predIndex: int):
+ if predIndex == 0:
+ return self.precpred(self._ctx, 3)
+
+ if predIndex == 1:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 2:
+ return self.precpred(self._ctx, 1)
+
+ def additiveExpression_sempred(self, localctx: AdditiveExpressionContext, predIndex: int):
+ if predIndex == 3:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 4:
+ return self.precpred(self._ctx, 1)
+
+ def shiftExpression_sempred(self, localctx: ShiftExpressionContext, predIndex: int):
+ if predIndex == 5:
+ return self.precpred(self._ctx, 3)
+
+ if predIndex == 6:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 7:
+ return self.precpred(self._ctx, 1)
+
+ def relationalExpression_sempred(self, localctx: RelationalExpressionContext, predIndex: int):
+ if predIndex == 8:
+ return self.precpred(self._ctx, 5)
+
+ if predIndex == 9:
+ return self.precpred(self._ctx, 4)
+
+ if predIndex == 10:
+ return self.precpred(self._ctx, 3)
+
+ if predIndex == 11:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 12:
+ return self.precpred(self._ctx, 1)
+
+ def equalityExpression_sempred(self, localctx: EqualityExpressionContext, predIndex: int):
+ if predIndex == 13:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 14:
+ return self.precpred(self._ctx, 1)
+
+ def andExpression_sempred(self, localctx: AndExpressionContext, predIndex: int):
+ if predIndex == 15:
+ return self.precpred(self._ctx, 1)
+
+ def exclusiveOrExpression_sempred(self, localctx: ExclusiveOrExpressionContext, predIndex: int):
+ if predIndex == 16:
+ return self.precpred(self._ctx, 1)
+
+ def inclusiveOrExpression_sempred(self, localctx: InclusiveOrExpressionContext, predIndex: int):
+ if predIndex == 17:
+ return self.precpred(self._ctx, 1)
+
+ def conditionalAndExpression_sempred(self, localctx: ConditionalAndExpressionContext, predIndex: int):
+ if predIndex == 18:
+ return self.precpred(self._ctx, 1)
+
+ def conditionalOrExpression_sempred(self, localctx: ConditionalOrExpressionContext, predIndex: int):
+ if predIndex == 19:
+ return self.precpred(self._ctx, 1)
+
+
+
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py
new file mode 100644
index 000000000..62eb96c77
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py
@@ -0,0 +1,1240 @@
+# Generated from Java20Parser.g4 by ANTLR 4.13.1
+from antlr4 import *
+
+if "." in __name__:
+ from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser
+else:
+ from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser
+
+
+# This class defines a complete generic visitor for a parse tree produced by Java20Parser.
+
+class Java20ParserVisitor(ParseTreeVisitor):
+
+ # Visit a parse tree produced by Java20Parser#start_.
+ def visitStart_(self, ctx:Java20Parser.Start_Context):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#literal.
+ def visitLiteral(self, ctx:Java20Parser.LiteralContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeIdentifier.
+ def visitTypeIdentifier(self, ctx:Java20Parser.TypeIdentifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unqualifiedMethodIdentifier.
+ def visitUnqualifiedMethodIdentifier(self, ctx:Java20Parser.UnqualifiedMethodIdentifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#primitiveType.
+ def visitPrimitiveType(self, ctx:Java20Parser.PrimitiveTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#numericType.
+ def visitNumericType(self, ctx:Java20Parser.NumericTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#integralType.
+ def visitIntegralType(self, ctx:Java20Parser.IntegralTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#floatingPointType.
+ def visitFloatingPointType(self, ctx:Java20Parser.FloatingPointTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#referenceType.
+ def visitReferenceType(self, ctx:Java20Parser.ReferenceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#coit.
+ def visitCoit(self, ctx:Java20Parser.CoitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classOrInterfaceType.
+ def visitClassOrInterfaceType(self, ctx:Java20Parser.ClassOrInterfaceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classType.
+ def visitClassType(self, ctx:Java20Parser.ClassTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceType.
+ def visitInterfaceType(self, ctx:Java20Parser.InterfaceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeVariable.
+ def visitTypeVariable(self, ctx:Java20Parser.TypeVariableContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayType.
+ def visitArrayType(self, ctx:Java20Parser.ArrayTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#dims.
+ def visitDims(self, ctx:Java20Parser.DimsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeParameter.
+ def visitTypeParameter(self, ctx:Java20Parser.TypeParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeParameterModifier.
+ def visitTypeParameterModifier(self, ctx:Java20Parser.TypeParameterModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeBound.
+ def visitTypeBound(self, ctx:Java20Parser.TypeBoundContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#additionalBound.
+ def visitAdditionalBound(self, ctx:Java20Parser.AdditionalBoundContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeArguments.
+ def visitTypeArguments(self, ctx:Java20Parser.TypeArgumentsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeArgumentList.
+ def visitTypeArgumentList(self, ctx:Java20Parser.TypeArgumentListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeArgument.
+ def visitTypeArgument(self, ctx:Java20Parser.TypeArgumentContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#wildcard.
+ def visitWildcard(self, ctx:Java20Parser.WildcardContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#wildcardBounds.
+ def visitWildcardBounds(self, ctx:Java20Parser.WildcardBoundsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#moduleName.
+ def visitModuleName(self, ctx:Java20Parser.ModuleNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#packageName.
+ def visitPackageName(self, ctx:Java20Parser.PackageNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeName.
+ def visitTypeName(self, ctx:Java20Parser.TypeNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#packageOrTypeName.
+ def visitPackageOrTypeName(self, ctx:Java20Parser.PackageOrTypeNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#expressionName.
+ def visitExpressionName(self, ctx:Java20Parser.ExpressionNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodName.
+ def visitMethodName(self, ctx:Java20Parser.MethodNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ambiguousName.
+ def visitAmbiguousName(self, ctx:Java20Parser.AmbiguousNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#compilationUnit.
+ def visitCompilationUnit(self, ctx:Java20Parser.CompilationUnitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ordinaryCompilationUnit.
+ def visitOrdinaryCompilationUnit(self, ctx:Java20Parser.OrdinaryCompilationUnitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#modularCompilationUnit.
+ def visitModularCompilationUnit(self, ctx:Java20Parser.ModularCompilationUnitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#packageDeclaration.
+ def visitPackageDeclaration(self, ctx:Java20Parser.PackageDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#packageModifier.
+ def visitPackageModifier(self, ctx:Java20Parser.PackageModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#importDeclaration.
+ def visitImportDeclaration(self, ctx:Java20Parser.ImportDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#singleTypeImportDeclaration.
+ def visitSingleTypeImportDeclaration(self, ctx:Java20Parser.SingleTypeImportDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeImportOnDemandDeclaration.
+ def visitTypeImportOnDemandDeclaration(self, ctx:Java20Parser.TypeImportOnDemandDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#singleStaticImportDeclaration.
+ def visitSingleStaticImportDeclaration(self, ctx:Java20Parser.SingleStaticImportDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#staticImportOnDemandDeclaration.
+ def visitStaticImportOnDemandDeclaration(self, ctx:Java20Parser.StaticImportOnDemandDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#topLevelClassOrInterfaceDeclaration.
+ def visitTopLevelClassOrInterfaceDeclaration(self, ctx:Java20Parser.TopLevelClassOrInterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#moduleDeclaration.
+ def visitModuleDeclaration(self, ctx:Java20Parser.ModuleDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#moduleDirective.
+ def visitModuleDirective(self, ctx:Java20Parser.ModuleDirectiveContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#requiresModifier.
+ def visitRequiresModifier(self, ctx:Java20Parser.RequiresModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classDeclaration.
+ def visitClassDeclaration(self, ctx:Java20Parser.ClassDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#normalClassDeclaration.
+ def visitNormalClassDeclaration(self, ctx:Java20Parser.NormalClassDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classModifier.
+ def visitClassModifier(self, ctx:Java20Parser.ClassModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeParameters.
+ def visitTypeParameters(self, ctx:Java20Parser.TypeParametersContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeParameterList.
+ def visitTypeParameterList(self, ctx:Java20Parser.TypeParameterListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classExtends.
+ def visitClassExtends(self, ctx:Java20Parser.ClassExtendsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classImplements.
+ def visitClassImplements(self, ctx:Java20Parser.ClassImplementsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceTypeList.
+ def visitInterfaceTypeList(self, ctx:Java20Parser.InterfaceTypeListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classPermits.
+ def visitClassPermits(self, ctx:Java20Parser.ClassPermitsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classBody.
+ def visitClassBody(self, ctx:Java20Parser.ClassBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classBodyDeclaration.
+ def visitClassBodyDeclaration(self, ctx:Java20Parser.ClassBodyDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classMemberDeclaration.
+ def visitClassMemberDeclaration(self, ctx:Java20Parser.ClassMemberDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#fieldDeclaration.
+ def visitFieldDeclaration(self, ctx:Java20Parser.FieldDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#fieldModifier.
+ def visitFieldModifier(self, ctx:Java20Parser.FieldModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableDeclaratorList.
+ def visitVariableDeclaratorList(self, ctx:Java20Parser.VariableDeclaratorListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableDeclarator.
+ def visitVariableDeclarator(self, ctx:Java20Parser.VariableDeclaratorContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableDeclaratorId.
+ def visitVariableDeclaratorId(self, ctx:Java20Parser.VariableDeclaratorIdContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableInitializer.
+ def visitVariableInitializer(self, ctx:Java20Parser.VariableInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannType.
+ def visitUnannType(self, ctx:Java20Parser.UnannTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannPrimitiveType.
+ def visitUnannPrimitiveType(self, ctx:Java20Parser.UnannPrimitiveTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannReferenceType.
+ def visitUnannReferenceType(self, ctx:Java20Parser.UnannReferenceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannClassOrInterfaceType.
+ def visitUnannClassOrInterfaceType(self, ctx:Java20Parser.UnannClassOrInterfaceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#uCOIT.
+ def visitUCOIT(self, ctx:Java20Parser.UCOITContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannClassType.
+ def visitUnannClassType(self, ctx:Java20Parser.UnannClassTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannInterfaceType.
+ def visitUnannInterfaceType(self, ctx:Java20Parser.UnannInterfaceTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannTypeVariable.
+ def visitUnannTypeVariable(self, ctx:Java20Parser.UnannTypeVariableContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unannArrayType.
+ def visitUnannArrayType(self, ctx:Java20Parser.UnannArrayTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodDeclaration.
+ def visitMethodDeclaration(self, ctx:Java20Parser.MethodDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodModifier.
+ def visitMethodModifier(self, ctx:Java20Parser.MethodModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodHeader.
+ def visitMethodHeader(self, ctx:Java20Parser.MethodHeaderContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#result.
+ def visitResult(self, ctx:Java20Parser.ResultContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodDeclarator.
+ def visitMethodDeclarator(self, ctx:Java20Parser.MethodDeclaratorContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#receiverParameter.
+ def visitReceiverParameter(self, ctx:Java20Parser.ReceiverParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#formalParameterList.
+ def visitFormalParameterList(self, ctx:Java20Parser.FormalParameterListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#formalParameter.
+ def visitFormalParameter(self, ctx:Java20Parser.FormalParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableArityParameter.
+ def visitVariableArityParameter(self, ctx:Java20Parser.VariableArityParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableModifier.
+ def visitVariableModifier(self, ctx:Java20Parser.VariableModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#throwsT.
+ def visitThrowsT(self, ctx:Java20Parser.ThrowsTContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#exceptionTypeList.
+ def visitExceptionTypeList(self, ctx:Java20Parser.ExceptionTypeListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#exceptionType.
+ def visitExceptionType(self, ctx:Java20Parser.ExceptionTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodBody.
+ def visitMethodBody(self, ctx:Java20Parser.MethodBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#instanceInitializer.
+ def visitInstanceInitializer(self, ctx:Java20Parser.InstanceInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#staticInitializer.
+ def visitStaticInitializer(self, ctx:Java20Parser.StaticInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constructorDeclaration.
+ def visitConstructorDeclaration(self, ctx:Java20Parser.ConstructorDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constructorModifier.
+ def visitConstructorModifier(self, ctx:Java20Parser.ConstructorModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constructorDeclarator.
+ def visitConstructorDeclarator(self, ctx:Java20Parser.ConstructorDeclaratorContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#simpleTypeName.
+ def visitSimpleTypeName(self, ctx:Java20Parser.SimpleTypeNameContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constructorBody.
+ def visitConstructorBody(self, ctx:Java20Parser.ConstructorBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#explicitConstructorInvocation.
+ def visitExplicitConstructorInvocation(self, ctx:Java20Parser.ExplicitConstructorInvocationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumDeclaration.
+ def visitEnumDeclaration(self, ctx:Java20Parser.EnumDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumBody.
+ def visitEnumBody(self, ctx:Java20Parser.EnumBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumConstantList.
+ def visitEnumConstantList(self, ctx:Java20Parser.EnumConstantListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumConstant.
+ def visitEnumConstant(self, ctx:Java20Parser.EnumConstantContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumConstantModifier.
+ def visitEnumConstantModifier(self, ctx:Java20Parser.EnumConstantModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enumBodyDeclarations.
+ def visitEnumBodyDeclarations(self, ctx:Java20Parser.EnumBodyDeclarationsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordDeclaration.
+ def visitRecordDeclaration(self, ctx:Java20Parser.RecordDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordHeader.
+ def visitRecordHeader(self, ctx:Java20Parser.RecordHeaderContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordComponentList.
+ def visitRecordComponentList(self, ctx:Java20Parser.RecordComponentListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordComponent.
+ def visitRecordComponent(self, ctx:Java20Parser.RecordComponentContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableArityRecordComponent.
+ def visitVariableArityRecordComponent(self, ctx:Java20Parser.VariableArityRecordComponentContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordComponentModifier.
+ def visitRecordComponentModifier(self, ctx:Java20Parser.RecordComponentModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordBody.
+ def visitRecordBody(self, ctx:Java20Parser.RecordBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#recordBodyDeclaration.
+ def visitRecordBodyDeclaration(self, ctx:Java20Parser.RecordBodyDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#compactConstructorDeclaration.
+ def visitCompactConstructorDeclaration(self, ctx:Java20Parser.CompactConstructorDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceDeclaration.
+ def visitInterfaceDeclaration(self, ctx:Java20Parser.InterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#normalInterfaceDeclaration.
+ def visitNormalInterfaceDeclaration(self, ctx:Java20Parser.NormalInterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceModifier.
+ def visitInterfaceModifier(self, ctx:Java20Parser.InterfaceModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceExtends.
+ def visitInterfaceExtends(self, ctx:Java20Parser.InterfaceExtendsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfacePermits.
+ def visitInterfacePermits(self, ctx:Java20Parser.InterfacePermitsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceBody.
+ def visitInterfaceBody(self, ctx:Java20Parser.InterfaceBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceMemberDeclaration.
+ def visitInterfaceMemberDeclaration(self, ctx:Java20Parser.InterfaceMemberDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constantDeclaration.
+ def visitConstantDeclaration(self, ctx:Java20Parser.ConstantDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constantModifier.
+ def visitConstantModifier(self, ctx:Java20Parser.ConstantModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceMethodDeclaration.
+ def visitInterfaceMethodDeclaration(self, ctx:Java20Parser.InterfaceMethodDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#interfaceMethodModifier.
+ def visitInterfaceMethodModifier(self, ctx:Java20Parser.InterfaceMethodModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceDeclaration.
+ def visitAnnotationInterfaceDeclaration(self, ctx:Java20Parser.AnnotationInterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceBody.
+ def visitAnnotationInterfaceBody(self, ctx:Java20Parser.AnnotationInterfaceBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceMemberDeclaration.
+ def visitAnnotationInterfaceMemberDeclaration(self, ctx:Java20Parser.AnnotationInterfaceMemberDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceElementDeclaration.
+ def visitAnnotationInterfaceElementDeclaration(self, ctx:Java20Parser.AnnotationInterfaceElementDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotationInterfaceElementModifier.
+ def visitAnnotationInterfaceElementModifier(self, ctx:Java20Parser.AnnotationInterfaceElementModifierContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#defaultValue.
+ def visitDefaultValue(self, ctx:Java20Parser.DefaultValueContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#annotation.
+ def visitAnnotation(self, ctx:Java20Parser.AnnotationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#normalAnnotation.
+ def visitNormalAnnotation(self, ctx:Java20Parser.NormalAnnotationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValuePairList.
+ def visitElementValuePairList(self, ctx:Java20Parser.ElementValuePairListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValuePair.
+ def visitElementValuePair(self, ctx:Java20Parser.ElementValuePairContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValue.
+ def visitElementValue(self, ctx:Java20Parser.ElementValueContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValueArrayInitializer.
+ def visitElementValueArrayInitializer(self, ctx:Java20Parser.ElementValueArrayInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#elementValueList.
+ def visitElementValueList(self, ctx:Java20Parser.ElementValueListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#markerAnnotation.
+ def visitMarkerAnnotation(self, ctx:Java20Parser.MarkerAnnotationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#singleElementAnnotation.
+ def visitSingleElementAnnotation(self, ctx:Java20Parser.SingleElementAnnotationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayInitializer.
+ def visitArrayInitializer(self, ctx:Java20Parser.ArrayInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableInitializerList.
+ def visitVariableInitializerList(self, ctx:Java20Parser.VariableInitializerListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#block.
+ def visitBlock(self, ctx:Java20Parser.BlockContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#blockStatements.
+ def visitBlockStatements(self, ctx:Java20Parser.BlockStatementsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#blockStatement.
+ def visitBlockStatement(self, ctx:Java20Parser.BlockStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#localClassOrInterfaceDeclaration.
+ def visitLocalClassOrInterfaceDeclaration(self, ctx:Java20Parser.LocalClassOrInterfaceDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#localVariableDeclaration.
+ def visitLocalVariableDeclaration(self, ctx:Java20Parser.LocalVariableDeclarationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#localVariableType.
+ def visitLocalVariableType(self, ctx:Java20Parser.LocalVariableTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#localVariableDeclarationStatement.
+ def visitLocalVariableDeclarationStatement(self, ctx:Java20Parser.LocalVariableDeclarationStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statement.
+ def visitStatement(self, ctx:Java20Parser.StatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statementNoShortIf.
+ def visitStatementNoShortIf(self, ctx:Java20Parser.StatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statementWithoutTrailingSubstatement.
+ def visitStatementWithoutTrailingSubstatement(self, ctx:Java20Parser.StatementWithoutTrailingSubstatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#emptyStatement_.
+ def visitEmptyStatement_(self, ctx:Java20Parser.EmptyStatement_Context):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#labeledStatement.
+ def visitLabeledStatement(self, ctx:Java20Parser.LabeledStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#labeledStatementNoShortIf.
+ def visitLabeledStatementNoShortIf(self, ctx:Java20Parser.LabeledStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#expressionStatement.
+ def visitExpressionStatement(self, ctx:Java20Parser.ExpressionStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statementExpression.
+ def visitStatementExpression(self, ctx:Java20Parser.StatementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ifThenStatement.
+ def visitIfThenStatement(self, ctx:Java20Parser.IfThenStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ifThenElseStatement.
+ def visitIfThenElseStatement(self, ctx:Java20Parser.IfThenElseStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#ifThenElseStatementNoShortIf.
+ def visitIfThenElseStatementNoShortIf(self, ctx:Java20Parser.IfThenElseStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#assertStatement.
+ def visitAssertStatement(self, ctx:Java20Parser.AssertStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchStatement.
+ def visitSwitchStatement(self, ctx:Java20Parser.SwitchStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchBlock.
+ def visitSwitchBlock(self, ctx:Java20Parser.SwitchBlockContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchRule.
+ def visitSwitchRule(self, ctx:Java20Parser.SwitchRuleContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchBlockStatementGroup.
+ def visitSwitchBlockStatementGroup(self, ctx:Java20Parser.SwitchBlockStatementGroupContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchLabel.
+ def visitSwitchLabel(self, ctx:Java20Parser.SwitchLabelContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#caseConstant.
+ def visitCaseConstant(self, ctx:Java20Parser.CaseConstantContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#whileStatement.
+ def visitWhileStatement(self, ctx:Java20Parser.WhileStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#whileStatementNoShortIf.
+ def visitWhileStatementNoShortIf(self, ctx:Java20Parser.WhileStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#doStatement.
+ def visitDoStatement(self, ctx:Java20Parser.DoStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#forStatement.
+ def visitForStatement(self, ctx:Java20Parser.ForStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#forStatementNoShortIf.
+ def visitForStatementNoShortIf(self, ctx:Java20Parser.ForStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#basicForStatement.
+ def visitBasicForStatement(self, ctx:Java20Parser.BasicForStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#basicForStatementNoShortIf.
+ def visitBasicForStatementNoShortIf(self, ctx:Java20Parser.BasicForStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#forInit.
+ def visitForInit(self, ctx:Java20Parser.ForInitContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#forUpdate.
+ def visitForUpdate(self, ctx:Java20Parser.ForUpdateContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#statementExpressionList.
+ def visitStatementExpressionList(self, ctx:Java20Parser.StatementExpressionListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enhancedForStatement.
+ def visitEnhancedForStatement(self, ctx:Java20Parser.EnhancedForStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#enhancedForStatementNoShortIf.
+ def visitEnhancedForStatementNoShortIf(self, ctx:Java20Parser.EnhancedForStatementNoShortIfContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#breakStatement.
+ def visitBreakStatement(self, ctx:Java20Parser.BreakStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#continueStatement.
+ def visitContinueStatement(self, ctx:Java20Parser.ContinueStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#returnStatement.
+ def visitReturnStatement(self, ctx:Java20Parser.ReturnStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#throwStatement.
+ def visitThrowStatement(self, ctx:Java20Parser.ThrowStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#synchronizedStatement.
+ def visitSynchronizedStatement(self, ctx:Java20Parser.SynchronizedStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#tryStatement.
+ def visitTryStatement(self, ctx:Java20Parser.TryStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#catches.
+ def visitCatches(self, ctx:Java20Parser.CatchesContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#catchClause.
+ def visitCatchClause(self, ctx:Java20Parser.CatchClauseContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#catchFormalParameter.
+ def visitCatchFormalParameter(self, ctx:Java20Parser.CatchFormalParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#catchType.
+ def visitCatchType(self, ctx:Java20Parser.CatchTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#finallyBlock.
+ def visitFinallyBlock(self, ctx:Java20Parser.FinallyBlockContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#tryWithResourcesStatement.
+ def visitTryWithResourcesStatement(self, ctx:Java20Parser.TryWithResourcesStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#resourceSpecification.
+ def visitResourceSpecification(self, ctx:Java20Parser.ResourceSpecificationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#resourceList.
+ def visitResourceList(self, ctx:Java20Parser.ResourceListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#resource.
+ def visitResource(self, ctx:Java20Parser.ResourceContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#variableAccess.
+ def visitVariableAccess(self, ctx:Java20Parser.VariableAccessContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#yieldStatement.
+ def visitYieldStatement(self, ctx:Java20Parser.YieldStatementContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#pattern.
+ def visitPattern(self, ctx:Java20Parser.PatternContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typePattern.
+ def visitTypePattern(self, ctx:Java20Parser.TypePatternContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#expression.
+ def visitExpression(self, ctx:Java20Parser.ExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#primary.
+ def visitPrimary(self, ctx:Java20Parser.PrimaryContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#primaryNoNewArray.
+ def visitPrimaryNoNewArray(self, ctx:Java20Parser.PrimaryNoNewArrayContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#pNNA.
+ def visitPNNA(self, ctx:Java20Parser.PNNAContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classLiteral.
+ def visitClassLiteral(self, ctx:Java20Parser.ClassLiteralContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classInstanceCreationExpression.
+ def visitClassInstanceCreationExpression(self, ctx:Java20Parser.ClassInstanceCreationExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unqualifiedClassInstanceCreationExpression.
+ def visitUnqualifiedClassInstanceCreationExpression(self, ctx:Java20Parser.UnqualifiedClassInstanceCreationExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#classOrInterfaceTypeToInstantiate.
+ def visitClassOrInterfaceTypeToInstantiate(self, ctx:Java20Parser.ClassOrInterfaceTypeToInstantiateContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#typeArgumentsOrDiamond.
+ def visitTypeArgumentsOrDiamond(self, ctx:Java20Parser.TypeArgumentsOrDiamondContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayCreationExpression.
+ def visitArrayCreationExpression(self, ctx:Java20Parser.ArrayCreationExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayCreationExpressionWithoutInitializer.
+ def visitArrayCreationExpressionWithoutInitializer(self, ctx:Java20Parser.ArrayCreationExpressionWithoutInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayCreationExpressionWithInitializer.
+ def visitArrayCreationExpressionWithInitializer(self, ctx:Java20Parser.ArrayCreationExpressionWithInitializerContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#dimExprs.
+ def visitDimExprs(self, ctx:Java20Parser.DimExprsContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#dimExpr.
+ def visitDimExpr(self, ctx:Java20Parser.DimExprContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#arrayAccess.
+ def visitArrayAccess(self, ctx:Java20Parser.ArrayAccessContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#fieldAccess.
+ def visitFieldAccess(self, ctx:Java20Parser.FieldAccessContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodInvocation.
+ def visitMethodInvocation(self, ctx:Java20Parser.MethodInvocationContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#argumentList.
+ def visitArgumentList(self, ctx:Java20Parser.ArgumentListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#methodReference.
+ def visitMethodReference(self, ctx:Java20Parser.MethodReferenceContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#postfixExpression.
+ def visitPostfixExpression(self, ctx:Java20Parser.PostfixExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#pfE.
+ def visitPfE(self, ctx:Java20Parser.PfEContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#postIncrementExpression.
+ def visitPostIncrementExpression(self, ctx:Java20Parser.PostIncrementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#postDecrementExpression.
+ def visitPostDecrementExpression(self, ctx:Java20Parser.PostDecrementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unaryExpression.
+ def visitUnaryExpression(self, ctx:Java20Parser.UnaryExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#preIncrementExpression.
+ def visitPreIncrementExpression(self, ctx:Java20Parser.PreIncrementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#preDecrementExpression.
+ def visitPreDecrementExpression(self, ctx:Java20Parser.PreDecrementExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#unaryExpressionNotPlusMinus.
+ def visitUnaryExpressionNotPlusMinus(self, ctx:Java20Parser.UnaryExpressionNotPlusMinusContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#castExpression.
+ def visitCastExpression(self, ctx:Java20Parser.CastExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#multiplicativeExpression.
+ def visitMultiplicativeExpression(self, ctx:Java20Parser.MultiplicativeExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#additiveExpression.
+ def visitAdditiveExpression(self, ctx:Java20Parser.AdditiveExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#shiftExpression.
+ def visitShiftExpression(self, ctx:Java20Parser.ShiftExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#relationalExpression.
+ def visitRelationalExpression(self, ctx:Java20Parser.RelationalExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#equalityExpression.
+ def visitEqualityExpression(self, ctx:Java20Parser.EqualityExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#andExpression.
+ def visitAndExpression(self, ctx:Java20Parser.AndExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#exclusiveOrExpression.
+ def visitExclusiveOrExpression(self, ctx:Java20Parser.ExclusiveOrExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#inclusiveOrExpression.
+ def visitInclusiveOrExpression(self, ctx:Java20Parser.InclusiveOrExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#conditionalAndExpression.
+ def visitConditionalAndExpression(self, ctx:Java20Parser.ConditionalAndExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#conditionalOrExpression.
+ def visitConditionalOrExpression(self, ctx:Java20Parser.ConditionalOrExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#conditionalExpression.
+ def visitConditionalExpression(self, ctx:Java20Parser.ConditionalExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#assignmentExpression.
+ def visitAssignmentExpression(self, ctx:Java20Parser.AssignmentExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#assignment.
+ def visitAssignment(self, ctx:Java20Parser.AssignmentContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#leftHandSide.
+ def visitLeftHandSide(self, ctx:Java20Parser.LeftHandSideContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#assignmentOperator.
+ def visitAssignmentOperator(self, ctx:Java20Parser.AssignmentOperatorContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaExpression.
+ def visitLambdaExpression(self, ctx:Java20Parser.LambdaExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaParameters.
+ def visitLambdaParameters(self, ctx:Java20Parser.LambdaParametersContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaParameterList.
+ def visitLambdaParameterList(self, ctx:Java20Parser.LambdaParameterListContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaParameter.
+ def visitLambdaParameter(self, ctx:Java20Parser.LambdaParameterContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaParameterType.
+ def visitLambdaParameterType(self, ctx:Java20Parser.LambdaParameterTypeContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#lambdaBody.
+ def visitLambdaBody(self, ctx:Java20Parser.LambdaBodyContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#switchExpression.
+ def visitSwitchExpression(self, ctx:Java20Parser.SwitchExpressionContext):
+ return self.visitChildren(ctx)
+
+
+ # Visit a parse tree produced by Java20Parser#constantExpression.
+ def visitConstantExpression(self, ctx:Java20Parser.ConstantExpressionContext):
+ return self.visitChildren(ctx)
+
+
+
+del Java20Parser
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py
new file mode 100644
index 000000000..5603da4fa
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py
@@ -0,0 +1,791 @@
+# Generated from Python3Lexer.g4 by ANTLR 4.13.1
+from antlr4 import *
+from io import StringIO
+import sys
+if sys.version_info[1] > 5:
+ from typing import TextIO
+else:
+ from typing.io import TextIO
+
+
+if "." in __name__:
+ from module_programming_winnowing.convert_code_to_ast.languages.python.Python3LexerBase import Python3LexerBase
+else:
+ from module_programming_winnowing.convert_code_to_ast.languages.python.Python3LexerBase import Python3LexerBase
+
+def serializedATN():
+ return [
+ 4,0,102,910,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,
+ 2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,
+ 13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,
+ 19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,
+ 26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,
+ 32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,
+ 39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,
+ 45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,
+ 52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,
+ 58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,
+ 65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,
+ 71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,
+ 78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,
+ 84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,
+ 91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,
+ 97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,
+ 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,
+ 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,
+ 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,
+ 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,
+ 7,125,2,126,7,126,2,127,7,127,2,128,7,128,1,0,1,0,3,0,262,8,0,1,
+ 1,1,1,1,1,3,1,267,8,1,1,2,1,2,1,2,1,2,3,2,273,8,2,1,3,1,3,1,3,1,
+ 3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,
+ 6,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,
+ 9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,
+ 1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,14,1,14,
+ 1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,
+ 1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,
+ 1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,21,
+ 1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,23,
+ 1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,26,
+ 1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,
+ 1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,
+ 1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,
+ 1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,
+ 1,35,1,36,1,36,1,36,1,36,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,
+ 1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,
+ 1,41,3,41,481,8,41,1,41,1,41,3,41,485,8,41,1,41,3,41,488,8,41,3,
+ 41,490,8,41,1,41,1,41,1,42,1,42,5,42,496,8,42,10,42,12,42,499,9,
+ 42,1,43,1,43,1,43,1,43,1,43,3,43,506,8,43,1,43,1,43,3,43,510,8,43,
+ 1,44,1,44,1,44,1,44,1,44,3,44,517,8,44,1,44,1,44,3,44,521,8,44,1,
+ 45,1,45,5,45,525,8,45,10,45,12,45,528,9,45,1,45,4,45,531,8,45,11,
+ 45,12,45,532,3,45,535,8,45,1,46,1,46,1,46,4,46,540,8,46,11,46,12,
+ 46,541,1,47,1,47,1,47,4,47,547,8,47,11,47,12,47,548,1,48,1,48,1,
+ 48,4,48,554,8,48,11,48,12,48,555,1,49,1,49,3,49,560,8,49,1,50,1,
+ 50,3,50,564,8,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,52,1,53,1,
+ 53,1,54,1,54,1,54,1,55,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1,
+ 59,1,59,1,59,1,60,1,60,1,61,1,61,1,61,1,62,1,62,1,62,1,63,1,63,1,
+ 64,1,64,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,69,1,
+ 69,1,70,1,70,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,74,1,74,1,74,1,
+ 75,1,75,1,75,1,76,1,76,1,77,1,77,1,78,1,78,1,78,1,79,1,79,1,79,1,
+ 80,1,80,1,80,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,84,1,84,1,
+ 84,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,88,1,
+ 89,1,89,1,89,1,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,1,93,1,
+ 93,1,93,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,
+ 96,1,97,1,97,1,97,1,97,1,98,1,98,1,98,3,98,700,8,98,1,98,1,98,1,
+ 99,1,99,1,100,1,100,1,100,5,100,709,8,100,10,100,12,100,712,9,100,
+ 1,100,1,100,1,100,1,100,5,100,718,8,100,10,100,12,100,721,9,100,
+ 1,100,3,100,724,8,100,1,101,1,101,1,101,1,101,1,101,5,101,731,8,
+ 101,10,101,12,101,734,9,101,1,101,1,101,1,101,1,101,1,101,1,101,
+ 1,101,1,101,5,101,744,8,101,10,101,12,101,747,9,101,1,101,1,101,
+ 1,101,3,101,752,8,101,1,102,1,102,3,102,756,8,102,1,103,1,103,1,
+ 104,1,104,1,104,1,104,3,104,764,8,104,1,105,1,105,1,106,1,106,1,
+ 107,1,107,1,108,1,108,1,109,1,109,1,110,3,110,777,8,110,1,110,1,
+ 110,1,110,1,110,3,110,783,8,110,1,111,1,111,3,111,787,8,111,1,111,
+ 1,111,1,112,4,112,792,8,112,11,112,12,112,793,1,113,1,113,4,113,
+ 798,8,113,11,113,12,113,799,1,114,1,114,3,114,804,8,114,1,114,4,
+ 114,807,8,114,11,114,12,114,808,1,115,1,115,1,115,5,115,814,8,115,
+ 10,115,12,115,817,9,115,1,115,1,115,1,115,1,115,5,115,823,8,115,
+ 10,115,12,115,826,9,115,1,115,3,115,829,8,115,1,116,1,116,1,116,
+ 1,116,1,116,5,116,836,8,116,10,116,12,116,839,9,116,1,116,1,116,
+ 1,116,1,116,1,116,1,116,1,116,1,116,5,116,849,8,116,10,116,12,116,
+ 852,9,116,1,116,1,116,1,116,3,116,857,8,116,1,117,1,117,3,117,861,
+ 8,117,1,118,3,118,864,8,118,1,119,3,119,867,8,119,1,120,3,120,870,
+ 8,120,1,121,1,121,1,121,1,122,4,122,876,8,122,11,122,12,122,877,
+ 1,123,1,123,5,123,882,8,123,10,123,12,123,885,9,123,1,124,1,124,
+ 3,124,889,8,124,1,124,3,124,892,8,124,1,124,1,124,3,124,896,8,124,
+ 1,125,1,125,1,126,1,126,1,127,1,127,3,127,904,8,127,1,128,1,128,
+ 1,128,3,128,909,8,128,4,732,745,837,850,0,129,1,3,3,4,5,5,7,6,9,
+ 7,11,8,13,9,15,10,17,11,19,12,21,13,23,14,25,15,27,16,29,17,31,18,
+ 33,19,35,20,37,21,39,22,41,23,43,24,45,25,47,26,49,27,51,28,53,29,
+ 55,30,57,31,59,32,61,33,63,34,65,35,67,36,69,37,71,38,73,39,75,40,
+ 77,41,79,42,81,43,83,44,85,45,87,46,89,47,91,48,93,49,95,50,97,51,
+ 99,52,101,53,103,54,105,55,107,56,109,57,111,58,113,59,115,60,117,
+ 61,119,62,121,63,123,64,125,65,127,66,129,67,131,68,133,69,135,70,
+ 137,71,139,72,141,73,143,74,145,75,147,76,149,77,151,78,153,79,155,
+ 80,157,81,159,82,161,83,163,84,165,85,167,86,169,87,171,88,173,89,
+ 175,90,177,91,179,92,181,93,183,94,185,95,187,96,189,97,191,98,193,
+ 99,195,100,197,101,199,102,201,0,203,0,205,0,207,0,209,0,211,0,213,
+ 0,215,0,217,0,219,0,221,0,223,0,225,0,227,0,229,0,231,0,233,0,235,
+ 0,237,0,239,0,241,0,243,0,245,0,247,0,249,0,251,0,253,0,255,0,257,
+ 0,1,0,27,6,0,70,70,82,82,85,85,102,102,114,114,117,117,2,0,70,70,
+ 102,102,2,0,82,82,114,114,2,0,66,66,98,98,2,0,79,79,111,111,2,0,
+ 88,88,120,120,2,0,74,74,106,106,4,0,10,10,12,13,39,39,92,92,4,0,
+ 10,10,12,13,34,34,92,92,1,0,92,92,1,0,49,57,1,0,48,57,1,0,48,55,
+ 3,0,48,57,65,70,97,102,1,0,48,49,2,0,69,69,101,101,2,0,43,43,45,
+ 45,5,0,0,9,11,12,14,38,40,91,93,127,5,0,0,9,11,12,14,33,35,91,93,
+ 127,2,0,0,91,93,127,1,0,0,127,2,0,9,9,32,32,2,0,10,10,12,13,4,0,
+ 6277,6278,8472,8472,8494,8494,12443,12444,4,0,183,183,903,903,4969,
+ 4977,6618,6618,663,0,65,90,95,95,97,122,170,170,181,181,186,186,
+ 192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,
+ 886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,
+ 1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,
+ 1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,
+ 1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,
+ 2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,
+ 2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,
+ 2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,
+ 2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,
+ 2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,
+ 2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,
+ 2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,
+ 2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,
+ 2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,
+ 2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,
+ 2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,
+ 3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,
+ 3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,
+ 3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,
+ 3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,
+ 3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,
+ 3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,
+ 3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,
+ 3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,
+ 4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,
+ 4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,
+ 4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,
+ 4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,
+ 5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,
+ 5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103,
+ 6108,6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,
+ 6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,
+ 6823,6823,6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,
+ 7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,
+ 7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,
+ 8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,
+ 8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,
+ 8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,
+ 8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,
+ 8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,
+ 8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559,
+ 11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,
+ 11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,
+ 11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,
+ 12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,
+ 12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,
+ 42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,
+ 42653,42656,42735,42775,42783,42786,42888,42891,42954,42960,42961,
+ 42963,42963,42965,42969,42994,43009,43011,43013,43015,43018,43020,
+ 43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262,
+ 43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,
+ 43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,
+ 43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,
+ 43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,
+ 43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,
+ 43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,
+ 63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,
+ 64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,
+ 64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,
+ 65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,
+ 65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,
+ 65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,
+ 66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432,
+ 66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,
+ 66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,
+ 66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,
+ 67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,
+ 67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,
+ 67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,
+ 67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,
+ 68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,
+ 68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,
+ 68736,68786,68800,68850,68864,68899,69248,69289,69296,69297,69376,
+ 69404,69415,69415,69424,69445,69488,69505,69552,69572,69600,69622,
+ 69635,69687,69745,69746,69749,69749,69763,69807,69840,69864,69891,
+ 69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,
+ 70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70207,
+ 70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,
+ 70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,
+ 70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,
+ 70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,
+ 71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,
+ 71424,71450,71488,71494,71680,71723,71840,71903,71935,71942,71945,
+ 71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,
+ 72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,
+ 72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,
+ 72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,
+ 72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,
+ 73112,73112,73440,73458,73474,73474,73476,73488,73490,73523,73648,
+ 73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895,
+ 78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880,
+ 92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,
+ 93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,
+ 100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,
+ 110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,
+ 110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,
+ 113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,
+ 119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,
+ 120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,
+ 120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,
+ 120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,
+ 120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,
+ 120779,122624,122654,122661,122666,122928,122989,123136,123180,123191,
+ 123197,123214,123214,123536,123565,123584,123627,124112,124139,124896,
+ 124902,124904,124907,124909,124910,124912,124926,124928,125124,125184,
+ 125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,
+ 126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,
+ 126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,
+ 126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,
+ 126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,
+ 126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,
+ 126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,
+ 173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,
+ 195101,196608,201546,201552,205743,372,0,48,57,95,95,768,879,1155,
+ 1159,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1552,1562,
+ 1611,1641,1648,1648,1750,1756,1759,1764,1767,1768,1770,1773,1776,
+ 1785,1809,1809,1840,1866,1958,1968,1984,1993,2027,2035,2045,2045,
+ 2070,2073,2075,2083,2085,2087,2089,2093,2137,2139,2200,2207,2250,
+ 2273,2275,2307,2362,2364,2366,2383,2385,2391,2402,2403,2406,2415,
+ 2433,2435,2492,2492,2494,2500,2503,2504,2507,2509,2519,2519,2530,
+ 2531,2534,2543,2558,2558,2561,2563,2620,2620,2622,2626,2631,2632,
+ 2635,2637,2641,2641,2662,2673,2677,2677,2689,2691,2748,2748,2750,
+ 2757,2759,2761,2763,2765,2786,2787,2790,2799,2810,2815,2817,2819,
+ 2876,2876,2878,2884,2887,2888,2891,2893,2901,2903,2914,2915,2918,
+ 2927,2946,2946,3006,3010,3014,3016,3018,3021,3031,3031,3046,3055,
+ 3072,3076,3132,3132,3134,3140,3142,3144,3146,3149,3157,3158,3170,
+ 3171,3174,3183,3201,3203,3260,3260,3262,3268,3270,3272,3274,3277,
+ 3285,3286,3298,3299,3302,3311,3315,3315,3328,3331,3387,3388,3390,
+ 3396,3398,3400,3402,3405,3415,3415,3426,3427,3430,3439,3457,3459,
+ 3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3633,
+ 3633,3636,3642,3655,3662,3664,3673,3761,3761,3764,3772,3784,3790,
+ 3792,3801,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,
+ 3903,3953,3972,3974,3975,3981,3991,3993,4028,4038,4038,4139,4158,
+ 4160,4169,4182,4185,4190,4192,4194,4196,4199,4205,4209,4212,4226,
+ 4237,4239,4253,4957,4959,5906,5909,5938,5940,5970,5971,6002,6003,
+ 6068,6099,6109,6109,6112,6121,6155,6157,6159,6169,6277,6278,6313,
+ 6313,6432,6443,6448,6459,6470,6479,6608,6617,6679,6683,6741,6750,
+ 6752,6780,6783,6793,6800,6809,6832,6845,6847,6862,6912,6916,6964,
+ 6980,6992,7001,7019,7027,7040,7042,7073,7085,7088,7097,7142,7155,
+ 7204,7223,7232,7241,7248,7257,7376,7378,7380,7400,7405,7405,7412,
+ 7412,7415,7417,7616,7679,8255,8256,8276,8276,8400,8412,8417,8417,
+ 8421,8432,11503,11505,11647,11647,11744,11775,12330,12335,12441,
+ 12442,42528,42537,42607,42607,42612,42621,42654,42655,42736,42737,
+ 43010,43010,43014,43014,43019,43019,43043,43047,43052,43052,43136,
+ 43137,43188,43205,43216,43225,43232,43249,43263,43273,43302,43309,
+ 43335,43347,43392,43395,43443,43456,43472,43481,43493,43493,43504,
+ 43513,43561,43574,43587,43587,43596,43597,43600,43609,43643,43645,
+ 43696,43696,43698,43700,43703,43704,43710,43711,43713,43713,43755,
+ 43759,43765,43766,44003,44010,44012,44013,44016,44025,64286,64286,
+ 65024,65039,65056,65071,65075,65076,65101,65103,65296,65305,65343,
+ 65343,66045,66045,66272,66272,66422,66426,66720,66729,68097,68099,
+ 68101,68102,68108,68111,68152,68154,68159,68159,68325,68326,68900,
+ 68903,68912,68921,69291,69292,69373,69375,69446,69456,69506,69509,
+ 69632,69634,69688,69702,69734,69744,69747,69748,69759,69762,69808,
+ 69818,69826,69826,69872,69881,69888,69890,69927,69940,69942,69951,
+ 69957,69958,70003,70003,70016,70018,70067,70080,70089,70092,70094,
+ 70105,70188,70199,70206,70206,70209,70209,70367,70378,70384,70393,
+ 70400,70403,70459,70460,70462,70468,70471,70472,70475,70477,70487,
+ 70487,70498,70499,70502,70508,70512,70516,70709,70726,70736,70745,
+ 70750,70750,70832,70851,70864,70873,71087,71093,71096,71104,71132,
+ 71133,71216,71232,71248,71257,71339,71351,71360,71369,71453,71467,
+ 71472,71481,71724,71738,71904,71913,71984,71989,71991,71992,71995,
+ 71998,72000,72000,72002,72003,72016,72025,72145,72151,72154,72160,
+ 72164,72164,72193,72202,72243,72249,72251,72254,72263,72263,72273,
+ 72283,72330,72345,72751,72758,72760,72767,72784,72793,72850,72871,
+ 72873,72886,73009,73014,73018,73018,73020,73021,73023,73029,73031,
+ 73031,73040,73049,73098,73102,73104,73105,73107,73111,73120,73129,
+ 73459,73462,73472,73473,73475,73475,73524,73530,73534,73538,73552,
+ 73561,78912,78912,78919,78933,92768,92777,92864,92873,92912,92916,
+ 92976,92982,93008,93017,94031,94031,94033,94087,94095,94098,94180,
+ 94180,94192,94193,113821,113822,118528,118573,118576,118598,119141,
+ 119145,119149,119154,119163,119170,119173,119179,119210,119213,119362,
+ 119364,120782,120831,121344,121398,121403,121452,121461,121461,121476,
+ 121476,121499,121503,121505,121519,122880,122886,122888,122904,122907,
+ 122913,122915,122916,122918,122922,123023,123023,123184,123190,123200,
+ 123209,123566,123566,123628,123641,124140,124153,125136,125142,125252,
+ 125258,125264,125273,130032,130041,917760,917999,942,0,1,1,0,0,0,
+ 0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,
+ 1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,
+ 1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,
+ 1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,
+ 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,
+ 1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,
+ 1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,
+ 1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,
+ 1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,
+ 1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,
+ 1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,
+ 0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,
+ 0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,
+ 131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,
+ 0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,
+ 1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,
+ 0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,
+ 0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,
+ 177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,
+ 0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,
+ 1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,1,261,1,0,0,0,3,266,1,0,0,0,
+ 5,272,1,0,0,0,7,274,1,0,0,0,9,278,1,0,0,0,11,281,1,0,0,0,13,288,
+ 1,0,0,0,15,294,1,0,0,0,17,300,1,0,0,0,19,306,1,0,0,0,21,311,1,0,
+ 0,0,23,317,1,0,0,0,25,326,1,0,0,0,27,330,1,0,0,0,29,334,1,0,0,0,
+ 31,339,1,0,0,0,33,344,1,0,0,0,35,351,1,0,0,0,37,357,1,0,0,0,39,365,
+ 1,0,0,0,41,369,1,0,0,0,43,374,1,0,0,0,45,381,1,0,0,0,47,384,1,0,
+ 0,0,49,391,1,0,0,0,51,394,1,0,0,0,53,397,1,0,0,0,55,404,1,0,0,0,
+ 57,410,1,0,0,0,59,415,1,0,0,0,61,424,1,0,0,0,63,428,1,0,0,0,65,431,
+ 1,0,0,0,67,436,1,0,0,0,69,442,1,0,0,0,71,449,1,0,0,0,73,454,1,0,
+ 0,0,75,458,1,0,0,0,77,460,1,0,0,0,79,466,1,0,0,0,81,471,1,0,0,0,
+ 83,489,1,0,0,0,85,493,1,0,0,0,87,505,1,0,0,0,89,516,1,0,0,0,91,534,
+ 1,0,0,0,93,536,1,0,0,0,95,543,1,0,0,0,97,550,1,0,0,0,99,559,1,0,
+ 0,0,101,563,1,0,0,0,103,567,1,0,0,0,105,569,1,0,0,0,107,573,1,0,
+ 0,0,109,575,1,0,0,0,111,578,1,0,0,0,113,581,1,0,0,0,115,583,1,0,
+ 0,0,117,585,1,0,0,0,119,587,1,0,0,0,121,590,1,0,0,0,123,592,1,0,
+ 0,0,125,595,1,0,0,0,127,598,1,0,0,0,129,600,1,0,0,0,131,602,1,0,
+ 0,0,133,604,1,0,0,0,135,607,1,0,0,0,137,610,1,0,0,0,139,612,1,0,
+ 0,0,141,614,1,0,0,0,143,616,1,0,0,0,145,618,1,0,0,0,147,621,1,0,
+ 0,0,149,623,1,0,0,0,151,626,1,0,0,0,153,629,1,0,0,0,155,631,1,0,
+ 0,0,157,633,1,0,0,0,159,636,1,0,0,0,161,639,1,0,0,0,163,642,1,0,
+ 0,0,165,645,1,0,0,0,167,648,1,0,0,0,169,650,1,0,0,0,171,653,1,0,
+ 0,0,173,656,1,0,0,0,175,659,1,0,0,0,177,662,1,0,0,0,179,665,1,0,
+ 0,0,181,668,1,0,0,0,183,671,1,0,0,0,185,674,1,0,0,0,187,677,1,0,
+ 0,0,189,680,1,0,0,0,191,684,1,0,0,0,193,688,1,0,0,0,195,692,1,0,
+ 0,0,197,699,1,0,0,0,199,703,1,0,0,0,201,723,1,0,0,0,203,751,1,0,
+ 0,0,205,755,1,0,0,0,207,757,1,0,0,0,209,763,1,0,0,0,211,765,1,0,
+ 0,0,213,767,1,0,0,0,215,769,1,0,0,0,217,771,1,0,0,0,219,773,1,0,
+ 0,0,221,782,1,0,0,0,223,786,1,0,0,0,225,791,1,0,0,0,227,795,1,0,
+ 0,0,229,801,1,0,0,0,231,828,1,0,0,0,233,856,1,0,0,0,235,860,1,0,
+ 0,0,237,863,1,0,0,0,239,866,1,0,0,0,241,869,1,0,0,0,243,871,1,0,
+ 0,0,245,875,1,0,0,0,247,879,1,0,0,0,249,886,1,0,0,0,251,897,1,0,
+ 0,0,253,899,1,0,0,0,255,903,1,0,0,0,257,908,1,0,0,0,259,262,3,87,
+ 43,0,260,262,3,89,44,0,261,259,1,0,0,0,261,260,1,0,0,0,262,2,1,0,
+ 0,0,263,267,3,5,2,0,264,267,3,99,49,0,265,267,3,101,50,0,266,263,
+ 1,0,0,0,266,264,1,0,0,0,266,265,1,0,0,0,267,4,1,0,0,0,268,273,3,
+ 91,45,0,269,273,3,93,46,0,270,273,3,95,47,0,271,273,3,97,48,0,272,
+ 268,1,0,0,0,272,269,1,0,0,0,272,270,1,0,0,0,272,271,1,0,0,0,273,
+ 6,1,0,0,0,274,275,5,97,0,0,275,276,5,110,0,0,276,277,5,100,0,0,277,
+ 8,1,0,0,0,278,279,5,97,0,0,279,280,5,115,0,0,280,10,1,0,0,0,281,
+ 282,5,97,0,0,282,283,5,115,0,0,283,284,5,115,0,0,284,285,5,101,0,
+ 0,285,286,5,114,0,0,286,287,5,116,0,0,287,12,1,0,0,0,288,289,5,97,
+ 0,0,289,290,5,115,0,0,290,291,5,121,0,0,291,292,5,110,0,0,292,293,
+ 5,99,0,0,293,14,1,0,0,0,294,295,5,97,0,0,295,296,5,119,0,0,296,297,
+ 5,97,0,0,297,298,5,105,0,0,298,299,5,116,0,0,299,16,1,0,0,0,300,
+ 301,5,98,0,0,301,302,5,114,0,0,302,303,5,101,0,0,303,304,5,97,0,
+ 0,304,305,5,107,0,0,305,18,1,0,0,0,306,307,5,99,0,0,307,308,5,97,
+ 0,0,308,309,5,115,0,0,309,310,5,101,0,0,310,20,1,0,0,0,311,312,5,
+ 99,0,0,312,313,5,108,0,0,313,314,5,97,0,0,314,315,5,115,0,0,315,
+ 316,5,115,0,0,316,22,1,0,0,0,317,318,5,99,0,0,318,319,5,111,0,0,
+ 319,320,5,110,0,0,320,321,5,116,0,0,321,322,5,105,0,0,322,323,5,
+ 110,0,0,323,324,5,117,0,0,324,325,5,101,0,0,325,24,1,0,0,0,326,327,
+ 5,100,0,0,327,328,5,101,0,0,328,329,5,102,0,0,329,26,1,0,0,0,330,
+ 331,5,100,0,0,331,332,5,101,0,0,332,333,5,108,0,0,333,28,1,0,0,0,
+ 334,335,5,101,0,0,335,336,5,108,0,0,336,337,5,105,0,0,337,338,5,
+ 102,0,0,338,30,1,0,0,0,339,340,5,101,0,0,340,341,5,108,0,0,341,342,
+ 5,115,0,0,342,343,5,101,0,0,343,32,1,0,0,0,344,345,5,101,0,0,345,
+ 346,5,120,0,0,346,347,5,99,0,0,347,348,5,101,0,0,348,349,5,112,0,
+ 0,349,350,5,116,0,0,350,34,1,0,0,0,351,352,5,70,0,0,352,353,5,97,
+ 0,0,353,354,5,108,0,0,354,355,5,115,0,0,355,356,5,101,0,0,356,36,
+ 1,0,0,0,357,358,5,102,0,0,358,359,5,105,0,0,359,360,5,110,0,0,360,
+ 361,5,97,0,0,361,362,5,108,0,0,362,363,5,108,0,0,363,364,5,121,0,
+ 0,364,38,1,0,0,0,365,366,5,102,0,0,366,367,5,111,0,0,367,368,5,114,
+ 0,0,368,40,1,0,0,0,369,370,5,102,0,0,370,371,5,114,0,0,371,372,5,
+ 111,0,0,372,373,5,109,0,0,373,42,1,0,0,0,374,375,5,103,0,0,375,376,
+ 5,108,0,0,376,377,5,111,0,0,377,378,5,98,0,0,378,379,5,97,0,0,379,
+ 380,5,108,0,0,380,44,1,0,0,0,381,382,5,105,0,0,382,383,5,102,0,0,
+ 383,46,1,0,0,0,384,385,5,105,0,0,385,386,5,109,0,0,386,387,5,112,
+ 0,0,387,388,5,111,0,0,388,389,5,114,0,0,389,390,5,116,0,0,390,48,
+ 1,0,0,0,391,392,5,105,0,0,392,393,5,110,0,0,393,50,1,0,0,0,394,395,
+ 5,105,0,0,395,396,5,115,0,0,396,52,1,0,0,0,397,398,5,108,0,0,398,
+ 399,5,97,0,0,399,400,5,109,0,0,400,401,5,98,0,0,401,402,5,100,0,
+ 0,402,403,5,97,0,0,403,54,1,0,0,0,404,405,5,109,0,0,405,406,5,97,
+ 0,0,406,407,5,116,0,0,407,408,5,99,0,0,408,409,5,104,0,0,409,56,
+ 1,0,0,0,410,411,5,78,0,0,411,412,5,111,0,0,412,413,5,110,0,0,413,
+ 414,5,101,0,0,414,58,1,0,0,0,415,416,5,110,0,0,416,417,5,111,0,0,
+ 417,418,5,110,0,0,418,419,5,108,0,0,419,420,5,111,0,0,420,421,5,
+ 99,0,0,421,422,5,97,0,0,422,423,5,108,0,0,423,60,1,0,0,0,424,425,
+ 5,110,0,0,425,426,5,111,0,0,426,427,5,116,0,0,427,62,1,0,0,0,428,
+ 429,5,111,0,0,429,430,5,114,0,0,430,64,1,0,0,0,431,432,5,112,0,0,
+ 432,433,5,97,0,0,433,434,5,115,0,0,434,435,5,115,0,0,435,66,1,0,
+ 0,0,436,437,5,114,0,0,437,438,5,97,0,0,438,439,5,105,0,0,439,440,
+ 5,115,0,0,440,441,5,101,0,0,441,68,1,0,0,0,442,443,5,114,0,0,443,
+ 444,5,101,0,0,444,445,5,116,0,0,445,446,5,117,0,0,446,447,5,114,
+ 0,0,447,448,5,110,0,0,448,70,1,0,0,0,449,450,5,84,0,0,450,451,5,
+ 114,0,0,451,452,5,117,0,0,452,453,5,101,0,0,453,72,1,0,0,0,454,455,
+ 5,116,0,0,455,456,5,114,0,0,456,457,5,121,0,0,457,74,1,0,0,0,458,
+ 459,5,95,0,0,459,76,1,0,0,0,460,461,5,119,0,0,461,462,5,104,0,0,
+ 462,463,5,105,0,0,463,464,5,108,0,0,464,465,5,101,0,0,465,78,1,0,
+ 0,0,466,467,5,119,0,0,467,468,5,105,0,0,468,469,5,116,0,0,469,470,
+ 5,104,0,0,470,80,1,0,0,0,471,472,5,121,0,0,472,473,5,105,0,0,473,
+ 474,5,101,0,0,474,475,5,108,0,0,475,476,5,100,0,0,476,82,1,0,0,0,
+ 477,478,4,41,0,0,478,490,3,245,122,0,479,481,5,13,0,0,480,479,1,
+ 0,0,0,480,481,1,0,0,0,481,482,1,0,0,0,482,485,5,10,0,0,483,485,2,
+ 12,13,0,484,480,1,0,0,0,484,483,1,0,0,0,485,487,1,0,0,0,486,488,
+ 3,245,122,0,487,486,1,0,0,0,487,488,1,0,0,0,488,490,1,0,0,0,489,
+ 477,1,0,0,0,489,484,1,0,0,0,490,491,1,0,0,0,491,492,6,41,0,0,492,
+ 84,1,0,0,0,493,497,3,255,127,0,494,496,3,257,128,0,495,494,1,0,0,
+ 0,496,499,1,0,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,86,1,0,0,0,
+ 499,497,1,0,0,0,500,506,7,0,0,0,501,502,7,1,0,0,502,506,7,2,0,0,
+ 503,504,7,2,0,0,504,506,7,1,0,0,505,500,1,0,0,0,505,501,1,0,0,0,
+ 505,503,1,0,0,0,505,506,1,0,0,0,506,509,1,0,0,0,507,510,3,201,100,
+ 0,508,510,3,203,101,0,509,507,1,0,0,0,509,508,1,0,0,0,510,88,1,0,
+ 0,0,511,517,7,3,0,0,512,513,7,3,0,0,513,517,7,2,0,0,514,515,7,2,
+ 0,0,515,517,7,3,0,0,516,511,1,0,0,0,516,512,1,0,0,0,516,514,1,0,
+ 0,0,517,520,1,0,0,0,518,521,3,231,115,0,519,521,3,233,116,0,520,
+ 518,1,0,0,0,520,519,1,0,0,0,521,90,1,0,0,0,522,526,3,211,105,0,523,
+ 525,3,213,106,0,524,523,1,0,0,0,525,528,1,0,0,0,526,524,1,0,0,0,
+ 526,527,1,0,0,0,527,535,1,0,0,0,528,526,1,0,0,0,529,531,5,48,0,0,
+ 530,529,1,0,0,0,531,532,1,0,0,0,532,530,1,0,0,0,532,533,1,0,0,0,
+ 533,535,1,0,0,0,534,522,1,0,0,0,534,530,1,0,0,0,535,92,1,0,0,0,536,
+ 537,5,48,0,0,537,539,7,4,0,0,538,540,3,215,107,0,539,538,1,0,0,0,
+ 540,541,1,0,0,0,541,539,1,0,0,0,541,542,1,0,0,0,542,94,1,0,0,0,543,
+ 544,5,48,0,0,544,546,7,5,0,0,545,547,3,217,108,0,546,545,1,0,0,0,
+ 547,548,1,0,0,0,548,546,1,0,0,0,548,549,1,0,0,0,549,96,1,0,0,0,550,
+ 551,5,48,0,0,551,553,7,3,0,0,552,554,3,219,109,0,553,552,1,0,0,0,
+ 554,555,1,0,0,0,555,553,1,0,0,0,555,556,1,0,0,0,556,98,1,0,0,0,557,
+ 560,3,221,110,0,558,560,3,223,111,0,559,557,1,0,0,0,559,558,1,0,
+ 0,0,560,100,1,0,0,0,561,564,3,99,49,0,562,564,3,225,112,0,563,561,
+ 1,0,0,0,563,562,1,0,0,0,564,565,1,0,0,0,565,566,7,6,0,0,566,102,
+ 1,0,0,0,567,568,5,46,0,0,568,104,1,0,0,0,569,570,5,46,0,0,570,571,
+ 5,46,0,0,571,572,5,46,0,0,572,106,1,0,0,0,573,574,5,42,0,0,574,108,
+ 1,0,0,0,575,576,5,40,0,0,576,577,6,54,1,0,577,110,1,0,0,0,578,579,
+ 5,41,0,0,579,580,6,55,2,0,580,112,1,0,0,0,581,582,5,44,0,0,582,114,
+ 1,0,0,0,583,584,5,58,0,0,584,116,1,0,0,0,585,586,5,59,0,0,586,118,
+ 1,0,0,0,587,588,5,42,0,0,588,589,5,42,0,0,589,120,1,0,0,0,590,591,
+ 5,61,0,0,591,122,1,0,0,0,592,593,5,91,0,0,593,594,6,61,3,0,594,124,
+ 1,0,0,0,595,596,5,93,0,0,596,597,6,62,4,0,597,126,1,0,0,0,598,599,
+ 5,124,0,0,599,128,1,0,0,0,600,601,5,94,0,0,601,130,1,0,0,0,602,603,
+ 5,38,0,0,603,132,1,0,0,0,604,605,5,60,0,0,605,606,5,60,0,0,606,134,
+ 1,0,0,0,607,608,5,62,0,0,608,609,5,62,0,0,609,136,1,0,0,0,610,611,
+ 5,43,0,0,611,138,1,0,0,0,612,613,5,45,0,0,613,140,1,0,0,0,614,615,
+ 5,47,0,0,615,142,1,0,0,0,616,617,5,37,0,0,617,144,1,0,0,0,618,619,
+ 5,47,0,0,619,620,5,47,0,0,620,146,1,0,0,0,621,622,5,126,0,0,622,
+ 148,1,0,0,0,623,624,5,123,0,0,624,625,6,74,5,0,625,150,1,0,0,0,626,
+ 627,5,125,0,0,627,628,6,75,6,0,628,152,1,0,0,0,629,630,5,60,0,0,
+ 630,154,1,0,0,0,631,632,5,62,0,0,632,156,1,0,0,0,633,634,5,61,0,
+ 0,634,635,5,61,0,0,635,158,1,0,0,0,636,637,5,62,0,0,637,638,5,61,
+ 0,0,638,160,1,0,0,0,639,640,5,60,0,0,640,641,5,61,0,0,641,162,1,
+ 0,0,0,642,643,5,60,0,0,643,644,5,62,0,0,644,164,1,0,0,0,645,646,
+ 5,33,0,0,646,647,5,61,0,0,647,166,1,0,0,0,648,649,5,64,0,0,649,168,
+ 1,0,0,0,650,651,5,45,0,0,651,652,5,62,0,0,652,170,1,0,0,0,653,654,
+ 5,43,0,0,654,655,5,61,0,0,655,172,1,0,0,0,656,657,5,45,0,0,657,658,
+ 5,61,0,0,658,174,1,0,0,0,659,660,5,42,0,0,660,661,5,61,0,0,661,176,
+ 1,0,0,0,662,663,5,64,0,0,663,664,5,61,0,0,664,178,1,0,0,0,665,666,
+ 5,47,0,0,666,667,5,61,0,0,667,180,1,0,0,0,668,669,5,37,0,0,669,670,
+ 5,61,0,0,670,182,1,0,0,0,671,672,5,38,0,0,672,673,5,61,0,0,673,184,
+ 1,0,0,0,674,675,5,124,0,0,675,676,5,61,0,0,676,186,1,0,0,0,677,678,
+ 5,94,0,0,678,679,5,61,0,0,679,188,1,0,0,0,680,681,5,60,0,0,681,682,
+ 5,60,0,0,682,683,5,61,0,0,683,190,1,0,0,0,684,685,5,62,0,0,685,686,
+ 5,62,0,0,686,687,5,61,0,0,687,192,1,0,0,0,688,689,5,42,0,0,689,690,
+ 5,42,0,0,690,691,5,61,0,0,691,194,1,0,0,0,692,693,5,47,0,0,693,694,
+ 5,47,0,0,694,695,5,61,0,0,695,196,1,0,0,0,696,700,3,245,122,0,697,
+ 700,3,247,123,0,698,700,3,249,124,0,699,696,1,0,0,0,699,697,1,0,
+ 0,0,699,698,1,0,0,0,700,701,1,0,0,0,701,702,6,98,7,0,702,198,1,0,
+ 0,0,703,704,9,0,0,0,704,200,1,0,0,0,705,710,5,39,0,0,706,709,3,209,
+ 104,0,707,709,8,7,0,0,708,706,1,0,0,0,708,707,1,0,0,0,709,712,1,
+ 0,0,0,710,708,1,0,0,0,710,711,1,0,0,0,711,713,1,0,0,0,712,710,1,
+ 0,0,0,713,724,5,39,0,0,714,719,5,34,0,0,715,718,3,209,104,0,716,
+ 718,8,8,0,0,717,715,1,0,0,0,717,716,1,0,0,0,718,721,1,0,0,0,719,
+ 717,1,0,0,0,719,720,1,0,0,0,720,722,1,0,0,0,721,719,1,0,0,0,722,
+ 724,5,34,0,0,723,705,1,0,0,0,723,714,1,0,0,0,724,202,1,0,0,0,725,
+ 726,5,39,0,0,726,727,5,39,0,0,727,728,5,39,0,0,728,732,1,0,0,0,729,
+ 731,3,205,102,0,730,729,1,0,0,0,731,734,1,0,0,0,732,733,1,0,0,0,
+ 732,730,1,0,0,0,733,735,1,0,0,0,734,732,1,0,0,0,735,736,5,39,0,0,
+ 736,737,5,39,0,0,737,752,5,39,0,0,738,739,5,34,0,0,739,740,5,34,
+ 0,0,740,741,5,34,0,0,741,745,1,0,0,0,742,744,3,205,102,0,743,742,
+ 1,0,0,0,744,747,1,0,0,0,745,746,1,0,0,0,745,743,1,0,0,0,746,748,
+ 1,0,0,0,747,745,1,0,0,0,748,749,5,34,0,0,749,750,5,34,0,0,750,752,
+ 5,34,0,0,751,725,1,0,0,0,751,738,1,0,0,0,752,204,1,0,0,0,753,756,
+ 3,207,103,0,754,756,3,209,104,0,755,753,1,0,0,0,755,754,1,0,0,0,
+ 756,206,1,0,0,0,757,758,8,9,0,0,758,208,1,0,0,0,759,760,5,92,0,0,
+ 760,764,9,0,0,0,761,762,5,92,0,0,762,764,3,83,41,0,763,759,1,0,0,
+ 0,763,761,1,0,0,0,764,210,1,0,0,0,765,766,7,10,0,0,766,212,1,0,0,
+ 0,767,768,7,11,0,0,768,214,1,0,0,0,769,770,7,12,0,0,770,216,1,0,
+ 0,0,771,772,7,13,0,0,772,218,1,0,0,0,773,774,7,14,0,0,774,220,1,
+ 0,0,0,775,777,3,225,112,0,776,775,1,0,0,0,776,777,1,0,0,0,777,778,
+ 1,0,0,0,778,783,3,227,113,0,779,780,3,225,112,0,780,781,5,46,0,0,
+ 781,783,1,0,0,0,782,776,1,0,0,0,782,779,1,0,0,0,783,222,1,0,0,0,
+ 784,787,3,225,112,0,785,787,3,221,110,0,786,784,1,0,0,0,786,785,
+ 1,0,0,0,787,788,1,0,0,0,788,789,3,229,114,0,789,224,1,0,0,0,790,
+ 792,3,213,106,0,791,790,1,0,0,0,792,793,1,0,0,0,793,791,1,0,0,0,
+ 793,794,1,0,0,0,794,226,1,0,0,0,795,797,5,46,0,0,796,798,3,213,106,
+ 0,797,796,1,0,0,0,798,799,1,0,0,0,799,797,1,0,0,0,799,800,1,0,0,
+ 0,800,228,1,0,0,0,801,803,7,15,0,0,802,804,7,16,0,0,803,802,1,0,
+ 0,0,803,804,1,0,0,0,804,806,1,0,0,0,805,807,3,213,106,0,806,805,
+ 1,0,0,0,807,808,1,0,0,0,808,806,1,0,0,0,808,809,1,0,0,0,809,230,
+ 1,0,0,0,810,815,5,39,0,0,811,814,3,237,118,0,812,814,3,243,121,0,
+ 813,811,1,0,0,0,813,812,1,0,0,0,814,817,1,0,0,0,815,813,1,0,0,0,
+ 815,816,1,0,0,0,816,818,1,0,0,0,817,815,1,0,0,0,818,829,5,39,0,0,
+ 819,824,5,34,0,0,820,823,3,239,119,0,821,823,3,243,121,0,822,820,
+ 1,0,0,0,822,821,1,0,0,0,823,826,1,0,0,0,824,822,1,0,0,0,824,825,
+ 1,0,0,0,825,827,1,0,0,0,826,824,1,0,0,0,827,829,5,34,0,0,828,810,
+ 1,0,0,0,828,819,1,0,0,0,829,232,1,0,0,0,830,831,5,39,0,0,831,832,
+ 5,39,0,0,832,833,5,39,0,0,833,837,1,0,0,0,834,836,3,235,117,0,835,
+ 834,1,0,0,0,836,839,1,0,0,0,837,838,1,0,0,0,837,835,1,0,0,0,838,
+ 840,1,0,0,0,839,837,1,0,0,0,840,841,5,39,0,0,841,842,5,39,0,0,842,
+ 857,5,39,0,0,843,844,5,34,0,0,844,845,5,34,0,0,845,846,5,34,0,0,
+ 846,850,1,0,0,0,847,849,3,235,117,0,848,847,1,0,0,0,849,852,1,0,
+ 0,0,850,851,1,0,0,0,850,848,1,0,0,0,851,853,1,0,0,0,852,850,1,0,
+ 0,0,853,854,5,34,0,0,854,855,5,34,0,0,855,857,5,34,0,0,856,830,1,
+ 0,0,0,856,843,1,0,0,0,857,234,1,0,0,0,858,861,3,241,120,0,859,861,
+ 3,243,121,0,860,858,1,0,0,0,860,859,1,0,0,0,861,236,1,0,0,0,862,
+ 864,7,17,0,0,863,862,1,0,0,0,864,238,1,0,0,0,865,867,7,18,0,0,866,
+ 865,1,0,0,0,867,240,1,0,0,0,868,870,7,19,0,0,869,868,1,0,0,0,870,
+ 242,1,0,0,0,871,872,5,92,0,0,872,873,7,20,0,0,873,244,1,0,0,0,874,
+ 876,7,21,0,0,875,874,1,0,0,0,876,877,1,0,0,0,877,875,1,0,0,0,877,
+ 878,1,0,0,0,878,246,1,0,0,0,879,883,5,35,0,0,880,882,8,22,0,0,881,
+ 880,1,0,0,0,882,885,1,0,0,0,883,881,1,0,0,0,883,884,1,0,0,0,884,
+ 248,1,0,0,0,885,883,1,0,0,0,886,888,5,92,0,0,887,889,3,245,122,0,
+ 888,887,1,0,0,0,888,889,1,0,0,0,889,895,1,0,0,0,890,892,5,13,0,0,
+ 891,890,1,0,0,0,891,892,1,0,0,0,892,893,1,0,0,0,893,896,5,10,0,0,
+ 894,896,2,12,13,0,895,891,1,0,0,0,895,894,1,0,0,0,896,250,1,0,0,
+ 0,897,898,7,23,0,0,898,252,1,0,0,0,899,900,7,24,0,0,900,254,1,0,
+ 0,0,901,904,7,25,0,0,902,904,3,251,125,0,903,901,1,0,0,0,903,902,
+ 1,0,0,0,904,256,1,0,0,0,905,909,3,255,127,0,906,909,7,26,0,0,907,
+ 909,3,253,126,0,908,905,1,0,0,0,908,906,1,0,0,0,908,907,1,0,0,0,
+ 909,258,1,0,0,0,58,0,261,266,272,480,484,487,489,497,505,509,516,
+ 520,526,532,534,541,548,555,559,563,699,708,710,717,719,723,732,
+ 745,751,755,763,776,782,786,793,799,803,808,813,815,822,824,828,
+ 837,850,856,860,863,866,869,877,883,888,891,895,903,908,8,1,41,0,
+ 1,54,1,1,55,2,1,61,3,1,62,4,1,74,5,1,75,6,6,0,0
+ ]
+
+class Python3Lexer(Python3LexerBase):
+
+ atn = ATNDeserializer().deserialize(serializedATN())
+
+ decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
+
+ INDENT = 1
+ DEDENT = 2
+ STRING = 3
+ NUMBER = 4
+ INTEGER = 5
+ AND = 6
+ AS = 7
+ ASSERT = 8
+ ASYNC = 9
+ AWAIT = 10
+ BREAK = 11
+ CASE = 12
+ CLASS = 13
+ CONTINUE = 14
+ DEF = 15
+ DEL = 16
+ ELIF = 17
+ ELSE = 18
+ EXCEPT = 19
+ FALSE = 20
+ FINALLY = 21
+ FOR = 22
+ FROM = 23
+ GLOBAL = 24
+ IF = 25
+ IMPORT = 26
+ IN = 27
+ IS = 28
+ LAMBDA = 29
+ MATCH = 30
+ NONE = 31
+ NONLOCAL = 32
+ NOT = 33
+ OR = 34
+ PASS = 35
+ RAISE = 36
+ RETURN = 37
+ TRUE = 38
+ TRY = 39
+ UNDERSCORE = 40
+ WHILE = 41
+ WITH = 42
+ YIELD = 43
+ NEWLINE = 44
+ NAME = 45
+ STRING_LITERAL = 46
+ BYTES_LITERAL = 47
+ DECIMAL_INTEGER = 48
+ OCT_INTEGER = 49
+ HEX_INTEGER = 50
+ BIN_INTEGER = 51
+ FLOAT_NUMBER = 52
+ IMAG_NUMBER = 53
+ DOT = 54
+ ELLIPSIS = 55
+ STAR = 56
+ OPEN_PAREN = 57
+ CLOSE_PAREN = 58
+ COMMA = 59
+ COLON = 60
+ SEMI_COLON = 61
+ POWER = 62
+ ASSIGN = 63
+ OPEN_BRACK = 64
+ CLOSE_BRACK = 65
+ OR_OP = 66
+ XOR = 67
+ AND_OP = 68
+ LEFT_SHIFT = 69
+ RIGHT_SHIFT = 70
+ ADD = 71
+ MINUS = 72
+ DIV = 73
+ MOD = 74
+ IDIV = 75
+ NOT_OP = 76
+ OPEN_BRACE = 77
+ CLOSE_BRACE = 78
+ LESS_THAN = 79
+ GREATER_THAN = 80
+ EQUALS = 81
+ GT_EQ = 82
+ LT_EQ = 83
+ NOT_EQ_1 = 84
+ NOT_EQ_2 = 85
+ AT = 86
+ ARROW = 87
+ ADD_ASSIGN = 88
+ SUB_ASSIGN = 89
+ MULT_ASSIGN = 90
+ AT_ASSIGN = 91
+ DIV_ASSIGN = 92
+ MOD_ASSIGN = 93
+ AND_ASSIGN = 94
+ OR_ASSIGN = 95
+ XOR_ASSIGN = 96
+ LEFT_SHIFT_ASSIGN = 97
+ RIGHT_SHIFT_ASSIGN = 98
+ POWER_ASSIGN = 99
+ IDIV_ASSIGN = 100
+ SKIP_ = 101
+ UNKNOWN_CHAR = 102
+
+ channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]
+
+ modeNames = [ "DEFAULT_MODE" ]
+
+ literalNames = [ "",
+ "'and'", "'as'", "'assert'", "'async'", "'await'", "'break'",
+ "'case'", "'class'", "'continue'", "'def'", "'del'", "'elif'",
+ "'else'", "'except'", "'False'", "'finally'", "'for'", "'from'",
+ "'global'", "'if'", "'import'", "'in'", "'is'", "'lambda'",
+ "'match'", "'None'", "'nonlocal'", "'not'", "'or'", "'pass'",
+ "'raise'", "'return'", "'True'", "'try'", "'_'", "'while'",
+ "'with'", "'yield'", "'.'", "'...'", "'*'", "'('", "')'", "','",
+ "':'", "';'", "'**'", "'='", "'['", "']'", "'|'", "'^'", "'&'",
+ "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'", "'//'", "'~'", "'{'",
+ "'}'", "'<'", "'>'", "'=='", "'>='", "'<='", "'<>'", "'!='",
+ "'@'", "'->'", "'+='", "'-='", "'*='", "'@='", "'/='", "'%='",
+ "'&='", "'|='", "'^='", "'<<='", "'>>='", "'**='", "'//='" ]
+
+ symbolicNames = [ "",
+ "INDENT", "DEDENT", "STRING", "NUMBER", "INTEGER", "AND", "AS",
+ "ASSERT", "ASYNC", "AWAIT", "BREAK", "CASE", "CLASS", "CONTINUE",
+ "DEF", "DEL", "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY",
+ "FOR", "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA",
+ "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS", "RAISE", "RETURN",
+ "TRUE", "TRY", "UNDERSCORE", "WHILE", "WITH", "YIELD", "NEWLINE",
+ "NAME", "STRING_LITERAL", "BYTES_LITERAL", "DECIMAL_INTEGER",
+ "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER",
+ "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN",
+ "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK",
+ "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT",
+ "ADD", "MINUS", "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE",
+ "CLOSE_BRACE", "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ",
+ "LT_EQ", "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN",
+ "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN",
+ "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_",
+ "UNKNOWN_CHAR" ]
+
+ ruleNames = [ "STRING", "NUMBER", "INTEGER", "AND", "AS", "ASSERT",
+ "ASYNC", "AWAIT", "BREAK", "CASE", "CLASS", "CONTINUE",
+ "DEF", "DEL", "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY",
+ "FOR", "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA",
+ "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS", "RAISE",
+ "RETURN", "TRUE", "TRY", "UNDERSCORE", "WHILE", "WITH",
+ "YIELD", "NEWLINE", "NAME", "STRING_LITERAL", "BYTES_LITERAL",
+ "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER",
+ "FLOAT_NUMBER", "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR",
+ "OPEN_PAREN", "CLOSE_PAREN", "COMMA", "COLON", "SEMI_COLON",
+ "POWER", "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", "OR_OP",
+ "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS",
+ "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE",
+ "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ",
+ "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", "SUB_ASSIGN",
+ "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN",
+ "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_",
+ "UNKNOWN_CHAR", "SHORT_STRING", "LONG_STRING", "LONG_STRING_ITEM",
+ "LONG_STRING_CHAR", "STRING_ESCAPE_SEQ", "NON_ZERO_DIGIT",
+ "DIGIT", "OCT_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "POINT_FLOAT",
+ "EXPONENT_FLOAT", "INT_PART", "FRACTION", "EXPONENT",
+ "SHORT_BYTES", "LONG_BYTES", "LONG_BYTES_ITEM", "SHORT_BYTES_CHAR_NO_SINGLE_QUOTE",
+ "SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE", "LONG_BYTES_CHAR",
+ "BYTES_ESCAPE_SEQ", "SPACES", "COMMENT", "LINE_JOINING",
+ "UNICODE_OIDS", "UNICODE_OIDC", "ID_START", "ID_CONTINUE" ]
+
+ grammarFileName = "Python3Lexer.g4"
+
+ def __init__(self, input=None, output:TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.checkVersion("4.13.1")
+ self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
+ self._actions = None
+ self._predicates = None
+
+
+ def action(self, localctx:RuleContext, ruleIndex:int, actionIndex:int):
+ if self._actions is None:
+ actions = dict()
+ actions[41] = self.NEWLINE_action
+ actions[54] = self.OPEN_PAREN_action
+ actions[55] = self.CLOSE_PAREN_action
+ actions[61] = self.OPEN_BRACK_action
+ actions[62] = self.CLOSE_BRACK_action
+ actions[74] = self.OPEN_BRACE_action
+ actions[75] = self.CLOSE_BRACE_action
+ self._actions = actions
+ action = self._actions.get(ruleIndex, None)
+ if action is not None:
+ action(localctx, actionIndex)
+ else:
+ raise Exception("No registered action for:" + str(ruleIndex))
+
+
+ def NEWLINE_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 0:
+ self.onNewLine();
+
+
+ def OPEN_PAREN_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 1:
+ self.openBrace();
+
+
+ def CLOSE_PAREN_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 2:
+ self.closeBrace();
+
+
+ def OPEN_BRACK_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 3:
+ self.openBrace();
+
+
+ def CLOSE_BRACK_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 4:
+ self.closeBrace();
+
+
+ def OPEN_BRACE_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 5:
+ self.openBrace();
+
+
+ def CLOSE_BRACE_action(self, localctx:RuleContext , actionIndex:int):
+ if actionIndex == 6:
+ self.closeBrace();
+
+
+ def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int):
+ if self._predicates is None:
+ preds = dict()
+ preds[41] = self.NEWLINE_sempred
+ self._predicates = preds
+ pred = self._predicates.get(ruleIndex, None)
+ if pred is not None:
+ return pred(localctx, predIndex)
+ else:
+ raise Exception("No registered predicate for:" + str(ruleIndex))
+
+ def NEWLINE_sempred(self, localctx:RuleContext, predIndex:int):
+ if predIndex == 0:
+ return self.atStartOfInput()
+
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py
new file mode 100644
index 000000000..d82bfbb78
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py
@@ -0,0 +1,101 @@
+from typing import TextIO
+from antlr4 import *
+from antlr4.Token import CommonToken
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser
+
+import sys
+from typing import TextIO
+import re
+
+
+class Python3LexerBase(Lexer):
+ NEW_LINE_PATTERN = re.compile('[^\r\n\f]+')
+ SPACES_PATTERN = re.compile('[\r\n\f]+')
+
+ def __init__(self, input: InputStream, output: TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.tokens = []
+ self.indents = []
+ self.opened = 0
+
+ def reset(self):
+ self.tokens = []
+ self.indents = []
+ self.opened = 0
+ super().reset()
+
+ def emitToken(self, token):
+ self._token = token
+ self.tokens.append(token)
+
+ def nextToken(self):
+ # Check if the end-of-file is ahead and there are still some DEDENTS expected.
+ if self._input.LA(1) == Python3Parser.EOF and len(self.indents) != 0:
+ # Remove any trailing EOF tokens from our buffer.
+ self.tokens = [token for token in self.tokens if token.type != Python3Parser.EOF]
+
+ # First emit an extra line break that serves as the end of the statement.
+ self.emitToken(self.commonToken(Python3Parser.NEWLINE, '\n'))
+
+ # Now emit as much DEDENT tokens as needed.
+ while len(self.indents) != 0:
+ self.emitToken(self.createDedent())
+ self.indents.pop()
+
+ # Put the EOF back on the token stream.
+ self.emitToken(self.commonToken(Python3Parser.EOF, ''))
+
+ next_ = super().nextToken()
+ return next_ if len(self.tokens) == 0 else self.tokens.pop(0)
+
+ def createDedent(self):
+ return self.commonToken(Python3Parser.DEDENT, '')
+
+ def commonToken(self, type_: int, text: str):
+ stop = self.getCharIndex() - 1
+ start = stop if text == '' else stop - len(text) + 1
+ return CommonToken(self._tokenFactorySourcePair, type_, Lexer.DEFAULT_TOKEN_CHANNEL, start, stop)
+
+ def getIndentationCount(self, whitespace: str):
+ count = 0
+ for c in whitespace:
+ if c == '\t':
+ count += 8 - count % 8
+ else:
+ count += 1
+ return count
+
+ def atStartOfInput(self):
+ return self.getCharIndex() == 0
+
+ def openBrace(self):
+ self.opened += 1
+
+ def closeBrace(self):
+ self.opened -= 1
+
+ def onNewLine(self):
+ new_line = self.NEW_LINE_PATTERN.sub('', self.text)
+ spaces = self.SPACES_PATTERN.sub('', self.text)
+
+ # Strip newlines inside open clauses except if we are near EOF. We keep NEWLINEs near EOF to
+ # satisfy the final newline needed by the single_put rule used by the REPL.
+ next_ = self._input.LA(1)
+ next_next = self._input.LA(2)
+
+ if self.opened > 0 or (next_next != -1 and next_ in (10, 13, 35)):
+ self.skip()
+ else:
+ self.emitToken(self.commonToken(Python3Parser.NEWLINE, new_line))
+ indent = self.getIndentationCount(spaces)
+ previous = 0 if len(self.indents) == 0 else self.indents[-1]
+
+ if indent == previous:
+ self.skip()
+ elif indent > previous:
+ self.indents.append(indent)
+ self.emitToken(self.commonToken(Python3Parser.INDENT, spaces))
+ else:
+ while len(self.indents) > 0 and self.indents[-1] > indent:
+ self.emitToken(self.createDedent())
+ self.indents.pop()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py
new file mode 100644
index 000000000..1f41fb8df
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py
@@ -0,0 +1,52 @@
+from antlr4 import ParseTreeListener
+
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3ParserListener import Python3ParserListener
+from dataclasses import dataclass
+
+
+@dataclass
+class MethodNode:
+ def __init__(self, line_start, line_end, source_code, name, ast_string):
+ self.line_start = line_start
+ self.line_end = line_end
+ self.source_code = source_code
+ self.name = name
+ self.ast_string = ast_string
+
+
+class MethodParserListener(Python3ParserListener):
+ def __init__(self, parser):
+ self.methods = []
+ self.parser = parser
+
+ def enterFuncdef(self, ctx: Python3Parser.FuncdefContext):
+ # Initialize the method name as None
+ method_name = None
+
+ # Iterate over the children of the context to find the method name
+ for child in ctx.children:
+ if isinstance(child, Python3Parser.NameContext):
+ method_name = child.getText()
+ break
+
+ # If method name is not found, set it to "Unknown"
+ if method_name is None:
+ method_name = "Unknown"
+
+ ast_string = ctx.toStringTree(recog=self.parser)
+
+ # Create a MethodNode for the method
+ method_node = MethodNode(
+ line_start=ctx.start.line,
+ line_end=ctx.stop.line,
+ source_code=ctx.start.source[1].getText(ctx.start.start, ctx.stop.stop),
+ name=method_name,
+ ast_string=ast_string
+ )
+
+ self.methods.append(method_node)
+
+ def enterIdentifier(self, ctx):
+ if self.methods and self.methods[-1].name is None:
+ self.methods[-1].name = ctx.getText()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py
new file mode 100644
index 000000000..d7aaf94de
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py
@@ -0,0 +1,10288 @@
+# Generated from Python3Parser.g4 by ANTLR 4.13.1
+# encoding: utf-8
+from antlr4 import *
+from io import StringIO
+import sys
+
+if sys.version_info[1] > 5:
+ from typing import TextIO
+else:
+ from typing import TextIO
+
+if "." in __name__:
+ from .Python3ParserBase import Python3ParserBase
+else:
+ from Python3ParserBase import Python3ParserBase
+
+
+def serializedATN():
+ return [
+ 4, 1, 102, 1435, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6,
+ 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7,
+ 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2,
+ 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7,
+ 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2,
+ 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7,
+ 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2,
+ 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7,
+ 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2,
+ 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7,
+ 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2,
+ 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7,
+ 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2,
+ 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7,
+ 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2,
+ 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103,
+ 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109,
+ 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114,
+ 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 1, 0, 1, 0, 1, 0, 1, 0,
+ 1, 0, 3, 0, 244, 8, 0, 1, 1, 1, 1, 5, 1, 248, 8, 1, 10, 1, 12, 1, 251, 9, 1, 1, 1, 1, 1, 1,
+ 2, 1, 2, 5, 2, 257, 8, 2, 10, 2, 12, 2, 260, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3,
+ 268, 8, 3, 1, 3, 3, 3, 271, 8, 3, 1, 3, 1, 3, 1, 4, 4, 4, 276, 8, 4, 11, 4, 12, 4, 277, 1,
+ 5, 1, 5, 1, 5, 1, 5, 3, 5, 284, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 294,
+ 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 3, 8, 301, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 308,
+ 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 314, 8, 9, 5, 9, 316, 8, 9, 10, 9, 12, 9, 319, 9, 9, 1,
+ 9, 1, 9, 1, 9, 3, 9, 324, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 330, 8, 9, 5, 9, 332, 8, 9, 10,
+ 9, 12, 9, 335, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 341, 8, 9, 3, 9, 343, 8, 9, 3, 9, 345, 8,
+ 9, 1, 9, 1, 9, 1, 9, 3, 9, 350, 8, 9, 3, 9, 352, 8, 9, 3, 9, 354, 8, 9, 1, 9, 1, 9, 3, 9, 358,
+ 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 364, 8, 9, 5, 9, 366, 8, 9, 10, 9, 12, 9, 369, 9, 9, 1,
+ 9, 1, 9, 1, 9, 1, 9, 3, 9, 375, 8, 9, 3, 9, 377, 8, 9, 3, 9, 379, 8, 9, 1, 9, 1, 9, 1, 9, 3,
+ 9, 384, 8, 9, 3, 9, 386, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 391, 8, 10, 1, 11, 1, 11, 1, 11,
+ 3, 11, 396, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 402, 8, 11, 5, 11, 404, 8, 11, 10,
+ 11, 12, 11, 407, 9, 11, 1, 11, 1, 11, 1, 11, 3, 11, 412, 8, 11, 1, 11, 1, 11, 1, 11, 1,
+ 11, 3, 11, 418, 8, 11, 5, 11, 420, 8, 11, 10, 11, 12, 11, 423, 9, 11, 1, 11, 1, 11, 1,
+ 11, 1, 11, 3, 11, 429, 8, 11, 3, 11, 431, 8, 11, 3, 11, 433, 8, 11, 1, 11, 1, 11, 1, 11,
+ 3, 11, 438, 8, 11, 3, 11, 440, 8, 11, 3, 11, 442, 8, 11, 1, 11, 1, 11, 3, 11, 446, 8, 11,
+ 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 452, 8, 11, 5, 11, 454, 8, 11, 10, 11, 12, 11, 457,
+ 9, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 463, 8, 11, 3, 11, 465, 8, 11, 3, 11, 467, 8,
+ 11, 1, 11, 1, 11, 1, 11, 3, 11, 472, 8, 11, 3, 11, 474, 8, 11, 1, 12, 1, 12, 1, 13, 1, 13,
+ 3, 13, 480, 8, 13, 1, 14, 1, 14, 1, 14, 5, 14, 485, 8, 14, 10, 14, 12, 14, 488, 9, 14,
+ 1, 14, 3, 14, 491, 8, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
+ 1, 15, 3, 15, 503, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 510, 8, 16, 1, 16, 1,
+ 16, 1, 16, 3, 16, 515, 8, 16, 5, 16, 517, 8, 16, 10, 16, 12, 16, 520, 9, 16, 3, 16, 522,
+ 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 528, 8, 17, 1, 18, 1, 18, 3, 18, 532, 8, 18, 1,
+ 18, 1, 18, 1, 18, 3, 18, 537, 8, 18, 5, 18, 539, 8, 18, 10, 18, 12, 18, 542, 9, 18, 1,
+ 18, 3, 18, 545, 8, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1,
+ 22, 1, 22, 1, 22, 3, 22, 559, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 3, 25, 567,
+ 8, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 575, 8, 27, 3, 27, 577, 8, 27, 1,
+ 28, 1, 28, 3, 28, 581, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 5, 30, 588, 8, 30, 10,
+ 30, 12, 30, 591, 9, 30, 1, 30, 1, 30, 4, 30, 595, 8, 30, 11, 30, 12, 30, 596, 3, 30, 599,
+ 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 608, 8, 30, 1, 31, 1, 31,
+ 1, 31, 3, 31, 613, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 618, 8, 32, 1, 33, 1, 33, 1, 33, 5,
+ 33, 623, 8, 33, 10, 33, 12, 33, 626, 9, 33, 1, 33, 3, 33, 629, 8, 33, 1, 34, 1, 34, 1,
+ 34, 5, 34, 634, 8, 34, 10, 34, 12, 34, 637, 9, 34, 1, 35, 1, 35, 1, 35, 5, 35, 642, 8,
+ 35, 10, 35, 12, 35, 645, 9, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 651, 8, 36, 10, 36,
+ 12, 36, 654, 9, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 660, 8, 37, 10, 37, 12, 37, 663,
+ 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 669, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39,
+ 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 681, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40,
+ 687, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 698, 8,
+ 41, 10, 41, 12, 41, 701, 9, 41, 1, 41, 1, 41, 1, 41, 3, 41, 706, 8, 41, 1, 42, 1, 42, 1,
+ 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 715, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1,
+ 43, 1, 43, 1, 43, 1, 43, 3, 43, 726, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1,
+ 44, 4, 44, 735, 8, 44, 11, 44, 12, 44, 736, 1, 44, 1, 44, 1, 44, 3, 44, 742, 8, 44, 1,
+ 44, 1, 44, 1, 44, 3, 44, 747, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 752, 8, 44, 1, 45, 1, 45,
+ 1, 45, 1, 45, 5, 45, 758, 8, 45, 10, 45, 12, 45, 761, 9, 45, 1, 45, 1, 45, 1, 45, 1, 46,
+ 1, 46, 1, 46, 3, 46, 769, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 775, 8, 47, 3, 47, 777,
+ 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 4, 48, 783, 8, 48, 11, 48, 12, 48, 784, 1, 48, 1, 48,
+ 3, 48, 789, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 797, 8, 49, 11, 49,
+ 12, 49, 798, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 3, 50, 806, 8, 50, 1, 50, 3, 50, 809, 8,
+ 50, 1, 51, 1, 51, 4, 51, 813, 8, 51, 11, 51, 12, 51, 814, 1, 51, 3, 51, 818, 8, 51, 1,
+ 52, 1, 52, 1, 52, 3, 52, 823, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 828, 8, 53, 1, 53, 1, 53,
+ 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 838, 8, 55, 1, 56, 1, 56, 3, 56, 842, 8,
+ 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 851, 8, 58, 10, 58, 12, 58,
+ 854, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 864, 8, 59, 1,
+ 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 874, 8, 60, 1, 61, 1, 61, 1,
+ 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 884, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1,
+ 62, 1, 62, 1, 62, 1, 62, 3, 62, 894, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 899, 8, 63, 1, 64,
+ 1, 64, 1, 64, 3, 64, 904, 8, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68,
+ 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 4, 71, 923, 8, 71, 11, 71,
+ 12, 71, 924, 1, 72, 1, 72, 3, 72, 929, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74,
+ 3, 74, 937, 8, 74, 1, 74, 1, 74, 1, 74, 3, 74, 942, 8, 74, 1, 74, 3, 74, 945, 8, 74, 1,
+ 75, 1, 75, 1, 75, 3, 75, 950, 8, 75, 1, 76, 1, 76, 1, 76, 5, 76, 955, 8, 76, 10, 76, 12,
+ 76, 958, 9, 76, 1, 76, 3, 76, 961, 8, 76, 1, 77, 1, 77, 3, 77, 965, 8, 77, 1, 78, 1, 78,
+ 1, 78, 1, 78, 3, 78, 971, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 978, 8, 79, 1,
+ 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 987, 8, 79, 1, 79, 1, 79, 1, 79, 1,
+ 79, 1, 79, 3, 79, 994, 8, 79, 1, 79, 1, 79, 3, 79, 998, 8, 79, 1, 80, 1, 80, 1, 80, 5, 80,
+ 1003, 8, 80, 10, 80, 12, 80, 1006, 9, 80, 1, 81, 1, 81, 3, 81, 1010, 8, 81, 1, 81, 1,
+ 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3,
+ 83, 1026, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1034, 8, 83, 1, 83, 1,
+ 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1044, 8, 83, 1, 83, 1, 83, 3, 83, 1048,
+ 8, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1053, 8, 84, 10, 84, 12, 84, 1056, 9, 84, 1, 85, 1,
+ 85, 1, 85, 5, 85, 1061, 8, 85, 10, 85, 12, 85, 1064, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86,
+ 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1076, 8, 87, 1, 87, 3, 87, 1079, 8, 87,
+ 1, 88, 1, 88, 3, 88, 1083, 8, 88, 1, 89, 1, 89, 3, 89, 1087, 8, 89, 1, 89, 1, 89, 1, 89,
+ 1, 90, 1, 90, 3, 90, 1094, 8, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 5, 91, 1102,
+ 8, 91, 10, 91, 12, 91, 1105, 9, 91, 1, 92, 1, 92, 1, 92, 5, 92, 1110, 8, 92, 10, 92, 12,
+ 92, 1113, 9, 92, 1, 93, 1, 93, 1, 93, 3, 93, 1118, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 5,
+ 94, 1124, 8, 94, 10, 94, 12, 94, 1127, 9, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95,
+ 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1142, 8, 95, 1, 96, 1, 96, 1, 96,
+ 1, 97, 1, 97, 1, 97, 4, 97, 1150, 8, 97, 11, 97, 12, 97, 1151, 1, 97, 3, 97, 1155, 8,
+ 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1,
+ 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 1178, 8, 97, 10, 97,
+ 12, 97, 1181, 9, 97, 1, 98, 3, 98, 1184, 8, 98, 1, 98, 1, 98, 5, 98, 1188, 8, 98, 10,
+ 98, 12, 98, 1191, 9, 98, 1, 99, 1, 99, 1, 99, 3, 99, 1196, 8, 99, 1, 99, 1, 99, 1, 99,
+ 3, 99, 1201, 8, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1206, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99,
+ 4, 99, 1212, 8, 99, 11, 99, 12, 99, 1213, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1220, 8,
+ 99, 1, 100, 1, 100, 1, 101, 1, 101, 3, 101, 1226, 8, 101, 1, 101, 1, 101, 1, 101, 1,
+ 101, 3, 101, 1232, 8, 101, 5, 101, 1234, 8, 101, 10, 101, 12, 101, 1237, 9, 101, 1,
+ 101, 3, 101, 1240, 8, 101, 3, 101, 1242, 8, 101, 1, 102, 1, 102, 3, 102, 1246, 8, 102,
+ 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1255, 8, 102, 1, 103,
+ 1, 103, 1, 103, 5, 103, 1260, 8, 103, 10, 103, 12, 103, 1263, 9, 103, 1, 103, 3, 103,
+ 1266, 8, 103, 1, 104, 1, 104, 3, 104, 1270, 8, 104, 1, 104, 1, 104, 3, 104, 1274, 8,
+ 104, 1, 104, 3, 104, 1277, 8, 104, 3, 104, 1279, 8, 104, 1, 105, 1, 105, 3, 105, 1283,
+ 8, 105, 1, 106, 1, 106, 3, 106, 1287, 8, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1292,
+ 8, 106, 5, 106, 1294, 8, 106, 10, 106, 12, 106, 1297, 9, 106, 1, 106, 3, 106, 1300,
+ 8, 106, 1, 107, 1, 107, 1, 107, 5, 107, 1305, 8, 107, 10, 107, 12, 107, 1308, 9, 107,
+ 1, 107, 3, 107, 1311, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108,
+ 1319, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108,
+ 1329, 8, 108, 5, 108, 1331, 8, 108, 10, 108, 12, 108, 1334, 9, 108, 1, 108, 3, 108,
+ 1337, 8, 108, 3, 108, 1339, 8, 108, 1, 108, 1, 108, 3, 108, 1343, 8, 108, 1, 108, 1,
+ 108, 1, 108, 1, 108, 3, 108, 1349, 8, 108, 5, 108, 1351, 8, 108, 10, 108, 12, 108,
+ 1354, 9, 108, 1, 108, 3, 108, 1357, 8, 108, 3, 108, 1359, 8, 108, 3, 108, 1361, 8,
+ 108, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 1367, 8, 109, 1, 109, 3, 109, 1370, 8,
+ 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 5, 110, 1378, 8, 110, 10, 110,
+ 12, 110, 1381, 9, 110, 1, 110, 3, 110, 1384, 8, 110, 1, 111, 1, 111, 3, 111, 1388,
+ 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1398,
+ 8, 111, 1, 112, 1, 112, 3, 112, 1402, 8, 112, 1, 113, 3, 113, 1405, 8, 113, 1, 113,
+ 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1412, 8, 113, 1, 114, 1, 114, 1, 114, 3, 114,
+ 1417, 8, 114, 1, 115, 1, 115, 1, 116, 1, 116, 3, 116, 1423, 8, 116, 1, 117, 1, 117,
+ 1, 117, 3, 117, 1428, 8, 117, 1, 118, 4, 118, 1431, 8, 118, 11, 118, 12, 118, 1432,
+ 1, 118, 0, 1, 194, 119, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,
+ 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
+ 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114,
+ 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146,
+ 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178,
+ 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210,
+ 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 0, 7, 1, 0, 88, 100,
+ 1, 0, 54, 55, 2, 0, 71, 72, 76, 76, 3, 0, 56, 56, 73, 75, 86, 86, 1, 0, 71, 72, 1, 0, 69,
+ 70, 3, 0, 30, 30, 40, 40, 45, 45, 1586, 0, 243, 1, 0, 0, 0, 2, 249, 1, 0, 0, 0, 4, 254,
+ 1, 0, 0, 0, 6, 263, 1, 0, 0, 0, 8, 275, 1, 0, 0, 0, 10, 279, 1, 0, 0, 0, 12, 285, 1, 0, 0,
+ 0, 14, 288, 1, 0, 0, 0, 16, 298, 1, 0, 0, 0, 18, 385, 1, 0, 0, 0, 20, 387, 1, 0, 0, 0, 22,
+ 473, 1, 0, 0, 0, 24, 475, 1, 0, 0, 0, 26, 479, 1, 0, 0, 0, 28, 481, 1, 0, 0, 0, 30, 502,
+ 1, 0, 0, 0, 32, 504, 1, 0, 0, 0, 34, 523, 1, 0, 0, 0, 36, 531, 1, 0, 0, 0, 38, 546, 1, 0,
+ 0, 0, 40, 548, 1, 0, 0, 0, 42, 551, 1, 0, 0, 0, 44, 558, 1, 0, 0, 0, 46, 560, 1, 0, 0, 0,
+ 48, 562, 1, 0, 0, 0, 50, 564, 1, 0, 0, 0, 52, 568, 1, 0, 0, 0, 54, 570, 1, 0, 0, 0, 56, 580,
+ 1, 0, 0, 0, 58, 582, 1, 0, 0, 0, 60, 585, 1, 0, 0, 0, 62, 609, 1, 0, 0, 0, 64, 614, 1, 0,
+ 0, 0, 66, 619, 1, 0, 0, 0, 68, 630, 1, 0, 0, 0, 70, 638, 1, 0, 0, 0, 72, 646, 1, 0, 0, 0,
+ 74, 655, 1, 0, 0, 0, 76, 664, 1, 0, 0, 0, 78, 680, 1, 0, 0, 0, 80, 682, 1, 0, 0, 0, 82, 688,
+ 1, 0, 0, 0, 84, 707, 1, 0, 0, 0, 86, 716, 1, 0, 0, 0, 88, 727, 1, 0, 0, 0, 90, 753, 1, 0,
+ 0, 0, 92, 765, 1, 0, 0, 0, 94, 770, 1, 0, 0, 0, 96, 788, 1, 0, 0, 0, 98, 790, 1, 0, 0, 0,
+ 100, 808, 1, 0, 0, 0, 102, 810, 1, 0, 0, 0, 104, 822, 1, 0, 0, 0, 106, 824, 1, 0, 0, 0,
+ 108, 832, 1, 0, 0, 0, 110, 837, 1, 0, 0, 0, 112, 841, 1, 0, 0, 0, 114, 843, 1, 0, 0, 0,
+ 116, 847, 1, 0, 0, 0, 118, 863, 1, 0, 0, 0, 120, 873, 1, 0, 0, 0, 122, 883, 1, 0, 0, 0,
+ 124, 893, 1, 0, 0, 0, 126, 898, 1, 0, 0, 0, 128, 903, 1, 0, 0, 0, 130, 905, 1, 0, 0, 0,
+ 132, 907, 1, 0, 0, 0, 134, 909, 1, 0, 0, 0, 136, 911, 1, 0, 0, 0, 138, 914, 1, 0, 0, 0,
+ 140, 916, 1, 0, 0, 0, 142, 919, 1, 0, 0, 0, 144, 928, 1, 0, 0, 0, 146, 930, 1, 0, 0, 0,
+ 148, 944, 1, 0, 0, 0, 150, 946, 1, 0, 0, 0, 152, 951, 1, 0, 0, 0, 154, 964, 1, 0, 0, 0,
+ 156, 970, 1, 0, 0, 0, 158, 997, 1, 0, 0, 0, 160, 999, 1, 0, 0, 0, 162, 1009, 1, 0, 0, 0,
+ 164, 1014, 1, 0, 0, 0, 166, 1047, 1, 0, 0, 0, 168, 1049, 1, 0, 0, 0, 170, 1057, 1, 0,
+ 0, 0, 172, 1065, 1, 0, 0, 0, 174, 1078, 1, 0, 0, 0, 176, 1082, 1, 0, 0, 0, 178, 1084,
+ 1, 0, 0, 0, 180, 1091, 1, 0, 0, 0, 182, 1098, 1, 0, 0, 0, 184, 1106, 1, 0, 0, 0, 186, 1117,
+ 1, 0, 0, 0, 188, 1119, 1, 0, 0, 0, 190, 1141, 1, 0, 0, 0, 192, 1143, 1, 0, 0, 0, 194, 1154,
+ 1, 0, 0, 0, 196, 1183, 1, 0, 0, 0, 198, 1219, 1, 0, 0, 0, 200, 1221, 1, 0, 0, 0, 202, 1225,
+ 1, 0, 0, 0, 204, 1254, 1, 0, 0, 0, 206, 1256, 1, 0, 0, 0, 208, 1278, 1, 0, 0, 0, 210, 1280,
+ 1, 0, 0, 0, 212, 1286, 1, 0, 0, 0, 214, 1301, 1, 0, 0, 0, 216, 1360, 1, 0, 0, 0, 218, 1362,
+ 1, 0, 0, 0, 220, 1374, 1, 0, 0, 0, 222, 1397, 1, 0, 0, 0, 224, 1401, 1, 0, 0, 0, 226, 1404,
+ 1, 0, 0, 0, 228, 1413, 1, 0, 0, 0, 230, 1418, 1, 0, 0, 0, 232, 1420, 1, 0, 0, 0, 234, 1427,
+ 1, 0, 0, 0, 236, 1430, 1, 0, 0, 0, 238, 244, 5, 44, 0, 0, 239, 244, 3, 28, 14, 0, 240,
+ 241, 3, 78, 39, 0, 241, 242, 5, 44, 0, 0, 242, 244, 1, 0, 0, 0, 243, 238, 1, 0, 0, 0, 243,
+ 239, 1, 0, 0, 0, 243, 240, 1, 0, 0, 0, 244, 1, 1, 0, 0, 0, 245, 248, 5, 44, 0, 0, 246, 248,
+ 3, 26, 13, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247,
+ 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 252, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 253,
+ 5, 0, 0, 1, 253, 3, 1, 0, 0, 0, 254, 258, 3, 214, 107, 0, 255, 257, 5, 44, 0, 0, 256, 255,
+ 1, 0, 0, 0, 257, 260, 1, 0, 0, 0, 258, 256, 1, 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 261,
+ 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 262, 5, 0, 0, 1, 262, 5, 1, 0, 0, 0, 263, 264, 5,
+ 86, 0, 0, 264, 270, 3, 70, 35, 0, 265, 267, 5, 57, 0, 0, 266, 268, 3, 220, 110, 0, 267,
+ 266, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 271, 5, 58, 0, 0, 270,
+ 265, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 273, 5, 44, 0, 0, 273,
+ 7, 1, 0, 0, 0, 274, 276, 3, 6, 3, 0, 275, 274, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 275,
+ 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 9, 1, 0, 0, 0, 279, 283, 3, 8, 4, 0, 280, 284, 3,
+ 218, 109, 0, 281, 284, 3, 14, 7, 0, 282, 284, 3, 12, 6, 0, 283, 280, 1, 0, 0, 0, 283,
+ 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 11, 1, 0, 0, 0, 285, 286, 5, 9, 0, 0, 286, 287,
+ 3, 14, 7, 0, 287, 13, 1, 0, 0, 0, 288, 289, 5, 15, 0, 0, 289, 290, 3, 200, 100, 0, 290,
+ 293, 3, 16, 8, 0, 291, 292, 5, 87, 0, 0, 292, 294, 3, 174, 87, 0, 293, 291, 1, 0, 0, 0,
+ 293, 294, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 296, 5, 60, 0, 0, 296, 297, 3, 96, 48,
+ 0, 297, 15, 1, 0, 0, 0, 298, 300, 5, 57, 0, 0, 299, 301, 3, 18, 9, 0, 300, 299, 1, 0, 0,
+ 0, 300, 301, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 5, 58, 0, 0, 303, 17, 1, 0, 0,
+ 0, 304, 307, 3, 20, 10, 0, 305, 306, 5, 63, 0, 0, 306, 308, 3, 174, 87, 0, 307, 305,
+ 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 317, 1, 0, 0, 0, 309, 310, 5, 59, 0, 0, 310, 313,
+ 3, 20, 10, 0, 311, 312, 5, 63, 0, 0, 312, 314, 3, 174, 87, 0, 313, 311, 1, 0, 0, 0, 313,
+ 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317,
+ 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 353, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320,
+ 351, 5, 59, 0, 0, 321, 323, 5, 56, 0, 0, 322, 324, 3, 20, 10, 0, 323, 322, 1, 0, 0, 0,
+ 323, 324, 1, 0, 0, 0, 324, 333, 1, 0, 0, 0, 325, 326, 5, 59, 0, 0, 326, 329, 3, 20, 10,
+ 0, 327, 328, 5, 63, 0, 0, 328, 330, 3, 174, 87, 0, 329, 327, 1, 0, 0, 0, 329, 330, 1,
+ 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 325, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1,
+ 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 344, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 342, 5,
+ 59, 0, 0, 337, 338, 5, 62, 0, 0, 338, 340, 3, 20, 10, 0, 339, 341, 5, 59, 0, 0, 340, 339,
+ 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 1, 0, 0, 0, 342, 337, 1, 0, 0, 0, 342, 343,
+ 1, 0, 0, 0, 343, 345, 1, 0, 0, 0, 344, 336, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 352,
+ 1, 0, 0, 0, 346, 347, 5, 62, 0, 0, 347, 349, 3, 20, 10, 0, 348, 350, 5, 59, 0, 0, 349,
+ 348, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 352, 1, 0, 0, 0, 351, 321, 1, 0, 0, 0, 351,
+ 346, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 320, 1, 0, 0, 0, 353,
+ 354, 1, 0, 0, 0, 354, 386, 1, 0, 0, 0, 355, 357, 5, 56, 0, 0, 356, 358, 3, 20, 10, 0, 357,
+ 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 367, 1, 0, 0, 0, 359, 360, 5, 59, 0, 0, 360,
+ 363, 3, 20, 10, 0, 361, 362, 5, 63, 0, 0, 362, 364, 3, 174, 87, 0, 363, 361, 1, 0, 0,
+ 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 359, 1, 0, 0, 0, 366, 369, 1, 0, 0,
+ 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 378, 1, 0, 0, 0, 369, 367, 1, 0, 0,
+ 0, 370, 376, 5, 59, 0, 0, 371, 372, 5, 62, 0, 0, 372, 374, 3, 20, 10, 0, 373, 375, 5,
+ 59, 0, 0, 374, 373, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 371, 1,
+ 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 379, 1, 0, 0, 0, 378, 370, 1, 0, 0, 0, 378, 379, 1,
+ 0, 0, 0, 379, 386, 1, 0, 0, 0, 380, 381, 5, 62, 0, 0, 381, 383, 3, 20, 10, 0, 382, 384,
+ 5, 59, 0, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 304,
+ 1, 0, 0, 0, 385, 355, 1, 0, 0, 0, 385, 380, 1, 0, 0, 0, 386, 19, 1, 0, 0, 0, 387, 390, 3,
+ 200, 100, 0, 388, 389, 5, 60, 0, 0, 389, 391, 3, 174, 87, 0, 390, 388, 1, 0, 0, 0, 390,
+ 391, 1, 0, 0, 0, 391, 21, 1, 0, 0, 0, 392, 395, 3, 24, 12, 0, 393, 394, 5, 63, 0, 0, 394,
+ 396, 3, 174, 87, 0, 395, 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 405, 1, 0, 0, 0, 397,
+ 398, 5, 59, 0, 0, 398, 401, 3, 24, 12, 0, 399, 400, 5, 63, 0, 0, 400, 402, 3, 174, 87,
+ 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 404, 1, 0, 0, 0, 403, 397, 1, 0, 0,
+ 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 441, 1, 0, 0,
+ 0, 407, 405, 1, 0, 0, 0, 408, 439, 5, 59, 0, 0, 409, 411, 5, 56, 0, 0, 410, 412, 3, 24,
+ 12, 0, 411, 410, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 421, 1, 0, 0, 0, 413, 414, 5, 59,
+ 0, 0, 414, 417, 3, 24, 12, 0, 415, 416, 5, 63, 0, 0, 416, 418, 3, 174, 87, 0, 417, 415,
+ 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 420, 1, 0, 0, 0, 419, 413, 1, 0, 0, 0, 420, 423,
+ 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 432, 1, 0, 0, 0, 423, 421,
+ 1, 0, 0, 0, 424, 430, 5, 59, 0, 0, 425, 426, 5, 62, 0, 0, 426, 428, 3, 24, 12, 0, 427,
+ 429, 5, 59, 0, 0, 428, 427, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 431, 1, 0, 0, 0, 430,
+ 425, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 433, 1, 0, 0, 0, 432, 424, 1, 0, 0, 0, 432,
+ 433, 1, 0, 0, 0, 433, 440, 1, 0, 0, 0, 434, 435, 5, 62, 0, 0, 435, 437, 3, 24, 12, 0, 436,
+ 438, 5, 59, 0, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 440, 1, 0, 0, 0, 439,
+ 409, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 442, 1, 0, 0, 0, 441,
+ 408, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 474, 1, 0, 0, 0, 443, 445, 5, 56, 0, 0, 444,
+ 446, 3, 24, 12, 0, 445, 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 455, 1, 0, 0, 0, 447,
+ 448, 5, 59, 0, 0, 448, 451, 3, 24, 12, 0, 449, 450, 5, 63, 0, 0, 450, 452, 3, 174, 87,
+ 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 1, 0, 0, 0, 453, 447, 1, 0, 0,
+ 0, 454, 457, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 466, 1, 0, 0,
+ 0, 457, 455, 1, 0, 0, 0, 458, 464, 5, 59, 0, 0, 459, 460, 5, 62, 0, 0, 460, 462, 3, 24,
+ 12, 0, 461, 463, 5, 59, 0, 0, 462, 461, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 465, 1,
+ 0, 0, 0, 464, 459, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 467, 1, 0, 0, 0, 466, 458, 1,
+ 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 474, 1, 0, 0, 0, 468, 469, 5, 62, 0, 0, 469, 471, 3,
+ 24, 12, 0, 470, 472, 5, 59, 0, 0, 471, 470, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474,
+ 1, 0, 0, 0, 473, 392, 1, 0, 0, 0, 473, 443, 1, 0, 0, 0, 473, 468, 1, 0, 0, 0, 474, 23, 1,
+ 0, 0, 0, 475, 476, 3, 200, 100, 0, 476, 25, 1, 0, 0, 0, 477, 480, 3, 28, 14, 0, 478, 480,
+ 3, 78, 39, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 27, 1, 0, 0, 0, 481, 486,
+ 3, 30, 15, 0, 482, 483, 5, 61, 0, 0, 483, 485, 3, 30, 15, 0, 484, 482, 1, 0, 0, 0, 485,
+ 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 490, 1, 0, 0, 0, 488,
+ 486, 1, 0, 0, 0, 489, 491, 5, 61, 0, 0, 490, 489, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491,
+ 492, 1, 0, 0, 0, 492, 493, 5, 44, 0, 0, 493, 29, 1, 0, 0, 0, 494, 503, 3, 32, 16, 0, 495,
+ 503, 3, 40, 20, 0, 496, 503, 3, 42, 21, 0, 497, 503, 3, 44, 22, 0, 498, 503, 3, 56, 28,
+ 0, 499, 503, 3, 72, 36, 0, 500, 503, 3, 74, 37, 0, 501, 503, 3, 76, 38, 0, 502, 494,
+ 1, 0, 0, 0, 502, 495, 1, 0, 0, 0, 502, 496, 1, 0, 0, 0, 502, 497, 1, 0, 0, 0, 502, 498,
+ 1, 0, 0, 0, 502, 499, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, 501, 1, 0, 0, 0, 503, 31, 1,
+ 0, 0, 0, 504, 521, 3, 36, 18, 0, 505, 522, 3, 34, 17, 0, 506, 509, 3, 38, 19, 0, 507,
+ 510, 3, 232, 116, 0, 508, 510, 3, 214, 107, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0,
+ 0, 0, 510, 522, 1, 0, 0, 0, 511, 514, 5, 63, 0, 0, 512, 515, 3, 232, 116, 0, 513, 515,
+ 3, 36, 18, 0, 514, 512, 1, 0, 0, 0, 514, 513, 1, 0, 0, 0, 515, 517, 1, 0, 0, 0, 516, 511,
+ 1, 0, 0, 0, 517, 520, 1, 0, 0, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 522,
+ 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 521, 505, 1, 0, 0, 0, 521, 506, 1, 0, 0, 0, 521, 518,
+ 1, 0, 0, 0, 522, 33, 1, 0, 0, 0, 523, 524, 5, 60, 0, 0, 524, 527, 3, 174, 87, 0, 525, 526,
+ 5, 63, 0, 0, 526, 528, 3, 174, 87, 0, 527, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528,
+ 35, 1, 0, 0, 0, 529, 532, 3, 174, 87, 0, 530, 532, 3, 192, 96, 0, 531, 529, 1, 0, 0, 0,
+ 531, 530, 1, 0, 0, 0, 532, 540, 1, 0, 0, 0, 533, 536, 5, 59, 0, 0, 534, 537, 3, 174, 87,
+ 0, 535, 537, 3, 192, 96, 0, 536, 534, 1, 0, 0, 0, 536, 535, 1, 0, 0, 0, 537, 539, 1, 0,
+ 0, 0, 538, 533, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0,
+ 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 545, 5, 59, 0, 0, 544, 543, 1, 0,
+ 0, 0, 544, 545, 1, 0, 0, 0, 545, 37, 1, 0, 0, 0, 546, 547, 7, 0, 0, 0, 547, 39, 1, 0, 0,
+ 0, 548, 549, 5, 16, 0, 0, 549, 550, 3, 212, 106, 0, 550, 41, 1, 0, 0, 0, 551, 552, 5,
+ 35, 0, 0, 552, 43, 1, 0, 0, 0, 553, 559, 3, 46, 23, 0, 554, 559, 3, 48, 24, 0, 555, 559,
+ 3, 50, 25, 0, 556, 559, 3, 54, 27, 0, 557, 559, 3, 52, 26, 0, 558, 553, 1, 0, 0, 0, 558,
+ 554, 1, 0, 0, 0, 558, 555, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 558, 557, 1, 0, 0, 0, 559,
+ 45, 1, 0, 0, 0, 560, 561, 5, 11, 0, 0, 561, 47, 1, 0, 0, 0, 562, 563, 5, 14, 0, 0, 563,
+ 49, 1, 0, 0, 0, 564, 566, 5, 37, 0, 0, 565, 567, 3, 214, 107, 0, 566, 565, 1, 0, 0, 0,
+ 566, 567, 1, 0, 0, 0, 567, 51, 1, 0, 0, 0, 568, 569, 3, 232, 116, 0, 569, 53, 1, 0, 0,
+ 0, 570, 576, 5, 36, 0, 0, 571, 574, 3, 174, 87, 0, 572, 573, 5, 23, 0, 0, 573, 575, 3,
+ 174, 87, 0, 574, 572, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 571,
+ 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 55, 1, 0, 0, 0, 578, 581, 3, 58, 29, 0, 579, 581,
+ 3, 60, 30, 0, 580, 578, 1, 0, 0, 0, 580, 579, 1, 0, 0, 0, 581, 57, 1, 0, 0, 0, 582, 583,
+ 5, 26, 0, 0, 583, 584, 3, 68, 34, 0, 584, 59, 1, 0, 0, 0, 585, 598, 5, 23, 0, 0, 586, 588,
+ 7, 1, 0, 0, 587, 586, 1, 0, 0, 0, 588, 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590,
+ 1, 0, 0, 0, 590, 592, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 592, 599, 3, 70, 35, 0, 593, 595,
+ 7, 1, 0, 0, 594, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 596, 597,
+ 1, 0, 0, 0, 597, 599, 1, 0, 0, 0, 598, 589, 1, 0, 0, 0, 598, 594, 1, 0, 0, 0, 599, 600,
+ 1, 0, 0, 0, 600, 607, 5, 26, 0, 0, 601, 608, 5, 56, 0, 0, 602, 603, 5, 57, 0, 0, 603, 604,
+ 3, 66, 33, 0, 604, 605, 5, 58, 0, 0, 605, 608, 1, 0, 0, 0, 606, 608, 3, 66, 33, 0, 607,
+ 601, 1, 0, 0, 0, 607, 602, 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 61, 1, 0, 0, 0, 609, 612,
+ 3, 200, 100, 0, 610, 611, 5, 7, 0, 0, 611, 613, 3, 200, 100, 0, 612, 610, 1, 0, 0, 0,
+ 612, 613, 1, 0, 0, 0, 613, 63, 1, 0, 0, 0, 614, 617, 3, 70, 35, 0, 615, 616, 5, 7, 0, 0,
+ 616, 618, 3, 200, 100, 0, 617, 615, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 65, 1, 0, 0,
+ 0, 619, 624, 3, 62, 31, 0, 620, 621, 5, 59, 0, 0, 621, 623, 3, 62, 31, 0, 622, 620, 1,
+ 0, 0, 0, 623, 626, 1, 0, 0, 0, 624, 622, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 628, 1,
+ 0, 0, 0, 626, 624, 1, 0, 0, 0, 627, 629, 5, 59, 0, 0, 628, 627, 1, 0, 0, 0, 628, 629, 1,
+ 0, 0, 0, 629, 67, 1, 0, 0, 0, 630, 635, 3, 64, 32, 0, 631, 632, 5, 59, 0, 0, 632, 634,
+ 3, 64, 32, 0, 633, 631, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 635, 636,
+ 1, 0, 0, 0, 636, 69, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 643, 3, 200, 100, 0, 639, 640,
+ 5, 54, 0, 0, 640, 642, 3, 200, 100, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643,
+ 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 71, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 647,
+ 5, 24, 0, 0, 647, 652, 3, 200, 100, 0, 648, 649, 5, 59, 0, 0, 649, 651, 3, 200, 100,
+ 0, 650, 648, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 652, 653, 1, 0, 0,
+ 0, 653, 73, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 655, 656, 5, 32, 0, 0, 656, 661, 3, 200,
+ 100, 0, 657, 658, 5, 59, 0, 0, 658, 660, 3, 200, 100, 0, 659, 657, 1, 0, 0, 0, 660, 663,
+ 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 75, 1, 0, 0, 0, 663, 661, 1,
+ 0, 0, 0, 664, 665, 5, 8, 0, 0, 665, 668, 3, 174, 87, 0, 666, 667, 5, 59, 0, 0, 667, 669,
+ 3, 174, 87, 0, 668, 666, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 77, 1, 0, 0, 0, 670, 681,
+ 3, 82, 41, 0, 671, 681, 3, 84, 42, 0, 672, 681, 3, 86, 43, 0, 673, 681, 3, 88, 44, 0,
+ 674, 681, 3, 90, 45, 0, 675, 681, 3, 14, 7, 0, 676, 681, 3, 218, 109, 0, 677, 681, 3,
+ 10, 5, 0, 678, 681, 3, 80, 40, 0, 679, 681, 3, 98, 49, 0, 680, 670, 1, 0, 0, 0, 680, 671,
+ 1, 0, 0, 0, 680, 672, 1, 0, 0, 0, 680, 673, 1, 0, 0, 0, 680, 674, 1, 0, 0, 0, 680, 675,
+ 1, 0, 0, 0, 680, 676, 1, 0, 0, 0, 680, 677, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 680, 679,
+ 1, 0, 0, 0, 681, 79, 1, 0, 0, 0, 682, 686, 5, 9, 0, 0, 683, 687, 3, 14, 7, 0, 684, 687,
+ 3, 90, 45, 0, 685, 687, 3, 86, 43, 0, 686, 683, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 686,
+ 685, 1, 0, 0, 0, 687, 81, 1, 0, 0, 0, 688, 689, 5, 25, 0, 0, 689, 690, 3, 174, 87, 0, 690,
+ 691, 5, 60, 0, 0, 691, 699, 3, 96, 48, 0, 692, 693, 5, 17, 0, 0, 693, 694, 3, 174, 87,
+ 0, 694, 695, 5, 60, 0, 0, 695, 696, 3, 96, 48, 0, 696, 698, 1, 0, 0, 0, 697, 692, 1, 0,
+ 0, 0, 698, 701, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 705, 1, 0,
+ 0, 0, 701, 699, 1, 0, 0, 0, 702, 703, 5, 18, 0, 0, 703, 704, 5, 60, 0, 0, 704, 706, 3,
+ 96, 48, 0, 705, 702, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 83, 1, 0, 0, 0, 707, 708, 5,
+ 41, 0, 0, 708, 709, 3, 174, 87, 0, 709, 710, 5, 60, 0, 0, 710, 714, 3, 96, 48, 0, 711,
+ 712, 5, 18, 0, 0, 712, 713, 5, 60, 0, 0, 713, 715, 3, 96, 48, 0, 714, 711, 1, 0, 0, 0,
+ 714, 715, 1, 0, 0, 0, 715, 85, 1, 0, 0, 0, 716, 717, 5, 22, 0, 0, 717, 718, 3, 212, 106,
+ 0, 718, 719, 5, 27, 0, 0, 719, 720, 3, 214, 107, 0, 720, 721, 5, 60, 0, 0, 721, 725,
+ 3, 96, 48, 0, 722, 723, 5, 18, 0, 0, 723, 724, 5, 60, 0, 0, 724, 726, 3, 96, 48, 0, 725,
+ 722, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 87, 1, 0, 0, 0, 727, 728, 5, 39, 0, 0, 728,
+ 729, 5, 60, 0, 0, 729, 751, 3, 96, 48, 0, 730, 731, 3, 94, 47, 0, 731, 732, 5, 60, 0,
+ 0, 732, 733, 3, 96, 48, 0, 733, 735, 1, 0, 0, 0, 734, 730, 1, 0, 0, 0, 735, 736, 1, 0,
+ 0, 0, 736, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 741, 1, 0, 0, 0, 738, 739, 5, 18,
+ 0, 0, 739, 740, 5, 60, 0, 0, 740, 742, 3, 96, 48, 0, 741, 738, 1, 0, 0, 0, 741, 742, 1,
+ 0, 0, 0, 742, 746, 1, 0, 0, 0, 743, 744, 5, 21, 0, 0, 744, 745, 5, 60, 0, 0, 745, 747,
+ 3, 96, 48, 0, 746, 743, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 752, 1, 0, 0, 0, 748, 749,
+ 5, 21, 0, 0, 749, 750, 5, 60, 0, 0, 750, 752, 3, 96, 48, 0, 751, 734, 1, 0, 0, 0, 751,
+ 748, 1, 0, 0, 0, 752, 89, 1, 0, 0, 0, 753, 754, 5, 42, 0, 0, 754, 759, 3, 92, 46, 0, 755,
+ 756, 5, 59, 0, 0, 756, 758, 3, 92, 46, 0, 757, 755, 1, 0, 0, 0, 758, 761, 1, 0, 0, 0, 759,
+ 757, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 759, 1, 0, 0, 0, 762,
+ 763, 5, 60, 0, 0, 763, 764, 3, 96, 48, 0, 764, 91, 1, 0, 0, 0, 765, 768, 3, 174, 87, 0,
+ 766, 767, 5, 7, 0, 0, 767, 769, 3, 194, 97, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0,
+ 0, 769, 93, 1, 0, 0, 0, 770, 776, 5, 19, 0, 0, 771, 774, 3, 174, 87, 0, 772, 773, 5, 7,
+ 0, 0, 773, 775, 3, 200, 100, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 777,
+ 1, 0, 0, 0, 776, 771, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 95, 1, 0, 0, 0, 778, 789, 3,
+ 28, 14, 0, 779, 780, 5, 44, 0, 0, 780, 782, 5, 1, 0, 0, 781, 783, 3, 26, 13, 0, 782, 781,
+ 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786,
+ 1, 0, 0, 0, 786, 787, 5, 2, 0, 0, 787, 789, 1, 0, 0, 0, 788, 778, 1, 0, 0, 0, 788, 779,
+ 1, 0, 0, 0, 789, 97, 1, 0, 0, 0, 790, 791, 5, 30, 0, 0, 791, 792, 3, 100, 50, 0, 792, 793,
+ 5, 60, 0, 0, 793, 794, 5, 44, 0, 0, 794, 796, 5, 1, 0, 0, 795, 797, 3, 106, 53, 0, 796,
+ 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 796, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799,
+ 800, 1, 0, 0, 0, 800, 801, 5, 2, 0, 0, 801, 99, 1, 0, 0, 0, 802, 803, 3, 104, 52, 0, 803,
+ 805, 5, 59, 0, 0, 804, 806, 3, 102, 51, 0, 805, 804, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0,
+ 806, 809, 1, 0, 0, 0, 807, 809, 3, 174, 87, 0, 808, 802, 1, 0, 0, 0, 808, 807, 1, 0, 0,
+ 0, 809, 101, 1, 0, 0, 0, 810, 812, 5, 59, 0, 0, 811, 813, 3, 104, 52, 0, 812, 811, 1,
+ 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1,
+ 0, 0, 0, 816, 818, 5, 59, 0, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 103, 1,
+ 0, 0, 0, 819, 820, 5, 56, 0, 0, 820, 823, 3, 194, 97, 0, 821, 823, 3, 174, 87, 0, 822,
+ 819, 1, 0, 0, 0, 822, 821, 1, 0, 0, 0, 823, 105, 1, 0, 0, 0, 824, 825, 5, 12, 0, 0, 825,
+ 827, 3, 110, 55, 0, 826, 828, 3, 108, 54, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0,
+ 0, 828, 829, 1, 0, 0, 0, 829, 830, 5, 60, 0, 0, 830, 831, 3, 96, 48, 0, 831, 107, 1, 0,
+ 0, 0, 832, 833, 5, 25, 0, 0, 833, 834, 3, 174, 87, 0, 834, 109, 1, 0, 0, 0, 835, 838,
+ 3, 150, 75, 0, 836, 838, 3, 112, 56, 0, 837, 835, 1, 0, 0, 0, 837, 836, 1, 0, 0, 0, 838,
+ 111, 1, 0, 0, 0, 839, 842, 3, 114, 57, 0, 840, 842, 3, 116, 58, 0, 841, 839, 1, 0, 0,
+ 0, 841, 840, 1, 0, 0, 0, 842, 113, 1, 0, 0, 0, 843, 844, 3, 116, 58, 0, 844, 845, 5, 7,
+ 0, 0, 845, 846, 3, 136, 68, 0, 846, 115, 1, 0, 0, 0, 847, 852, 3, 118, 59, 0, 848, 849,
+ 5, 66, 0, 0, 849, 851, 3, 118, 59, 0, 850, 848, 1, 0, 0, 0, 851, 854, 1, 0, 0, 0, 852,
+ 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 117, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 855,
+ 864, 3, 120, 60, 0, 856, 864, 3, 134, 67, 0, 857, 864, 3, 138, 69, 0, 858, 864, 3, 140,
+ 70, 0, 859, 864, 3, 146, 73, 0, 860, 864, 3, 148, 74, 0, 861, 864, 3, 158, 79, 0, 862,
+ 864, 3, 166, 83, 0, 863, 855, 1, 0, 0, 0, 863, 856, 1, 0, 0, 0, 863, 857, 1, 0, 0, 0, 863,
+ 858, 1, 0, 0, 0, 863, 859, 1, 0, 0, 0, 863, 860, 1, 0, 0, 0, 863, 861, 1, 0, 0, 0, 863,
+ 862, 1, 0, 0, 0, 864, 119, 1, 0, 0, 0, 865, 866, 3, 126, 63, 0, 866, 867, 4, 60, 0, 0,
+ 867, 874, 1, 0, 0, 0, 868, 874, 3, 124, 62, 0, 869, 874, 3, 236, 118, 0, 870, 874, 5,
+ 31, 0, 0, 871, 874, 5, 38, 0, 0, 872, 874, 5, 20, 0, 0, 873, 865, 1, 0, 0, 0, 873, 868,
+ 1, 0, 0, 0, 873, 869, 1, 0, 0, 0, 873, 870, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 873, 872,
+ 1, 0, 0, 0, 874, 121, 1, 0, 0, 0, 875, 876, 3, 126, 63, 0, 876, 877, 4, 61, 1, 0, 877,
+ 884, 1, 0, 0, 0, 878, 884, 3, 124, 62, 0, 879, 884, 3, 236, 118, 0, 880, 884, 5, 31,
+ 0, 0, 881, 884, 5, 38, 0, 0, 882, 884, 5, 20, 0, 0, 883, 875, 1, 0, 0, 0, 883, 878, 1,
+ 0, 0, 0, 883, 879, 1, 0, 0, 0, 883, 880, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1,
+ 0, 0, 0, 884, 123, 1, 0, 0, 0, 885, 886, 3, 128, 64, 0, 886, 887, 5, 71, 0, 0, 887, 888,
+ 3, 132, 66, 0, 888, 894, 1, 0, 0, 0, 889, 890, 3, 128, 64, 0, 890, 891, 5, 72, 0, 0, 891,
+ 892, 3, 132, 66, 0, 892, 894, 1, 0, 0, 0, 893, 885, 1, 0, 0, 0, 893, 889, 1, 0, 0, 0, 894,
+ 125, 1, 0, 0, 0, 895, 899, 5, 4, 0, 0, 896, 897, 5, 72, 0, 0, 897, 899, 5, 4, 0, 0, 898,
+ 895, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 127, 1, 0, 0, 0, 900, 904, 3, 130, 65, 0, 901,
+ 902, 5, 72, 0, 0, 902, 904, 3, 130, 65, 0, 903, 900, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0,
+ 904, 129, 1, 0, 0, 0, 905, 906, 5, 4, 0, 0, 906, 131, 1, 0, 0, 0, 907, 908, 5, 4, 0, 0,
+ 908, 133, 1, 0, 0, 0, 909, 910, 3, 136, 68, 0, 910, 135, 1, 0, 0, 0, 911, 912, 3, 200,
+ 100, 0, 912, 913, 4, 68, 2, 0, 913, 137, 1, 0, 0, 0, 914, 915, 5, 40, 0, 0, 915, 139,
+ 1, 0, 0, 0, 916, 917, 3, 142, 71, 0, 917, 918, 4, 70, 3, 0, 918, 141, 1, 0, 0, 0, 919,
+ 922, 3, 200, 100, 0, 920, 921, 5, 54, 0, 0, 921, 923, 3, 200, 100, 0, 922, 920, 1, 0,
+ 0, 0, 923, 924, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 143, 1, 0,
+ 0, 0, 926, 929, 3, 142, 71, 0, 927, 929, 3, 200, 100, 0, 928, 926, 1, 0, 0, 0, 928, 927,
+ 1, 0, 0, 0, 929, 145, 1, 0, 0, 0, 930, 931, 5, 57, 0, 0, 931, 932, 3, 112, 56, 0, 932,
+ 933, 5, 58, 0, 0, 933, 147, 1, 0, 0, 0, 934, 936, 5, 64, 0, 0, 935, 937, 3, 152, 76, 0,
+ 936, 935, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 945, 5, 65, 0, 0,
+ 939, 941, 5, 57, 0, 0, 940, 942, 3, 150, 75, 0, 941, 940, 1, 0, 0, 0, 941, 942, 1, 0,
+ 0, 0, 942, 943, 1, 0, 0, 0, 943, 945, 5, 58, 0, 0, 944, 934, 1, 0, 0, 0, 944, 939, 1, 0,
+ 0, 0, 945, 149, 1, 0, 0, 0, 946, 947, 3, 154, 77, 0, 947, 949, 5, 59, 0, 0, 948, 950,
+ 3, 152, 76, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 151, 1, 0, 0, 0, 951, 956,
+ 3, 154, 77, 0, 952, 953, 5, 59, 0, 0, 953, 955, 3, 154, 77, 0, 954, 952, 1, 0, 0, 0, 955,
+ 958, 1, 0, 0, 0, 956, 954, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958,
+ 956, 1, 0, 0, 0, 959, 961, 5, 59, 0, 0, 960, 959, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961,
+ 153, 1, 0, 0, 0, 962, 965, 3, 156, 78, 0, 963, 965, 3, 112, 56, 0, 964, 962, 1, 0, 0,
+ 0, 964, 963, 1, 0, 0, 0, 965, 155, 1, 0, 0, 0, 966, 967, 5, 56, 0, 0, 967, 971, 3, 136,
+ 68, 0, 968, 969, 5, 56, 0, 0, 969, 971, 3, 138, 69, 0, 970, 966, 1, 0, 0, 0, 970, 968,
+ 1, 0, 0, 0, 971, 157, 1, 0, 0, 0, 972, 973, 5, 77, 0, 0, 973, 998, 5, 78, 0, 0, 974, 975,
+ 5, 77, 0, 0, 975, 977, 3, 164, 82, 0, 976, 978, 5, 59, 0, 0, 977, 976, 1, 0, 0, 0, 977,
+ 978, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 980, 5, 78, 0, 0, 980, 998, 1, 0, 0, 0, 981,
+ 982, 5, 77, 0, 0, 982, 983, 3, 160, 80, 0, 983, 984, 5, 59, 0, 0, 984, 986, 3, 164, 82,
+ 0, 985, 987, 5, 59, 0, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0,
+ 0, 988, 989, 5, 78, 0, 0, 989, 998, 1, 0, 0, 0, 990, 991, 5, 77, 0, 0, 991, 993, 3, 160,
+ 80, 0, 992, 994, 5, 59, 0, 0, 993, 992, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 995, 1,
+ 0, 0, 0, 995, 996, 5, 78, 0, 0, 996, 998, 1, 0, 0, 0, 997, 972, 1, 0, 0, 0, 997, 974, 1,
+ 0, 0, 0, 997, 981, 1, 0, 0, 0, 997, 990, 1, 0, 0, 0, 998, 159, 1, 0, 0, 0, 999, 1004, 3,
+ 162, 81, 0, 1000, 1001, 5, 59, 0, 0, 1001, 1003, 3, 162, 81, 0, 1002, 1000, 1, 0, 0,
+ 0, 1003, 1006, 1, 0, 0, 0, 1004, 1002, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 161,
+ 1, 0, 0, 0, 1006, 1004, 1, 0, 0, 0, 1007, 1010, 3, 122, 61, 0, 1008, 1010, 3, 142, 71,
+ 0, 1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1012,
+ 5, 60, 0, 0, 1012, 1013, 3, 112, 56, 0, 1013, 163, 1, 0, 0, 0, 1014, 1015, 5, 62, 0,
+ 0, 1015, 1016, 3, 136, 68, 0, 1016, 165, 1, 0, 0, 0, 1017, 1018, 3, 144, 72, 0, 1018,
+ 1019, 5, 57, 0, 0, 1019, 1020, 5, 58, 0, 0, 1020, 1048, 1, 0, 0, 0, 1021, 1022, 3, 144,
+ 72, 0, 1022, 1023, 5, 57, 0, 0, 1023, 1025, 3, 168, 84, 0, 1024, 1026, 5, 59, 0, 0,
+ 1025, 1024, 1, 0, 0, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028,
+ 5, 58, 0, 0, 1028, 1048, 1, 0, 0, 0, 1029, 1030, 3, 144, 72, 0, 1030, 1031, 5, 57, 0,
+ 0, 1031, 1033, 3, 170, 85, 0, 1032, 1034, 5, 59, 0, 0, 1033, 1032, 1, 0, 0, 0, 1033,
+ 1034, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 5, 58, 0, 0, 1036, 1048, 1, 0,
+ 0, 0, 1037, 1038, 3, 144, 72, 0, 1038, 1039, 5, 57, 0, 0, 1039, 1040, 3, 168, 84, 0,
+ 1040, 1041, 5, 59, 0, 0, 1041, 1043, 3, 170, 85, 0, 1042, 1044, 5, 59, 0, 0, 1043,
+ 1042, 1, 0, 0, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1046, 5, 58,
+ 0, 0, 1046, 1048, 1, 0, 0, 0, 1047, 1017, 1, 0, 0, 0, 1047, 1021, 1, 0, 0, 0, 1047, 1029,
+ 1, 0, 0, 0, 1047, 1037, 1, 0, 0, 0, 1048, 167, 1, 0, 0, 0, 1049, 1054, 3, 112, 56, 0,
+ 1050, 1051, 5, 59, 0, 0, 1051, 1053, 3, 112, 56, 0, 1052, 1050, 1, 0, 0, 0, 1053, 1056,
+ 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 169, 1, 0, 0, 0, 1056,
+ 1054, 1, 0, 0, 0, 1057, 1062, 3, 172, 86, 0, 1058, 1059, 5, 59, 0, 0, 1059, 1061, 3,
+ 172, 86, 0, 1060, 1058, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062,
+ 1063, 1, 0, 0, 0, 1063, 171, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 3, 200,
+ 100, 0, 1066, 1067, 5, 63, 0, 0, 1067, 1068, 3, 112, 56, 0, 1068, 173, 1, 0, 0, 0, 1069,
+ 1075, 3, 182, 91, 0, 1070, 1071, 5, 25, 0, 0, 1071, 1072, 3, 182, 91, 0, 1072, 1073,
+ 5, 18, 0, 0, 1073, 1074, 3, 174, 87, 0, 1074, 1076, 1, 0, 0, 0, 1075, 1070, 1, 0, 0,
+ 0, 1075, 1076, 1, 0, 0, 0, 1076, 1079, 1, 0, 0, 0, 1077, 1079, 3, 178, 89, 0, 1078,
+ 1069, 1, 0, 0, 0, 1078, 1077, 1, 0, 0, 0, 1079, 175, 1, 0, 0, 0, 1080, 1083, 3, 182,
+ 91, 0, 1081, 1083, 3, 180, 90, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1081, 1, 0, 0, 0, 1083,
+ 177, 1, 0, 0, 0, 1084, 1086, 5, 29, 0, 0, 1085, 1087, 3, 22, 11, 0, 1086, 1085, 1, 0,
+ 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 60, 0, 0, 1089,
+ 1090, 3, 174, 87, 0, 1090, 179, 1, 0, 0, 0, 1091, 1093, 5, 29, 0, 0, 1092, 1094, 3,
+ 22, 11, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095,
+ 1096, 5, 60, 0, 0, 1096, 1097, 3, 176, 88, 0, 1097, 181, 1, 0, 0, 0, 1098, 1103, 3,
+ 184, 92, 0, 1099, 1100, 5, 34, 0, 0, 1100, 1102, 3, 184, 92, 0, 1101, 1099, 1, 0, 0,
+ 0, 1102, 1105, 1, 0, 0, 0, 1103, 1101, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 183,
+ 1, 0, 0, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1111, 3, 186, 93, 0, 1107, 1108, 5, 6, 0, 0,
+ 1108, 1110, 3, 186, 93, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1113, 1, 0, 0, 0, 1111, 1109,
+ 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 185, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1114,
+ 1115, 5, 33, 0, 0, 1115, 1118, 3, 186, 93, 0, 1116, 1118, 3, 188, 94, 0, 1117, 1114,
+ 1, 0, 0, 0, 1117, 1116, 1, 0, 0, 0, 1118, 187, 1, 0, 0, 0, 1119, 1125, 3, 194, 97, 0,
+ 1120, 1121, 3, 190, 95, 0, 1121, 1122, 3, 194, 97, 0, 1122, 1124, 1, 0, 0, 0, 1123,
+ 1120, 1, 0, 0, 0, 1124, 1127, 1, 0, 0, 0, 1125, 1123, 1, 0, 0, 0, 1125, 1126, 1, 0, 0,
+ 0, 1126, 189, 1, 0, 0, 0, 1127, 1125, 1, 0, 0, 0, 1128, 1142, 5, 79, 0, 0, 1129, 1142,
+ 5, 80, 0, 0, 1130, 1142, 5, 81, 0, 0, 1131, 1142, 5, 82, 0, 0, 1132, 1142, 5, 83, 0,
+ 0, 1133, 1142, 5, 84, 0, 0, 1134, 1142, 5, 85, 0, 0, 1135, 1142, 5, 27, 0, 0, 1136,
+ 1137, 5, 33, 0, 0, 1137, 1142, 5, 27, 0, 0, 1138, 1142, 5, 28, 0, 0, 1139, 1140, 5,
+ 28, 0, 0, 1140, 1142, 5, 33, 0, 0, 1141, 1128, 1, 0, 0, 0, 1141, 1129, 1, 0, 0, 0, 1141,
+ 1130, 1, 0, 0, 0, 1141, 1131, 1, 0, 0, 0, 1141, 1132, 1, 0, 0, 0, 1141, 1133, 1, 0, 0,
+ 0, 1141, 1134, 1, 0, 0, 0, 1141, 1135, 1, 0, 0, 0, 1141, 1136, 1, 0, 0, 0, 1141, 1138,
+ 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1142, 191, 1, 0, 0, 0, 1143, 1144, 5, 56, 0, 0, 1144,
+ 1145, 3, 194, 97, 0, 1145, 193, 1, 0, 0, 0, 1146, 1147, 6, 97, -1, 0, 1147, 1155, 3,
+ 196, 98, 0, 1148, 1150, 7, 2, 0, 0, 1149, 1148, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151,
+ 1149, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1155, 3, 194,
+ 97, 7, 1154, 1146, 1, 0, 0, 0, 1154, 1149, 1, 0, 0, 0, 1155, 1179, 1, 0, 0, 0, 1156,
+ 1157, 10, 8, 0, 0, 1157, 1158, 5, 62, 0, 0, 1158, 1178, 3, 194, 97, 9, 1159, 1160,
+ 10, 6, 0, 0, 1160, 1161, 7, 3, 0, 0, 1161, 1178, 3, 194, 97, 7, 1162, 1163, 10, 5, 0,
+ 0, 1163, 1164, 7, 4, 0, 0, 1164, 1178, 3, 194, 97, 6, 1165, 1166, 10, 4, 0, 0, 1166,
+ 1167, 7, 5, 0, 0, 1167, 1178, 3, 194, 97, 5, 1168, 1169, 10, 3, 0, 0, 1169, 1170, 5,
+ 68, 0, 0, 1170, 1178, 3, 194, 97, 4, 1171, 1172, 10, 2, 0, 0, 1172, 1173, 5, 67, 0,
+ 0, 1173, 1178, 3, 194, 97, 3, 1174, 1175, 10, 1, 0, 0, 1175, 1176, 5, 66, 0, 0, 1176,
+ 1178, 3, 194, 97, 2, 1177, 1156, 1, 0, 0, 0, 1177, 1159, 1, 0, 0, 0, 1177, 1162, 1,
+ 0, 0, 0, 1177, 1165, 1, 0, 0, 0, 1177, 1168, 1, 0, 0, 0, 1177, 1171, 1, 0, 0, 0, 1177,
+ 1174, 1, 0, 0, 0, 1178, 1181, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0, 1179, 1180, 1, 0, 0,
+ 0, 1180, 195, 1, 0, 0, 0, 1181, 1179, 1, 0, 0, 0, 1182, 1184, 5, 10, 0, 0, 1183, 1182,
+ 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1189, 3, 198, 99, 0,
+ 1186, 1188, 3, 204, 102, 0, 1187, 1186, 1, 0, 0, 0, 1188, 1191, 1, 0, 0, 0, 1189, 1187,
+ 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, 1190, 197, 1, 0, 0, 0, 1191, 1189, 1, 0, 0, 0, 1192,
+ 1195, 5, 57, 0, 0, 1193, 1196, 3, 232, 116, 0, 1194, 1196, 3, 202, 101, 0, 1195, 1193,
+ 1, 0, 0, 0, 1195, 1194, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197,
+ 1220, 5, 58, 0, 0, 1198, 1200, 5, 64, 0, 0, 1199, 1201, 3, 202, 101, 0, 1200, 1199,
+ 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1220, 5, 65, 0, 0, 1203,
+ 1205, 5, 77, 0, 0, 1204, 1206, 3, 216, 108, 0, 1205, 1204, 1, 0, 0, 0, 1205, 1206,
+ 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1220, 5, 78, 0, 0, 1208, 1220, 3, 200, 100,
+ 0, 1209, 1220, 5, 4, 0, 0, 1210, 1212, 5, 3, 0, 0, 1211, 1210, 1, 0, 0, 0, 1212, 1213,
+ 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1220, 1, 0, 0, 0, 1215,
+ 1220, 5, 55, 0, 0, 1216, 1220, 5, 31, 0, 0, 1217, 1220, 5, 38, 0, 0, 1218, 1220, 5,
+ 20, 0, 0, 1219, 1192, 1, 0, 0, 0, 1219, 1198, 1, 0, 0, 0, 1219, 1203, 1, 0, 0, 0, 1219,
+ 1208, 1, 0, 0, 0, 1219, 1209, 1, 0, 0, 0, 1219, 1211, 1, 0, 0, 0, 1219, 1215, 1, 0, 0,
+ 0, 1219, 1216, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1219, 1218, 1, 0, 0, 0, 1220, 199,
+ 1, 0, 0, 0, 1221, 1222, 7, 6, 0, 0, 1222, 201, 1, 0, 0, 0, 1223, 1226, 3, 174, 87, 0,
+ 1224, 1226, 3, 192, 96, 0, 1225, 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 1241,
+ 1, 0, 0, 0, 1227, 1242, 3, 226, 113, 0, 1228, 1231, 5, 59, 0, 0, 1229, 1232, 3, 174,
+ 87, 0, 1230, 1232, 3, 192, 96, 0, 1231, 1229, 1, 0, 0, 0, 1231, 1230, 1, 0, 0, 0, 1232,
+ 1234, 1, 0, 0, 0, 1233, 1228, 1, 0, 0, 0, 1234, 1237, 1, 0, 0, 0, 1235, 1233, 1, 0, 0,
+ 0, 1235, 1236, 1, 0, 0, 0, 1236, 1239, 1, 0, 0, 0, 1237, 1235, 1, 0, 0, 0, 1238, 1240,
+ 5, 59, 0, 0, 1239, 1238, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241,
+ 1227, 1, 0, 0, 0, 1241, 1235, 1, 0, 0, 0, 1242, 203, 1, 0, 0, 0, 1243, 1245, 5, 57, 0,
+ 0, 1244, 1246, 3, 220, 110, 0, 1245, 1244, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1246,
+ 1247, 1, 0, 0, 0, 1247, 1255, 5, 58, 0, 0, 1248, 1249, 5, 64, 0, 0, 1249, 1250, 3, 206,
+ 103, 0, 1250, 1251, 5, 65, 0, 0, 1251, 1255, 1, 0, 0, 0, 1252, 1253, 5, 54, 0, 0, 1253,
+ 1255, 3, 200, 100, 0, 1254, 1243, 1, 0, 0, 0, 1254, 1248, 1, 0, 0, 0, 1254, 1252, 1,
+ 0, 0, 0, 1255, 205, 1, 0, 0, 0, 1256, 1261, 3, 208, 104, 0, 1257, 1258, 5, 59, 0, 0,
+ 1258, 1260, 3, 208, 104, 0, 1259, 1257, 1, 0, 0, 0, 1260, 1263, 1, 0, 0, 0, 1261, 1259,
+ 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1265, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1264,
+ 1266, 5, 59, 0, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 207, 1, 0, 0,
+ 0, 1267, 1279, 3, 174, 87, 0, 1268, 1270, 3, 174, 87, 0, 1269, 1268, 1, 0, 0, 0, 1269,
+ 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 5, 60, 0, 0, 1272, 1274, 3, 174,
+ 87, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275,
+ 1277, 3, 210, 105, 0, 1276, 1275, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 1,
+ 0, 0, 0, 1278, 1267, 1, 0, 0, 0, 1278, 1269, 1, 0, 0, 0, 1279, 209, 1, 0, 0, 0, 1280,
+ 1282, 5, 60, 0, 0, 1281, 1283, 3, 174, 87, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1,
+ 0, 0, 0, 1283, 211, 1, 0, 0, 0, 1284, 1287, 3, 194, 97, 0, 1285, 1287, 3, 192, 96, 0,
+ 1286, 1284, 1, 0, 0, 0, 1286, 1285, 1, 0, 0, 0, 1287, 1295, 1, 0, 0, 0, 1288, 1291,
+ 5, 59, 0, 0, 1289, 1292, 3, 194, 97, 0, 1290, 1292, 3, 192, 96, 0, 1291, 1289, 1, 0,
+ 0, 0, 1291, 1290, 1, 0, 0, 0, 1292, 1294, 1, 0, 0, 0, 1293, 1288, 1, 0, 0, 0, 1294, 1297,
+ 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1299, 1, 0, 0, 0, 1297,
+ 1295, 1, 0, 0, 0, 1298, 1300, 5, 59, 0, 0, 1299, 1298, 1, 0, 0, 0, 1299, 1300, 1, 0,
+ 0, 0, 1300, 213, 1, 0, 0, 0, 1301, 1306, 3, 174, 87, 0, 1302, 1303, 5, 59, 0, 0, 1303,
+ 1305, 3, 174, 87, 0, 1304, 1302, 1, 0, 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1,
+ 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1310, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309,
+ 1311, 5, 59, 0, 0, 1310, 1309, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 215, 1, 0, 0,
+ 0, 1312, 1313, 3, 174, 87, 0, 1313, 1314, 5, 60, 0, 0, 1314, 1315, 3, 174, 87, 0, 1315,
+ 1319, 1, 0, 0, 0, 1316, 1317, 5, 62, 0, 0, 1317, 1319, 3, 194, 97, 0, 1318, 1312, 1,
+ 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1319, 1338, 1, 0, 0, 0, 1320, 1339, 3, 226, 113, 0,
+ 1321, 1328, 5, 59, 0, 0, 1322, 1323, 3, 174, 87, 0, 1323, 1324, 5, 60, 0, 0, 1324,
+ 1325, 3, 174, 87, 0, 1325, 1329, 1, 0, 0, 0, 1326, 1327, 5, 62, 0, 0, 1327, 1329, 3,
+ 194, 97, 0, 1328, 1322, 1, 0, 0, 0, 1328, 1326, 1, 0, 0, 0, 1329, 1331, 1, 0, 0, 0, 1330,
+ 1321, 1, 0, 0, 0, 1331, 1334, 1, 0, 0, 0, 1332, 1330, 1, 0, 0, 0, 1332, 1333, 1, 0, 0,
+ 0, 1333, 1336, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1337, 5, 59, 0, 0, 1336, 1335,
+ 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1339, 1, 0, 0, 0, 1338, 1320, 1, 0, 0, 0, 1338,
+ 1332, 1, 0, 0, 0, 1339, 1361, 1, 0, 0, 0, 1340, 1343, 3, 174, 87, 0, 1341, 1343, 3,
+ 192, 96, 0, 1342, 1340, 1, 0, 0, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1358, 1, 0, 0, 0, 1344,
+ 1359, 3, 226, 113, 0, 1345, 1348, 5, 59, 0, 0, 1346, 1349, 3, 174, 87, 0, 1347, 1349,
+ 3, 192, 96, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1347, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0,
+ 1350, 1345, 1, 0, 0, 0, 1351, 1354, 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353,
+ 1, 0, 0, 0, 1353, 1356, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1357, 5, 59, 0, 0, 1356,
+ 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1359, 1, 0, 0, 0, 1358, 1344, 1, 0, 0,
+ 0, 1358, 1352, 1, 0, 0, 0, 1359, 1361, 1, 0, 0, 0, 1360, 1318, 1, 0, 0, 0, 1360, 1342,
+ 1, 0, 0, 0, 1361, 217, 1, 0, 0, 0, 1362, 1363, 5, 13, 0, 0, 1363, 1369, 3, 200, 100,
+ 0, 1364, 1366, 5, 57, 0, 0, 1365, 1367, 3, 220, 110, 0, 1366, 1365, 1, 0, 0, 0, 1366,
+ 1367, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 5, 58, 0, 0, 1369, 1364, 1, 0,
+ 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 5, 60, 0, 0, 1372,
+ 1373, 3, 96, 48, 0, 1373, 219, 1, 0, 0, 0, 1374, 1379, 3, 222, 111, 0, 1375, 1376,
+ 5, 59, 0, 0, 1376, 1378, 3, 222, 111, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1381, 1, 0, 0,
+ 0, 1379, 1377, 1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, 1380, 1383, 1, 0, 0, 0, 1381, 1379,
+ 1, 0, 0, 0, 1382, 1384, 5, 59, 0, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384,
+ 221, 1, 0, 0, 0, 1385, 1387, 3, 174, 87, 0, 1386, 1388, 3, 226, 113, 0, 1387, 1386,
+ 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1398, 1, 0, 0, 0, 1389, 1390, 3, 174, 87, 0,
+ 1390, 1391, 5, 63, 0, 0, 1391, 1392, 3, 174, 87, 0, 1392, 1398, 1, 0, 0, 0, 1393, 1394,
+ 5, 62, 0, 0, 1394, 1398, 3, 174, 87, 0, 1395, 1396, 5, 56, 0, 0, 1396, 1398, 3, 174,
+ 87, 0, 1397, 1385, 1, 0, 0, 0, 1397, 1389, 1, 0, 0, 0, 1397, 1393, 1, 0, 0, 0, 1397,
+ 1395, 1, 0, 0, 0, 1398, 223, 1, 0, 0, 0, 1399, 1402, 3, 226, 113, 0, 1400, 1402, 3,
+ 228, 114, 0, 1401, 1399, 1, 0, 0, 0, 1401, 1400, 1, 0, 0, 0, 1402, 225, 1, 0, 0, 0, 1403,
+ 1405, 5, 9, 0, 0, 1404, 1403, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 1, 0, 0,
+ 0, 1406, 1407, 5, 22, 0, 0, 1407, 1408, 3, 212, 106, 0, 1408, 1409, 5, 27, 0, 0, 1409,
+ 1411, 3, 182, 91, 0, 1410, 1412, 3, 224, 112, 0, 1411, 1410, 1, 0, 0, 0, 1411, 1412,
+ 1, 0, 0, 0, 1412, 227, 1, 0, 0, 0, 1413, 1414, 5, 25, 0, 0, 1414, 1416, 3, 176, 88, 0,
+ 1415, 1417, 3, 224, 112, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 229,
+ 1, 0, 0, 0, 1418, 1419, 3, 200, 100, 0, 1419, 231, 1, 0, 0, 0, 1420, 1422, 5, 43, 0,
+ 0, 1421, 1423, 3, 234, 117, 0, 1422, 1421, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423,
+ 233, 1, 0, 0, 0, 1424, 1425, 5, 23, 0, 0, 1425, 1428, 3, 174, 87, 0, 1426, 1428, 3,
+ 214, 107, 0, 1427, 1424, 1, 0, 0, 0, 1427, 1426, 1, 0, 0, 0, 1428, 235, 1, 0, 0, 0, 1429,
+ 1431, 5, 3, 0, 0, 1430, 1429, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1430, 1, 0, 0,
+ 0, 1432, 1433, 1, 0, 0, 0, 1433, 237, 1, 0, 0, 0, 201, 243, 247, 249, 258, 267, 270,
+ 277, 283, 293, 300, 307, 313, 317, 323, 329, 333, 340, 342, 344, 349, 351, 353,
+ 357, 363, 367, 374, 376, 378, 383, 385, 390, 395, 401, 405, 411, 417, 421, 428,
+ 430, 432, 437, 439, 441, 445, 451, 455, 462, 464, 466, 471, 473, 479, 486, 490,
+ 502, 509, 514, 518, 521, 527, 531, 536, 540, 544, 558, 566, 574, 576, 580, 589,
+ 596, 598, 607, 612, 617, 624, 628, 635, 643, 652, 661, 668, 680, 686, 699, 705,
+ 714, 725, 736, 741, 746, 751, 759, 768, 774, 776, 784, 788, 798, 805, 808, 814,
+ 817, 822, 827, 837, 841, 852, 863, 873, 883, 893, 898, 903, 924, 928, 936, 941,
+ 944, 949, 956, 960, 964, 970, 977, 986, 993, 997, 1004, 1009, 1025, 1033, 1043,
+ 1047, 1054, 1062, 1075, 1078, 1082, 1086, 1093, 1103, 1111, 1117, 1125, 1141,
+ 1151, 1154, 1177, 1179, 1183, 1189, 1195, 1200, 1205, 1213, 1219, 1225, 1231,
+ 1235, 1239, 1241, 1245, 1254, 1261, 1265, 1269, 1273, 1276, 1278, 1282, 1286,
+ 1291, 1295, 1299, 1306, 1310, 1318, 1328, 1332, 1336, 1338, 1342, 1348, 1352,
+ 1356, 1358, 1360, 1366, 1369, 1379, 1383, 1387, 1397, 1401, 1404, 1411, 1416,
+ 1422, 1427, 1432
+ ]
+
+
+
+
+class Python3Parser(Python3ParserBase):
+ grammarFileName = "Python3Parser.g4"
+
+ atn = ATNDeserializer().deserialize(serializedATN())
+
+ decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)]
+
+ sharedContextCache = PredictionContextCache()
+
+ literalNames = ["", "", "", "",
+ "", "", "'and'", "'as'", "'assert'",
+ "'async'", "'await'", "'break'", "'case'", "'class'",
+ "'continue'", "'def'", "'del'", "'elif'", "'else'",
+ "'except'", "'False'", "'finally'", "'for'", "'from'",
+ "'global'", "'if'", "'import'", "'in'", "'is'", "'lambda'",
+ "'match'", "'None'", "'nonlocal'", "'not'", "'or'",
+ "'pass'", "'raise'", "'return'", "'True'", "'try'",
+ "'_'", "'while'", "'with'", "'yield'", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "'.'", "'...'", "'*'", "'('", "')'", "','",
+ "':'", "';'", "'**'", "'='", "'['", "']'", "'|'", "'^'",
+ "'&'", "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'",
+ "'//'", "'~'", "'{'", "'}'", "'<'", "'>'", "'=='",
+ "'>='", "'<='", "'<>'", "'!='", "'@'", "'->'", "'+='",
+ "'-='", "'*='", "'@='", "'/='", "'%='", "'&='", "'|='",
+ "'^='", "'<<='", "'>>='", "'**='", "'//='"]
+
+ symbolicNames = ["", "INDENT", "DEDENT", "STRING", "NUMBER",
+ "INTEGER", "AND", "AS", "ASSERT", "ASYNC", "AWAIT",
+ "BREAK", "CASE", "CLASS", "CONTINUE", "DEF", "DEL",
+ "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY", "FOR",
+ "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA",
+ "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS",
+ "RAISE", "RETURN", "TRUE", "TRY", "UNDERSCORE", "WHILE",
+ "WITH", "YIELD", "NEWLINE", "NAME", "STRING_LITERAL",
+ "BYTES_LITERAL", "DECIMAL_INTEGER", "OCT_INTEGER",
+ "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER", "IMAG_NUMBER",
+ "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN",
+ "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN",
+ "OPEN_BRACK", "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP",
+ "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS", "DIV",
+ "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE",
+ "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ",
+ "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN",
+ "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN",
+ "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN",
+ "LEFT_SHIFT_ASSIGN", "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN",
+ "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR"]
+
+ RULE_single_input = 0
+ RULE_file_input = 1
+ RULE_eval_input = 2
+ RULE_decorator = 3
+ RULE_decorators = 4
+ RULE_decorated = 5
+ RULE_async_funcdef = 6
+ RULE_funcdef = 7
+ RULE_parameters = 8
+ RULE_typedargslist = 9
+ RULE_tfpdef = 10
+ RULE_varargslist = 11
+ RULE_vfpdef = 12
+ RULE_stmt = 13
+ RULE_simple_stmts = 14
+ RULE_simple_stmt = 15
+ RULE_expr_stmt = 16
+ RULE_annassign = 17
+ RULE_testlist_star_expr = 18
+ RULE_augassign = 19
+ RULE_del_stmt = 20
+ RULE_pass_stmt = 21
+ RULE_flow_stmt = 22
+ RULE_break_stmt = 23
+ RULE_continue_stmt = 24
+ RULE_return_stmt = 25
+ RULE_yield_stmt = 26
+ RULE_raise_stmt = 27
+ RULE_import_stmt = 28
+ RULE_import_name = 29
+ RULE_import_from = 30
+ RULE_import_as_name = 31
+ RULE_dotted_as_name = 32
+ RULE_import_as_names = 33
+ RULE_dotted_as_names = 34
+ RULE_dotted_name = 35
+ RULE_global_stmt = 36
+ RULE_nonlocal_stmt = 37
+ RULE_assert_stmt = 38
+ RULE_compound_stmt = 39
+ RULE_async_stmt = 40
+ RULE_if_stmt = 41
+ RULE_while_stmt = 42
+ RULE_for_stmt = 43
+ RULE_try_stmt = 44
+ RULE_with_stmt = 45
+ RULE_with_item = 46
+ RULE_except_clause = 47
+ RULE_block = 48
+ RULE_match_stmt = 49
+ RULE_subject_expr = 50
+ RULE_star_named_expressions = 51
+ RULE_star_named_expression = 52
+ RULE_case_block = 53
+ RULE_guard = 54
+ RULE_patterns = 55
+ RULE_pattern = 56
+ RULE_as_pattern = 57
+ RULE_or_pattern = 58
+ RULE_closed_pattern = 59
+ RULE_literal_pattern = 60
+ RULE_literal_expr = 61
+ RULE_complex_number = 62
+ RULE_signed_number = 63
+ RULE_signed_real_number = 64
+ RULE_real_number = 65
+ RULE_imaginary_number = 66
+ RULE_capture_pattern = 67
+ RULE_pattern_capture_target = 68
+ RULE_wildcard_pattern = 69
+ RULE_value_pattern = 70
+ RULE_attr = 71
+ RULE_name_or_attr = 72
+ RULE_group_pattern = 73
+ RULE_sequence_pattern = 74
+ RULE_open_sequence_pattern = 75
+ RULE_maybe_sequence_pattern = 76
+ RULE_maybe_star_pattern = 77
+ RULE_star_pattern = 78
+ RULE_mapping_pattern = 79
+ RULE_items_pattern = 80
+ RULE_key_value_pattern = 81
+ RULE_double_star_pattern = 82
+ RULE_class_pattern = 83
+ RULE_positional_patterns = 84
+ RULE_keyword_patterns = 85
+ RULE_keyword_pattern = 86
+ RULE_test = 87
+ RULE_test_nocond = 88
+ RULE_lambdef = 89
+ RULE_lambdef_nocond = 90
+ RULE_or_test = 91
+ RULE_and_test = 92
+ RULE_not_test = 93
+ RULE_comparison = 94
+ RULE_comp_op = 95
+ RULE_star_expr = 96
+ RULE_expr = 97
+ RULE_atom_expr = 98
+ RULE_atom = 99
+ RULE_name = 100
+ RULE_testlist_comp = 101
+ RULE_trailer = 102
+ RULE_subscriptlist = 103
+ RULE_subscript_ = 104
+ RULE_sliceop = 105
+ RULE_exprlist = 106
+ RULE_testlist = 107
+ RULE_dictorsetmaker = 108
+ RULE_classdef = 109
+ RULE_arglist = 110
+ RULE_argument = 111
+ RULE_comp_iter = 112
+ RULE_comp_for = 113
+ RULE_comp_if = 114
+ RULE_encoding_decl = 115
+ RULE_yield_expr = 116
+ RULE_yield_arg = 117
+ RULE_strings = 118
+
+ ruleNames = ["single_input", "file_input", "eval_input", "decorator",
+ "decorators", "decorated", "async_funcdef", "funcdef",
+ "parameters", "typedargslist", "tfpdef", "varargslist",
+ "vfpdef", "stmt", "simple_stmts", "simple_stmt", "expr_stmt",
+ "annassign", "testlist_star_expr", "augassign", "del_stmt",
+ "pass_stmt", "flow_stmt", "break_stmt", "continue_stmt",
+ "return_stmt", "yield_stmt", "raise_stmt", "import_stmt",
+ "import_name", "import_from", "import_as_name", "dotted_as_name",
+ "import_as_names", "dotted_as_names", "dotted_name",
+ "global_stmt", "nonlocal_stmt", "assert_stmt", "compound_stmt",
+ "async_stmt", "if_stmt", "while_stmt", "for_stmt", "try_stmt",
+ "with_stmt", "with_item", "except_clause", "block", "match_stmt",
+ "subject_expr", "star_named_expressions", "star_named_expression",
+ "case_block", "guard", "patterns", "pattern", "as_pattern",
+ "or_pattern", "closed_pattern", "literal_pattern", "literal_expr",
+ "complex_number", "signed_number", "signed_real_number",
+ "real_number", "imaginary_number", "capture_pattern",
+ "pattern_capture_target", "wildcard_pattern", "value_pattern",
+ "attr", "name_or_attr", "group_pattern", "sequence_pattern",
+ "open_sequence_pattern", "maybe_sequence_pattern", "maybe_star_pattern",
+ "star_pattern", "mapping_pattern", "items_pattern", "key_value_pattern",
+ "double_star_pattern", "class_pattern", "positional_patterns",
+ "keyword_patterns", "keyword_pattern", "test", "test_nocond",
+ "lambdef", "lambdef_nocond", "or_test", "and_test", "not_test",
+ "comparison", "comp_op", "star_expr", "expr", "atom_expr",
+ "atom", "name", "testlist_comp", "trailer", "subscriptlist",
+ "subscript_", "sliceop", "exprlist", "testlist", "dictorsetmaker",
+ "classdef", "arglist", "argument", "comp_iter", "comp_for",
+ "comp_if", "encoding_decl", "yield_expr", "yield_arg",
+ "strings"]
+
+ EOF = Token.EOF
+ INDENT = 1
+ DEDENT = 2
+ STRING = 3
+ NUMBER = 4
+ INTEGER = 5
+ AND = 6
+ AS = 7
+ ASSERT = 8
+ ASYNC = 9
+ AWAIT = 10
+ BREAK = 11
+ CASE = 12
+ CLASS = 13
+ CONTINUE = 14
+ DEF = 15
+ DEL = 16
+ ELIF = 17
+ ELSE = 18
+ EXCEPT = 19
+ FALSE = 20
+ FINALLY = 21
+ FOR = 22
+ FROM = 23
+ GLOBAL = 24
+ IF = 25
+ IMPORT = 26
+ IN = 27
+ IS = 28
+ LAMBDA = 29
+ MATCH = 30
+ NONE = 31
+ NONLOCAL = 32
+ NOT = 33
+ OR = 34
+ PASS = 35
+ RAISE = 36
+ RETURN = 37
+ TRUE = 38
+ TRY = 39
+ UNDERSCORE = 40
+ WHILE = 41
+ WITH = 42
+ YIELD = 43
+ NEWLINE = 44
+ NAME = 45
+ STRING_LITERAL = 46
+ BYTES_LITERAL = 47
+ DECIMAL_INTEGER = 48
+ OCT_INTEGER = 49
+ HEX_INTEGER = 50
+ BIN_INTEGER = 51
+ FLOAT_NUMBER = 52
+ IMAG_NUMBER = 53
+ DOT = 54
+ ELLIPSIS = 55
+ STAR = 56
+ OPEN_PAREN = 57
+ CLOSE_PAREN = 58
+ COMMA = 59
+ COLON = 60
+ SEMI_COLON = 61
+ POWER = 62
+ ASSIGN = 63
+ OPEN_BRACK = 64
+ CLOSE_BRACK = 65
+ OR_OP = 66
+ XOR = 67
+ AND_OP = 68
+ LEFT_SHIFT = 69
+ RIGHT_SHIFT = 70
+ ADD = 71
+ MINUS = 72
+ DIV = 73
+ MOD = 74
+ IDIV = 75
+ NOT_OP = 76
+ OPEN_BRACE = 77
+ CLOSE_BRACE = 78
+ LESS_THAN = 79
+ GREATER_THAN = 80
+ EQUALS = 81
+ GT_EQ = 82
+ LT_EQ = 83
+ NOT_EQ_1 = 84
+ NOT_EQ_2 = 85
+ AT = 86
+ ARROW = 87
+ ADD_ASSIGN = 88
+ SUB_ASSIGN = 89
+ MULT_ASSIGN = 90
+ AT_ASSIGN = 91
+ DIV_ASSIGN = 92
+ MOD_ASSIGN = 93
+ AND_ASSIGN = 94
+ OR_ASSIGN = 95
+ XOR_ASSIGN = 96
+ LEFT_SHIFT_ASSIGN = 97
+ RIGHT_SHIFT_ASSIGN = 98
+ POWER_ASSIGN = 99
+ IDIV_ASSIGN = 100
+ SKIP_ = 101
+ UNKNOWN_CHAR = 102
+
+ def __init__(self, input: TokenStream, output: TextIO = sys.stdout):
+ super().__init__(input, output)
+ self.checkVersion("4.13.1")
+ self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache)
+ self._predicates = None
+
+ class Single_inputContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def simple_stmts(self):
+ return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0)
+
+ def compound_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Compound_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_single_input
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSingle_input"):
+ listener.enterSingle_input(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSingle_input"):
+ listener.exitSingle_input(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSingle_input"):
+ return visitor.visitSingle_input(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def single_input(self):
+
+ localctx = Python3Parser.Single_inputContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 0, self.RULE_single_input)
+ try:
+ self.state = 243
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 0, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 238
+ self.match(Python3Parser.NEWLINE)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 239
+ self.simple_stmts()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 240
+ self.compound_stmt()
+ self.state = 241
+ self.match(Python3Parser.NEWLINE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class File_inputContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EOF(self):
+ return self.getToken(Python3Parser.EOF, 0)
+
+ def NEWLINE(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.NEWLINE)
+ else:
+ return self.getToken(Python3Parser.NEWLINE, i)
+
+ def stmt(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.StmtContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.StmtContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_file_input
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFile_input"):
+ listener.enterFile_input(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFile_input"):
+ listener.exitFile_input(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFile_input"):
+ return visitor.visitFile_input(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def file_input(self):
+
+ localctx = Python3Parser.File_inputContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 2, self.RULE_file_input)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 249
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while (((_la) & ~0x3f) == 0 and ((1 << _la) & 252271930291384088) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4206977) != 0):
+ self.state = 247
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [44]:
+ self.state = 245
+ self.match(Python3Parser.NEWLINE)
+ pass
+ elif token in [3, 4, 8, 9, 10, 11, 13, 14, 15, 16, 20, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 45, 55, 56, 57, 64, 71, 72, 76, 77, 86]:
+ self.state = 246
+ self.stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 251
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 252
+ self.match(Python3Parser.EOF)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Eval_inputContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def EOF(self):
+ return self.getToken(Python3Parser.EOF, 0)
+
+ def NEWLINE(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.NEWLINE)
+ else:
+ return self.getToken(Python3Parser.NEWLINE, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_eval_input
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEval_input"):
+ listener.enterEval_input(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEval_input"):
+ listener.exitEval_input(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEval_input"):
+ return visitor.visitEval_input(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def eval_input(self):
+
+ localctx = Python3Parser.Eval_inputContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 4, self.RULE_eval_input)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 254
+ self.testlist()
+ self.state = 258
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 44:
+ self.state = 255
+ self.match(Python3Parser.NEWLINE)
+ self.state = 260
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 261
+ self.match(Python3Parser.EOF)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DecoratorContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def AT(self):
+ return self.getToken(Python3Parser.AT, 0)
+
+ def dotted_name(self):
+ return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0)
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def arglist(self):
+ return self.getTypedRuleContext(Python3Parser.ArglistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_decorator
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDecorator"):
+ listener.enterDecorator(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDecorator"):
+ listener.exitDecorator(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDecorator"):
+ return visitor.visitDecorator(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def decorator(self):
+
+ localctx = Python3Parser.DecoratorContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 6, self.RULE_decorator)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 263
+ self.match(Python3Parser.AT)
+ self.state = 264
+ self.dotted_name()
+ self.state = 270
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 57:
+ self.state = 265
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 267
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 266
+ self.arglist()
+
+ self.state = 269
+ self.match(Python3Parser.CLOSE_PAREN)
+
+ self.state = 272
+ self.match(Python3Parser.NEWLINE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DecoratorsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def decorator(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.DecoratorContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.DecoratorContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_decorators
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDecorators"):
+ listener.enterDecorators(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDecorators"):
+ listener.exitDecorators(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDecorators"):
+ return visitor.visitDecorators(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def decorators(self):
+
+ localctx = Python3Parser.DecoratorsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 8, self.RULE_decorators)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 275
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 274
+ self.decorator()
+ self.state = 277
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 86):
+ break
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DecoratedContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def decorators(self):
+ return self.getTypedRuleContext(Python3Parser.DecoratorsContext, 0)
+
+ def classdef(self):
+ return self.getTypedRuleContext(Python3Parser.ClassdefContext, 0)
+
+ def funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0)
+
+ def async_funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.Async_funcdefContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_decorated
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDecorated"):
+ listener.enterDecorated(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDecorated"):
+ listener.exitDecorated(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDecorated"):
+ return visitor.visitDecorated(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def decorated(self):
+
+ localctx = Python3Parser.DecoratedContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 10, self.RULE_decorated)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 279
+ self.decorators()
+ self.state = 283
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [13]:
+ self.state = 280
+ self.classdef()
+ pass
+ elif token in [15]:
+ self.state = 281
+ self.funcdef()
+ pass
+ elif token in [9]:
+ self.state = 282
+ self.async_funcdef()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Async_funcdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASYNC(self):
+ return self.getToken(Python3Parser.ASYNC, 0)
+
+ def funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_async_funcdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAsync_funcdef"):
+ listener.enterAsync_funcdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAsync_funcdef"):
+ listener.exitAsync_funcdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAsync_funcdef"):
+ return visitor.visitAsync_funcdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def async_funcdef(self):
+
+ localctx = Python3Parser.Async_funcdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 12, self.RULE_async_funcdef)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 285
+ self.match(Python3Parser.ASYNC)
+ self.state = 286
+ self.funcdef()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class FuncdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DEF(self):
+ return self.getToken(Python3Parser.DEF, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def parameters(self):
+ return self.getTypedRuleContext(Python3Parser.ParametersContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Python3Parser.BlockContext, 0)
+
+ def ARROW(self):
+ return self.getToken(Python3Parser.ARROW, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_funcdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFuncdef"):
+ listener.enterFuncdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFuncdef"):
+ listener.exitFuncdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFuncdef"):
+ return visitor.visitFuncdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def funcdef(self):
+
+ localctx = Python3Parser.FuncdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 14, self.RULE_funcdef)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 288
+ self.match(Python3Parser.DEF)
+ self.state = 289
+ self.name()
+ self.state = 290
+ self.parameters()
+ self.state = 293
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 87:
+ self.state = 291
+ self.match(Python3Parser.ARROW)
+ self.state = 292
+ self.test()
+
+ self.state = 295
+ self.match(Python3Parser.COLON)
+ self.state = 296
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ParametersContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def typedargslist(self):
+ return self.getTypedRuleContext(Python3Parser.TypedargslistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_parameters
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterParameters"):
+ listener.enterParameters(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitParameters"):
+ listener.exitParameters(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitParameters"):
+ return visitor.visitParameters(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def parameters(self):
+
+ localctx = Python3Parser.ParametersContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 16, self.RULE_parameters)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 298
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 300
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0):
+ self.state = 299
+ self.typedargslist()
+
+ self.state = 302
+ self.match(Python3Parser.CLOSE_PAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TypedargslistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def tfpdef(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TfpdefContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TfpdefContext, i)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def ASSIGN(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ASSIGN)
+ else:
+ return self.getToken(Python3Parser.ASSIGN, i)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_typedargslist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTypedargslist"):
+ listener.enterTypedargslist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTypedargslist"):
+ listener.exitTypedargslist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTypedargslist"):
+ return visitor.visitTypedargslist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def typedargslist(self):
+
+ localctx = Python3Parser.TypedargslistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 18, self.RULE_typedargslist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 385
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [30, 40, 45]:
+ self.state = 304
+ self.tfpdef()
+ self.state = 307
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 305
+ self.match(Python3Parser.ASSIGN)
+ self.state = 306
+ self.test()
+
+ self.state = 317
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 12, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 309
+ self.match(Python3Parser.COMMA)
+ self.state = 310
+ self.tfpdef()
+ self.state = 313
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 311
+ self.match(Python3Parser.ASSIGN)
+ self.state = 312
+ self.test()
+
+ self.state = 319
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 12, self._ctx)
+
+ self.state = 353
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 320
+ self.match(Python3Parser.COMMA)
+ self.state = 351
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.state = 321
+ self.match(Python3Parser.STAR)
+ self.state = 323
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0):
+ self.state = 322
+ self.tfpdef()
+
+ self.state = 333
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 15, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 325
+ self.match(Python3Parser.COMMA)
+ self.state = 326
+ self.tfpdef()
+ self.state = 329
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 327
+ self.match(Python3Parser.ASSIGN)
+ self.state = 328
+ self.test()
+
+ self.state = 335
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 15, self._ctx)
+
+ self.state = 344
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 336
+ self.match(Python3Parser.COMMA)
+ self.state = 342
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 337
+ self.match(Python3Parser.POWER)
+ self.state = 338
+ self.tfpdef()
+ self.state = 340
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 339
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [62]:
+ self.state = 346
+ self.match(Python3Parser.POWER)
+ self.state = 347
+ self.tfpdef()
+ self.state = 349
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 348
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [58]:
+ pass
+ else:
+ pass
+
+ pass
+ elif token in [56]:
+ self.state = 355
+ self.match(Python3Parser.STAR)
+ self.state = 357
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0):
+ self.state = 356
+ self.tfpdef()
+
+ self.state = 367
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 24, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 359
+ self.match(Python3Parser.COMMA)
+ self.state = 360
+ self.tfpdef()
+ self.state = 363
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 361
+ self.match(Python3Parser.ASSIGN)
+ self.state = 362
+ self.test()
+
+ self.state = 369
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 24, self._ctx)
+
+ self.state = 378
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 370
+ self.match(Python3Parser.COMMA)
+ self.state = 376
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 371
+ self.match(Python3Parser.POWER)
+ self.state = 372
+ self.tfpdef()
+ self.state = 374
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 373
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [62]:
+ self.state = 380
+ self.match(Python3Parser.POWER)
+ self.state = 381
+ self.tfpdef()
+ self.state = 383
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 382
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TfpdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_tfpdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTfpdef"):
+ listener.enterTfpdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTfpdef"):
+ listener.exitTfpdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTfpdef"):
+ return visitor.visitTfpdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def tfpdef(self):
+
+ localctx = Python3Parser.TfpdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 20, self.RULE_tfpdef)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 387
+ self.name()
+ self.state = 390
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 60:
+ self.state = 388
+ self.match(Python3Parser.COLON)
+ self.state = 389
+ self.test()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VarargslistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def vfpdef(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.VfpdefContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.VfpdefContext, i)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def ASSIGN(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ASSIGN)
+ else:
+ return self.getToken(Python3Parser.ASSIGN, i)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_varargslist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVarargslist"):
+ listener.enterVarargslist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVarargslist"):
+ listener.exitVarargslist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVarargslist"):
+ return visitor.visitVarargslist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def varargslist(self):
+
+ localctx = Python3Parser.VarargslistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 22, self.RULE_varargslist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 473
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [30, 40, 45]:
+ self.state = 392
+ self.vfpdef()
+ self.state = 395
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 393
+ self.match(Python3Parser.ASSIGN)
+ self.state = 394
+ self.test()
+
+ self.state = 405
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 33, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 397
+ self.match(Python3Parser.COMMA)
+ self.state = 398
+ self.vfpdef()
+ self.state = 401
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 399
+ self.match(Python3Parser.ASSIGN)
+ self.state = 400
+ self.test()
+
+ self.state = 407
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 33, self._ctx)
+
+ self.state = 441
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 408
+ self.match(Python3Parser.COMMA)
+ self.state = 439
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.state = 409
+ self.match(Python3Parser.STAR)
+ self.state = 411
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0):
+ self.state = 410
+ self.vfpdef()
+
+ self.state = 421
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 36, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 413
+ self.match(Python3Parser.COMMA)
+ self.state = 414
+ self.vfpdef()
+ self.state = 417
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 415
+ self.match(Python3Parser.ASSIGN)
+ self.state = 416
+ self.test()
+
+ self.state = 423
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 36, self._ctx)
+
+ self.state = 432
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 424
+ self.match(Python3Parser.COMMA)
+ self.state = 430
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 425
+ self.match(Python3Parser.POWER)
+ self.state = 426
+ self.vfpdef()
+ self.state = 428
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 427
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [62]:
+ self.state = 434
+ self.match(Python3Parser.POWER)
+ self.state = 435
+ self.vfpdef()
+ self.state = 437
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 436
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [60]:
+ pass
+ else:
+ pass
+
+ pass
+ elif token in [56]:
+ self.state = 443
+ self.match(Python3Parser.STAR)
+ self.state = 445
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0):
+ self.state = 444
+ self.vfpdef()
+
+ self.state = 455
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 45, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 447
+ self.match(Python3Parser.COMMA)
+ self.state = 448
+ self.vfpdef()
+ self.state = 451
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 449
+ self.match(Python3Parser.ASSIGN)
+ self.state = 450
+ self.test()
+
+ self.state = 457
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 45, self._ctx)
+
+ self.state = 466
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 458
+ self.match(Python3Parser.COMMA)
+ self.state = 464
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 62:
+ self.state = 459
+ self.match(Python3Parser.POWER)
+ self.state = 460
+ self.vfpdef()
+ self.state = 462
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 461
+ self.match(Python3Parser.COMMA)
+
+ pass
+ elif token in [62]:
+ self.state = 468
+ self.match(Python3Parser.POWER)
+ self.state = 469
+ self.vfpdef()
+ self.state = 471
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 470
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class VfpdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_vfpdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterVfpdef"):
+ listener.enterVfpdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitVfpdef"):
+ listener.exitVfpdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitVfpdef"):
+ return visitor.visitVfpdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def vfpdef(self):
+
+ localctx = Python3Parser.VfpdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 24, self.RULE_vfpdef)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 475
+ self.name()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simple_stmts(self):
+ return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0)
+
+ def compound_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Compound_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStmt"):
+ listener.enterStmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStmt"):
+ listener.exitStmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStmt"):
+ return visitor.visitStmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def stmt(self):
+
+ localctx = Python3Parser.StmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 26, self.RULE_stmt)
+ try:
+ self.state = 479
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 51, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 477
+ self.simple_stmts()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 478
+ self.compound_stmt()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Simple_stmtsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simple_stmt(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Simple_stmtContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Simple_stmtContext, i)
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def SEMI_COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.SEMI_COLON)
+ else:
+ return self.getToken(Python3Parser.SEMI_COLON, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_simple_stmts
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSimple_stmts"):
+ listener.enterSimple_stmts(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSimple_stmts"):
+ listener.exitSimple_stmts(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSimple_stmts"):
+ return visitor.visitSimple_stmts(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def simple_stmts(self):
+
+ localctx = Python3Parser.Simple_stmtsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 28, self.RULE_simple_stmts)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 481
+ self.simple_stmt()
+ self.state = 486
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 52, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 482
+ self.match(Python3Parser.SEMI_COLON)
+ self.state = 483
+ self.simple_stmt()
+ self.state = 488
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 52, self._ctx)
+
+ self.state = 490
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 61:
+ self.state = 489
+ self.match(Python3Parser.SEMI_COLON)
+
+ self.state = 492
+ self.match(Python3Parser.NEWLINE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Simple_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expr_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Expr_stmtContext, 0)
+
+ def del_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Del_stmtContext, 0)
+
+ def pass_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Pass_stmtContext, 0)
+
+ def flow_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Flow_stmtContext, 0)
+
+ def import_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Import_stmtContext, 0)
+
+ def global_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Global_stmtContext, 0)
+
+ def nonlocal_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Nonlocal_stmtContext, 0)
+
+ def assert_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Assert_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_simple_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSimple_stmt"):
+ listener.enterSimple_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSimple_stmt"):
+ listener.exitSimple_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSimple_stmt"):
+ return visitor.visitSimple_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def simple_stmt(self):
+
+ localctx = Python3Parser.Simple_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 30, self.RULE_simple_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 502
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]:
+ self.state = 494
+ self.expr_stmt()
+ pass
+ elif token in [16]:
+ self.state = 495
+ self.del_stmt()
+ pass
+ elif token in [35]:
+ self.state = 496
+ self.pass_stmt()
+ pass
+ elif token in [11, 14, 36, 37, 43]:
+ self.state = 497
+ self.flow_stmt()
+ pass
+ elif token in [23, 26]:
+ self.state = 498
+ self.import_stmt()
+ pass
+ elif token in [24]:
+ self.state = 499
+ self.global_stmt()
+ pass
+ elif token in [32]:
+ self.state = 500
+ self.nonlocal_stmt()
+ pass
+ elif token in [8]:
+ self.state = 501
+ self.assert_stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Expr_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def testlist_star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Testlist_star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Testlist_star_exprContext, i)
+
+ def annassign(self):
+ return self.getTypedRuleContext(Python3Parser.AnnassignContext, 0)
+
+ def augassign(self):
+ return self.getTypedRuleContext(Python3Parser.AugassignContext, 0)
+
+ def yield_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Yield_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Yield_exprContext, i)
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def ASSIGN(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ASSIGN)
+ else:
+ return self.getToken(Python3Parser.ASSIGN, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_expr_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpr_stmt"):
+ listener.enterExpr_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpr_stmt"):
+ listener.exitExpr_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpr_stmt"):
+ return visitor.visitExpr_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expr_stmt(self):
+
+ localctx = Python3Parser.Expr_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 32, self.RULE_expr_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 504
+ self.testlist_star_expr()
+ self.state = 521
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [60]:
+ self.state = 505
+ self.annassign()
+ pass
+ elif token in [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]:
+ self.state = 506
+ self.augassign()
+ self.state = 509
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [43]:
+ self.state = 507
+ self.yield_expr()
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 508
+ self.testlist()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ pass
+ elif token in [44, 61, 63]:
+ self.state = 518
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 63:
+ self.state = 511
+ self.match(Python3Parser.ASSIGN)
+ self.state = 514
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [43]:
+ self.state = 512
+ self.yield_expr()
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]:
+ self.state = 513
+ self.testlist_star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 520
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AnnassignContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def ASSIGN(self):
+ return self.getToken(Python3Parser.ASSIGN, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_annassign
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnnassign"):
+ listener.enterAnnassign(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnnassign"):
+ listener.exitAnnassign(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnnassign"):
+ return visitor.visitAnnassign(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def annassign(self):
+
+ localctx = Python3Parser.AnnassignContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 34, self.RULE_annassign)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 523
+ self.match(Python3Parser.COLON)
+ self.state = 524
+ self.test()
+ self.state = 527
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 63:
+ self.state = 525
+ self.match(Python3Parser.ASSIGN)
+ self.state = 526
+ self.test()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Testlist_star_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_exprContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_testlist_star_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTestlist_star_expr"):
+ listener.enterTestlist_star_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTestlist_star_expr"):
+ listener.exitTestlist_star_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTestlist_star_expr"):
+ return visitor.visitTestlist_star_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def testlist_star_expr(self):
+
+ localctx = Python3Parser.Testlist_star_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 36, self.RULE_testlist_star_expr)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 531
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 529
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 530
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 540
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 62, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 533
+ self.match(Python3Parser.COMMA)
+ self.state = 536
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 534
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 535
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 542
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 62, self._ctx)
+
+ self.state = 544
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 543
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AugassignContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ADD_ASSIGN(self):
+ return self.getToken(Python3Parser.ADD_ASSIGN, 0)
+
+ def SUB_ASSIGN(self):
+ return self.getToken(Python3Parser.SUB_ASSIGN, 0)
+
+ def MULT_ASSIGN(self):
+ return self.getToken(Python3Parser.MULT_ASSIGN, 0)
+
+ def AT_ASSIGN(self):
+ return self.getToken(Python3Parser.AT_ASSIGN, 0)
+
+ def DIV_ASSIGN(self):
+ return self.getToken(Python3Parser.DIV_ASSIGN, 0)
+
+ def MOD_ASSIGN(self):
+ return self.getToken(Python3Parser.MOD_ASSIGN, 0)
+
+ def AND_ASSIGN(self):
+ return self.getToken(Python3Parser.AND_ASSIGN, 0)
+
+ def OR_ASSIGN(self):
+ return self.getToken(Python3Parser.OR_ASSIGN, 0)
+
+ def XOR_ASSIGN(self):
+ return self.getToken(Python3Parser.XOR_ASSIGN, 0)
+
+ def LEFT_SHIFT_ASSIGN(self):
+ return self.getToken(Python3Parser.LEFT_SHIFT_ASSIGN, 0)
+
+ def RIGHT_SHIFT_ASSIGN(self):
+ return self.getToken(Python3Parser.RIGHT_SHIFT_ASSIGN, 0)
+
+ def POWER_ASSIGN(self):
+ return self.getToken(Python3Parser.POWER_ASSIGN, 0)
+
+ def IDIV_ASSIGN(self):
+ return self.getToken(Python3Parser.IDIV_ASSIGN, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_augassign
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAugassign"):
+ listener.enterAugassign(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAugassign"):
+ listener.exitAugassign(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAugassign"):
+ return visitor.visitAugassign(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def augassign(self):
+
+ localctx = Python3Parser.AugassignContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 38, self.RULE_augassign)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 546
+ _la = self._input.LA(1)
+ if not (((((_la - 88)) & ~0x3f) == 0 and ((1 << (_la - 88)) & 8191) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Del_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def DEL(self):
+ return self.getToken(Python3Parser.DEL, 0)
+
+ def exprlist(self):
+ return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_del_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDel_stmt"):
+ listener.enterDel_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDel_stmt"):
+ listener.exitDel_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDel_stmt"):
+ return visitor.visitDel_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def del_stmt(self):
+
+ localctx = Python3Parser.Del_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 40, self.RULE_del_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 548
+ self.match(Python3Parser.DEL)
+ self.state = 549
+ self.exprlist()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Pass_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def PASS(self):
+ return self.getToken(Python3Parser.PASS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_pass_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPass_stmt"):
+ listener.enterPass_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPass_stmt"):
+ listener.exitPass_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPass_stmt"):
+ return visitor.visitPass_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pass_stmt(self):
+
+ localctx = Python3Parser.Pass_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 42, self.RULE_pass_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 551
+ self.match(Python3Parser.PASS)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Flow_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def break_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Break_stmtContext, 0)
+
+ def continue_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Continue_stmtContext, 0)
+
+ def return_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Return_stmtContext, 0)
+
+ def raise_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Raise_stmtContext, 0)
+
+ def yield_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Yield_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_flow_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFlow_stmt"):
+ listener.enterFlow_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFlow_stmt"):
+ listener.exitFlow_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFlow_stmt"):
+ return visitor.visitFlow_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def flow_stmt(self):
+
+ localctx = Python3Parser.Flow_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 44, self.RULE_flow_stmt)
+ try:
+ self.state = 558
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [11]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 553
+ self.break_stmt()
+ pass
+ elif token in [14]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 554
+ self.continue_stmt()
+ pass
+ elif token in [37]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 555
+ self.return_stmt()
+ pass
+ elif token in [36]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 556
+ self.raise_stmt()
+ pass
+ elif token in [43]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 557
+ self.yield_stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Break_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def BREAK(self):
+ return self.getToken(Python3Parser.BREAK, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_break_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBreak_stmt"):
+ listener.enterBreak_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBreak_stmt"):
+ listener.exitBreak_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBreak_stmt"):
+ return visitor.visitBreak_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def break_stmt(self):
+
+ localctx = Python3Parser.Break_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 46, self.RULE_break_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 560
+ self.match(Python3Parser.BREAK)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Continue_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CONTINUE(self):
+ return self.getToken(Python3Parser.CONTINUE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_continue_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterContinue_stmt"):
+ listener.enterContinue_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitContinue_stmt"):
+ listener.exitContinue_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitContinue_stmt"):
+ return visitor.visitContinue_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def continue_stmt(self):
+
+ localctx = Python3Parser.Continue_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 48, self.RULE_continue_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 562
+ self.match(Python3Parser.CONTINUE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Return_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def RETURN(self):
+ return self.getToken(Python3Parser.RETURN, 0)
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_return_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReturn_stmt"):
+ listener.enterReturn_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReturn_stmt"):
+ listener.exitReturn_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReturn_stmt"):
+ return visitor.visitReturn_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def return_stmt(self):
+
+ localctx = Python3Parser.Return_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 50, self.RULE_return_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 564
+ self.match(Python3Parser.RETURN)
+ self.state = 566
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 565
+ self.testlist()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Yield_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def yield_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Yield_exprContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_yield_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterYield_stmt"):
+ listener.enterYield_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitYield_stmt"):
+ listener.exitYield_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitYield_stmt"):
+ return visitor.visitYield_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def yield_stmt(self):
+
+ localctx = Python3Parser.Yield_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 52, self.RULE_yield_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 568
+ self.yield_expr()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Raise_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def RAISE(self):
+ return self.getToken(Python3Parser.RAISE, 0)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def FROM(self):
+ return self.getToken(Python3Parser.FROM, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_raise_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterRaise_stmt"):
+ listener.enterRaise_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitRaise_stmt"):
+ listener.exitRaise_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitRaise_stmt"):
+ return visitor.visitRaise_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def raise_stmt(self):
+
+ localctx = Python3Parser.Raise_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 54, self.RULE_raise_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 570
+ self.match(Python3Parser.RAISE)
+ self.state = 576
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 571
+ self.test()
+ self.state = 574
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 23:
+ self.state = 572
+ self.match(Python3Parser.FROM)
+ self.state = 573
+ self.test()
+
+
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def import_name(self):
+ return self.getTypedRuleContext(Python3Parser.Import_nameContext, 0)
+
+ def import_from(self):
+ return self.getTypedRuleContext(Python3Parser.Import_fromContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_stmt"):
+ listener.enterImport_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_stmt"):
+ listener.exitImport_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_stmt"):
+ return visitor.visitImport_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_stmt(self):
+
+ localctx = Python3Parser.Import_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 56, self.RULE_import_stmt)
+ try:
+ self.state = 580
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [26]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 578
+ self.import_name()
+ pass
+ elif token in [23]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 579
+ self.import_from()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_nameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IMPORT(self):
+ return self.getToken(Python3Parser.IMPORT, 0)
+
+ def dotted_as_names(self):
+ return self.getTypedRuleContext(Python3Parser.Dotted_as_namesContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_name"):
+ listener.enterImport_name(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_name"):
+ listener.exitImport_name(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_name"):
+ return visitor.visitImport_name(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_name(self):
+
+ localctx = Python3Parser.Import_nameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 58, self.RULE_import_name)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 582
+ self.match(Python3Parser.IMPORT)
+ self.state = 583
+ self.dotted_as_names()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_fromContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FROM(self):
+ return self.getToken(Python3Parser.FROM, 0)
+
+ def IMPORT(self):
+ return self.getToken(Python3Parser.IMPORT, 0)
+
+ def dotted_name(self):
+ return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def import_as_names(self):
+ return self.getTypedRuleContext(Python3Parser.Import_as_namesContext, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.DOT)
+ else:
+ return self.getToken(Python3Parser.DOT, i)
+
+ def ELLIPSIS(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ELLIPSIS)
+ else:
+ return self.getToken(Python3Parser.ELLIPSIS, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_from
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_from"):
+ listener.enterImport_from(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_from"):
+ listener.exitImport_from(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_from"):
+ return visitor.visitImport_from(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_from(self):
+
+ localctx = Python3Parser.Import_fromContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 60, self.RULE_import_from)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 585
+ self.match(Python3Parser.FROM)
+ self.state = 598
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 71, self._ctx)
+ if la_ == 1:
+ self.state = 589
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 54 or _la == 55:
+ self.state = 586
+ _la = self._input.LA(1)
+ if not (_la == 54 or _la == 55):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 591
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 592
+ self.dotted_name()
+ pass
+
+ elif la_ == 2:
+ self.state = 594
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 593
+ _la = self._input.LA(1)
+ if not (_la == 54 or _la == 55):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 596
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 54 or _la == 55):
+ break
+
+ pass
+
+ self.state = 600
+ self.match(Python3Parser.IMPORT)
+ self.state = 607
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.state = 601
+ self.match(Python3Parser.STAR)
+ pass
+ elif token in [57]:
+ self.state = 602
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 603
+ self.import_as_names()
+ self.state = 604
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+ elif token in [30, 40, 45]:
+ self.state = 606
+ self.import_as_names()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_as_nameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_as_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_as_name"):
+ listener.enterImport_as_name(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_as_name"):
+ listener.exitImport_as_name(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_as_name"):
+ return visitor.visitImport_as_name(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_as_name(self):
+
+ localctx = Python3Parser.Import_as_nameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 62, self.RULE_import_as_name)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 609
+ self.name()
+ self.state = 612
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 610
+ self.match(Python3Parser.AS)
+ self.state = 611
+ self.name()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Dotted_as_nameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def dotted_name(self):
+ return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_dotted_as_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDotted_as_name"):
+ listener.enterDotted_as_name(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDotted_as_name"):
+ listener.exitDotted_as_name(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDotted_as_name"):
+ return visitor.visitDotted_as_name(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dotted_as_name(self):
+
+ localctx = Python3Parser.Dotted_as_nameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 64, self.RULE_dotted_as_name)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 614
+ self.dotted_name()
+ self.state = 617
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 615
+ self.match(Python3Parser.AS)
+ self.state = 616
+ self.name()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Import_as_namesContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def import_as_name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Import_as_nameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Import_as_nameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_import_as_names
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImport_as_names"):
+ listener.enterImport_as_names(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImport_as_names"):
+ listener.exitImport_as_names(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImport_as_names"):
+ return visitor.visitImport_as_names(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def import_as_names(self):
+
+ localctx = Python3Parser.Import_as_namesContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 66, self.RULE_import_as_names)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 619
+ self.import_as_name()
+ self.state = 624
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 75, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 620
+ self.match(Python3Parser.COMMA)
+ self.state = 621
+ self.import_as_name()
+ self.state = 626
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 75, self._ctx)
+
+ self.state = 628
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 627
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Dotted_as_namesContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def dotted_as_name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Dotted_as_nameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Dotted_as_nameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_dotted_as_names
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDotted_as_names"):
+ listener.enterDotted_as_names(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDotted_as_names"):
+ listener.exitDotted_as_names(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDotted_as_names"):
+ return visitor.visitDotted_as_names(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dotted_as_names(self):
+
+ localctx = Python3Parser.Dotted_as_namesContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 68, self.RULE_dotted_as_names)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 630
+ self.dotted_as_name()
+ self.state = 635
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 59:
+ self.state = 631
+ self.match(Python3Parser.COMMA)
+ self.state = 632
+ self.dotted_as_name()
+ self.state = 637
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Dotted_nameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.DOT)
+ else:
+ return self.getToken(Python3Parser.DOT, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_dotted_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDotted_name"):
+ listener.enterDotted_name(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDotted_name"):
+ listener.exitDotted_name(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDotted_name"):
+ return visitor.visitDotted_name(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dotted_name(self):
+
+ localctx = Python3Parser.Dotted_nameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 70, self.RULE_dotted_name)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 638
+ self.name()
+ self.state = 643
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 54:
+ self.state = 639
+ self.match(Python3Parser.DOT)
+ self.state = 640
+ self.name()
+ self.state = 645
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Global_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def GLOBAL(self):
+ return self.getToken(Python3Parser.GLOBAL, 0)
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_global_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterGlobal_stmt"):
+ listener.enterGlobal_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitGlobal_stmt"):
+ listener.exitGlobal_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitGlobal_stmt"):
+ return visitor.visitGlobal_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def global_stmt(self):
+
+ localctx = Python3Parser.Global_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 72, self.RULE_global_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 646
+ self.match(Python3Parser.GLOBAL)
+ self.state = 647
+ self.name()
+ self.state = 652
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 59:
+ self.state = 648
+ self.match(Python3Parser.COMMA)
+ self.state = 649
+ self.name()
+ self.state = 654
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Nonlocal_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NONLOCAL(self):
+ return self.getToken(Python3Parser.NONLOCAL, 0)
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_nonlocal_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNonlocal_stmt"):
+ listener.enterNonlocal_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNonlocal_stmt"):
+ listener.exitNonlocal_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNonlocal_stmt"):
+ return visitor.visitNonlocal_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def nonlocal_stmt(self):
+
+ localctx = Python3Parser.Nonlocal_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 74, self.RULE_nonlocal_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 655
+ self.match(Python3Parser.NONLOCAL)
+ self.state = 656
+ self.name()
+ self.state = 661
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 59:
+ self.state = 657
+ self.match(Python3Parser.COMMA)
+ self.state = 658
+ self.name()
+ self.state = 663
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Assert_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASSERT(self):
+ return self.getToken(Python3Parser.ASSERT, 0)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COMMA(self):
+ return self.getToken(Python3Parser.COMMA, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_assert_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAssert_stmt"):
+ listener.enterAssert_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAssert_stmt"):
+ listener.exitAssert_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAssert_stmt"):
+ return visitor.visitAssert_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def assert_stmt(self):
+
+ localctx = Python3Parser.Assert_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 76, self.RULE_assert_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 664
+ self.match(Python3Parser.ASSERT)
+ self.state = 665
+ self.test()
+ self.state = 668
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 666
+ self.match(Python3Parser.COMMA)
+ self.state = 667
+ self.test()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Compound_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def if_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.If_stmtContext, 0)
+
+ def while_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.While_stmtContext, 0)
+
+ def for_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.For_stmtContext, 0)
+
+ def try_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Try_stmtContext, 0)
+
+ def with_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.With_stmtContext, 0)
+
+ def funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0)
+
+ def classdef(self):
+ return self.getTypedRuleContext(Python3Parser.ClassdefContext, 0)
+
+ def decorated(self):
+ return self.getTypedRuleContext(Python3Parser.DecoratedContext, 0)
+
+ def async_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Async_stmtContext, 0)
+
+ def match_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.Match_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_compound_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCompound_stmt"):
+ listener.enterCompound_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCompound_stmt"):
+ listener.exitCompound_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCompound_stmt"):
+ return visitor.visitCompound_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def compound_stmt(self):
+
+ localctx = Python3Parser.Compound_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 78, self.RULE_compound_stmt)
+ try:
+ self.state = 680
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [25]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 670
+ self.if_stmt()
+ pass
+ elif token in [41]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 671
+ self.while_stmt()
+ pass
+ elif token in [22]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 672
+ self.for_stmt()
+ pass
+ elif token in [39]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 673
+ self.try_stmt()
+ pass
+ elif token in [42]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 674
+ self.with_stmt()
+ pass
+ elif token in [15]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 675
+ self.funcdef()
+ pass
+ elif token in [13]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 676
+ self.classdef()
+ pass
+ elif token in [86]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 677
+ self.decorated()
+ pass
+ elif token in [9]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 678
+ self.async_stmt()
+ pass
+ elif token in [30]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 679
+ self.match_stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Async_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def ASYNC(self):
+ return self.getToken(Python3Parser.ASYNC, 0)
+
+ def funcdef(self):
+ return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0)
+
+ def with_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.With_stmtContext, 0)
+
+ def for_stmt(self):
+ return self.getTypedRuleContext(Python3Parser.For_stmtContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_async_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAsync_stmt"):
+ listener.enterAsync_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAsync_stmt"):
+ listener.exitAsync_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAsync_stmt"):
+ return visitor.visitAsync_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def async_stmt(self):
+
+ localctx = Python3Parser.Async_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 80, self.RULE_async_stmt)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 682
+ self.match(Python3Parser.ASYNC)
+ self.state = 686
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [15]:
+ self.state = 683
+ self.funcdef()
+ pass
+ elif token in [42]:
+ self.state = 684
+ self.with_stmt()
+ pass
+ elif token in [22]:
+ self.state = 685
+ self.for_stmt()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class If_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Python3Parser.IF, 0)
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.BlockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.BlockContext, i)
+
+ def ELIF(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ELIF)
+ else:
+ return self.getToken(Python3Parser.ELIF, i)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_if_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterIf_stmt"):
+ listener.enterIf_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitIf_stmt"):
+ listener.exitIf_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitIf_stmt"):
+ return visitor.visitIf_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def if_stmt(self):
+
+ localctx = Python3Parser.If_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 82, self.RULE_if_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 688
+ self.match(Python3Parser.IF)
+ self.state = 689
+ self.test()
+ self.state = 690
+ self.match(Python3Parser.COLON)
+ self.state = 691
+ self.block()
+ self.state = 699
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 17:
+ self.state = 692
+ self.match(Python3Parser.ELIF)
+ self.state = 693
+ self.test()
+ self.state = 694
+ self.match(Python3Parser.COLON)
+ self.state = 695
+ self.block()
+ self.state = 701
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 705
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 18:
+ self.state = 702
+ self.match(Python3Parser.ELSE)
+ self.state = 703
+ self.match(Python3Parser.COLON)
+ self.state = 704
+ self.block()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class While_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def WHILE(self):
+ return self.getToken(Python3Parser.WHILE, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.BlockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.BlockContext, i)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_while_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWhile_stmt"):
+ listener.enterWhile_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWhile_stmt"):
+ listener.exitWhile_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWhile_stmt"):
+ return visitor.visitWhile_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def while_stmt(self):
+
+ localctx = Python3Parser.While_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 84, self.RULE_while_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 707
+ self.match(Python3Parser.WHILE)
+ self.state = 708
+ self.test()
+ self.state = 709
+ self.match(Python3Parser.COLON)
+ self.state = 710
+ self.block()
+ self.state = 714
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 18:
+ self.state = 711
+ self.match(Python3Parser.ELSE)
+ self.state = 712
+ self.match(Python3Parser.COLON)
+ self.state = 713
+ self.block()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class For_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Python3Parser.FOR, 0)
+
+ def exprlist(self):
+ return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0)
+
+ def IN(self):
+ return self.getToken(Python3Parser.IN, 0)
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.BlockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.BlockContext, i)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_for_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterFor_stmt"):
+ listener.enterFor_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitFor_stmt"):
+ listener.exitFor_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitFor_stmt"):
+ return visitor.visitFor_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def for_stmt(self):
+
+ localctx = Python3Parser.For_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 86, self.RULE_for_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 716
+ self.match(Python3Parser.FOR)
+ self.state = 717
+ self.exprlist()
+ self.state = 718
+ self.match(Python3Parser.IN)
+ self.state = 719
+ self.testlist()
+ self.state = 720
+ self.match(Python3Parser.COLON)
+ self.state = 721
+ self.block()
+ self.state = 725
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 18:
+ self.state = 722
+ self.match(Python3Parser.ELSE)
+ self.state = 723
+ self.match(Python3Parser.COLON)
+ self.state = 724
+ self.block()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Try_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def TRY(self):
+ return self.getToken(Python3Parser.TRY, 0)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.BlockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.BlockContext, i)
+
+ def FINALLY(self):
+ return self.getToken(Python3Parser.FINALLY, 0)
+
+ def except_clause(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Except_clauseContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Except_clauseContext, i)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_try_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTry_stmt"):
+ listener.enterTry_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTry_stmt"):
+ listener.exitTry_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTry_stmt"):
+ return visitor.visitTry_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def try_stmt(self):
+
+ localctx = Python3Parser.Try_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 88, self.RULE_try_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 727
+ self.match(Python3Parser.TRY)
+ self.state = 728
+ self.match(Python3Parser.COLON)
+ self.state = 729
+ self.block()
+ self.state = 751
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [19]:
+ self.state = 734
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 730
+ self.except_clause()
+ self.state = 731
+ self.match(Python3Parser.COLON)
+ self.state = 732
+ self.block()
+ self.state = 736
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 19):
+ break
+
+ self.state = 741
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 18:
+ self.state = 738
+ self.match(Python3Parser.ELSE)
+ self.state = 739
+ self.match(Python3Parser.COLON)
+ self.state = 740
+ self.block()
+
+ self.state = 746
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 21:
+ self.state = 743
+ self.match(Python3Parser.FINALLY)
+ self.state = 744
+ self.match(Python3Parser.COLON)
+ self.state = 745
+ self.block()
+
+ pass
+ elif token in [21]:
+ self.state = 748
+ self.match(Python3Parser.FINALLY)
+ self.state = 749
+ self.match(Python3Parser.COLON)
+ self.state = 750
+ self.block()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class With_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def WITH(self):
+ return self.getToken(Python3Parser.WITH, 0)
+
+ def with_item(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.With_itemContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.With_itemContext, i)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Python3Parser.BlockContext, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_with_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWith_stmt"):
+ listener.enterWith_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWith_stmt"):
+ listener.exitWith_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWith_stmt"):
+ return visitor.visitWith_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def with_stmt(self):
+
+ localctx = Python3Parser.With_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 90, self.RULE_with_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 753
+ self.match(Python3Parser.WITH)
+ self.state = 754
+ self.with_item()
+ self.state = 759
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 59:
+ self.state = 755
+ self.match(Python3Parser.COMMA)
+ self.state = 756
+ self.with_item()
+ self.state = 761
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ self.state = 762
+ self.match(Python3Parser.COLON)
+ self.state = 763
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class With_itemContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def expr(self):
+ return self.getTypedRuleContext(Python3Parser.ExprContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_with_item
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWith_item"):
+ listener.enterWith_item(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWith_item"):
+ listener.exitWith_item(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWith_item"):
+ return visitor.visitWith_item(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def with_item(self):
+
+ localctx = Python3Parser.With_itemContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 92, self.RULE_with_item)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 765
+ self.test()
+ self.state = 768
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 766
+ self.match(Python3Parser.AS)
+ self.state = 767
+ self.expr(0)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Except_clauseContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def EXCEPT(self):
+ return self.getToken(Python3Parser.EXCEPT, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_except_clause
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExcept_clause"):
+ listener.enterExcept_clause(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExcept_clause"):
+ listener.exitExcept_clause(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExcept_clause"):
+ return visitor.visitExcept_clause(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def except_clause(self):
+
+ localctx = Python3Parser.Except_clauseContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 94, self.RULE_except_clause)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 770
+ self.match(Python3Parser.EXCEPT)
+ self.state = 776
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 771
+ self.test()
+ self.state = 774
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 7:
+ self.state = 772
+ self.match(Python3Parser.AS)
+ self.state = 773
+ self.name()
+
+
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class BlockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def simple_stmts(self):
+ return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0)
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def INDENT(self):
+ return self.getToken(Python3Parser.INDENT, 0)
+
+ def DEDENT(self):
+ return self.getToken(Python3Parser.DEDENT, 0)
+
+ def stmt(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.StmtContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.StmtContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_block
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterBlock"):
+ listener.enterBlock(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitBlock"):
+ listener.exitBlock(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitBlock"):
+ return visitor.visitBlock(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def block(self):
+
+ localctx = Python3Parser.BlockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 96, self.RULE_block)
+ self._la = 0 # Token type
+ try:
+ self.state = 788
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 8, 10, 11, 14, 16, 20, 23, 24, 26, 29, 30, 31, 32, 33, 35, 36, 37, 38, 40, 43, 45, 55,
+ 56, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 778
+ self.simple_stmts()
+ pass
+ elif token in [44]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 779
+ self.match(Python3Parser.NEWLINE)
+ self.state = 780
+ self.match(Python3Parser.INDENT)
+ self.state = 782
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 781
+ self.stmt()
+ self.state = 784
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 252254338105339672) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4206977) != 0)):
+ break
+
+ self.state = 786
+ self.match(Python3Parser.DEDENT)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Match_stmtContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def MATCH(self):
+ return self.getToken(Python3Parser.MATCH, 0)
+
+ def subject_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Subject_exprContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def NEWLINE(self):
+ return self.getToken(Python3Parser.NEWLINE, 0)
+
+ def INDENT(self):
+ return self.getToken(Python3Parser.INDENT, 0)
+
+ def DEDENT(self):
+ return self.getToken(Python3Parser.DEDENT, 0)
+
+ def case_block(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Case_blockContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Case_blockContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_match_stmt
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMatch_stmt"):
+ listener.enterMatch_stmt(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMatch_stmt"):
+ listener.exitMatch_stmt(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMatch_stmt"):
+ return visitor.visitMatch_stmt(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def match_stmt(self):
+
+ localctx = Python3Parser.Match_stmtContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 98, self.RULE_match_stmt)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 790
+ self.match(Python3Parser.MATCH)
+ self.state = 791
+ self.subject_expr()
+ self.state = 792
+ self.match(Python3Parser.COLON)
+ self.state = 793
+ self.match(Python3Parser.NEWLINE)
+ self.state = 794
+ self.match(Python3Parser.INDENT)
+ self.state = 796
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 795
+ self.case_block()
+ self.state = 798
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 12):
+ break
+
+ self.state = 800
+ self.match(Python3Parser.DEDENT)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Subject_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def star_named_expression(self):
+ return self.getTypedRuleContext(Python3Parser.Star_named_expressionContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Python3Parser.COMMA, 0)
+
+ def star_named_expressions(self):
+ return self.getTypedRuleContext(Python3Parser.Star_named_expressionsContext, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_subject_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSubject_expr"):
+ listener.enterSubject_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSubject_expr"):
+ listener.exitSubject_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSubject_expr"):
+ return visitor.visitSubject_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def subject_expr(self):
+
+ localctx = Python3Parser.Subject_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 100, self.RULE_subject_expr)
+ self._la = 0 # Token type
+ try:
+ self.state = 808
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 100, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 802
+ self.star_named_expression()
+ self.state = 803
+ self.match(Python3Parser.COMMA)
+ self.state = 805
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 804
+ self.star_named_expressions()
+
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 807
+ self.test()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Star_named_expressionsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def star_named_expression(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_named_expressionContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_named_expressionContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_star_named_expressions
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStar_named_expressions"):
+ listener.enterStar_named_expressions(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStar_named_expressions"):
+ listener.exitStar_named_expressions(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStar_named_expressions"):
+ return visitor.visitStar_named_expressions(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def star_named_expressions(self):
+
+ localctx = Python3Parser.Star_named_expressionsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 102, self.RULE_star_named_expressions)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 810
+ self.match(Python3Parser.COMMA)
+ self.state = 812
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 811
+ self.star_named_expression()
+ self.state = 814
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 252238150243451928) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0)):
+ break
+
+ self.state = 817
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 816
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Star_named_expressionContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def expr(self):
+ return self.getTypedRuleContext(Python3Parser.ExprContext, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_star_named_expression
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStar_named_expression"):
+ listener.enterStar_named_expression(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStar_named_expression"):
+ listener.exitStar_named_expression(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStar_named_expression"):
+ return visitor.visitStar_named_expression(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def star_named_expression(self):
+
+ localctx = Python3Parser.Star_named_expressionContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 104, self.RULE_star_named_expression)
+ try:
+ self.state = 822
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 819
+ self.match(Python3Parser.STAR)
+ self.state = 820
+ self.expr(0)
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 821
+ self.test()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Case_blockContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CASE(self):
+ return self.getToken(Python3Parser.CASE, 0)
+
+ def patterns(self):
+ return self.getTypedRuleContext(Python3Parser.PatternsContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Python3Parser.BlockContext, 0)
+
+ def guard(self):
+ return self.getTypedRuleContext(Python3Parser.GuardContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_case_block
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCase_block"):
+ listener.enterCase_block(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCase_block"):
+ listener.exitCase_block(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCase_block"):
+ return visitor.visitCase_block(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def case_block(self):
+
+ localctx = Python3Parser.Case_blockContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 106, self.RULE_case_block)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 824
+ self.match(Python3Parser.CASE)
+ self.state = 825
+ self.patterns()
+ self.state = 827
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 25:
+ self.state = 826
+ self.guard()
+
+ self.state = 829
+ self.match(Python3Parser.COLON)
+ self.state = 830
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class GuardContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Python3Parser.IF, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_guard
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterGuard"):
+ listener.enterGuard(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitGuard"):
+ listener.exitGuard(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitGuard"):
+ return visitor.visitGuard(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def guard(self):
+
+ localctx = Python3Parser.GuardContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 108, self.RULE_guard)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 832
+ self.match(Python3Parser.IF)
+ self.state = 833
+ self.test()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PatternsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def open_sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Open_sequence_patternContext, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_patterns
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPatterns"):
+ listener.enterPatterns(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPatterns"):
+ listener.exitPatterns(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPatterns"):
+ return visitor.visitPatterns(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def patterns(self):
+
+ localctx = Python3Parser.PatternsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 110, self.RULE_patterns)
+ try:
+ self.state = 837
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 105, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 835
+ self.open_sequence_pattern()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 836
+ self.pattern()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class PatternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def as_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.As_patternContext, 0)
+
+ def or_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Or_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPattern"):
+ listener.enterPattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPattern"):
+ listener.exitPattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPattern"):
+ return visitor.visitPattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pattern(self):
+
+ localctx = Python3Parser.PatternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 112, self.RULE_pattern)
+ try:
+ self.state = 841
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 106, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 839
+ self.as_pattern()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 840
+ self.or_pattern()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class As_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def or_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Or_patternContext, 0)
+
+ def AS(self):
+ return self.getToken(Python3Parser.AS, 0)
+
+ def pattern_capture_target(self):
+ return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_as_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAs_pattern"):
+ listener.enterAs_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAs_pattern"):
+ listener.exitAs_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAs_pattern"):
+ return visitor.visitAs_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def as_pattern(self):
+
+ localctx = Python3Parser.As_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 114, self.RULE_as_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 843
+ self.or_pattern()
+ self.state = 844
+ self.match(Python3Parser.AS)
+ self.state = 845
+ self.pattern_capture_target()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Or_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def closed_pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Closed_patternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Closed_patternContext, i)
+
+ def OR_OP(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.OR_OP)
+ else:
+ return self.getToken(Python3Parser.OR_OP, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_or_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterOr_pattern"):
+ listener.enterOr_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitOr_pattern"):
+ listener.exitOr_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitOr_pattern"):
+ return visitor.visitOr_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def or_pattern(self):
+
+ localctx = Python3Parser.Or_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 116, self.RULE_or_pattern)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 847
+ self.closed_pattern()
+ self.state = 852
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 66:
+ self.state = 848
+ self.match(Python3Parser.OR_OP)
+ self.state = 849
+ self.closed_pattern()
+ self.state = 854
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Closed_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def literal_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Literal_patternContext, 0)
+
+ def capture_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Capture_patternContext, 0)
+
+ def wildcard_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Wildcard_patternContext, 0)
+
+ def value_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Value_patternContext, 0)
+
+ def group_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Group_patternContext, 0)
+
+ def sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Sequence_patternContext, 0)
+
+ def mapping_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Mapping_patternContext, 0)
+
+ def class_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Class_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_closed_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClosed_pattern"):
+ listener.enterClosed_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClosed_pattern"):
+ listener.exitClosed_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClosed_pattern"):
+ return visitor.visitClosed_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def closed_pattern(self):
+
+ localctx = Python3Parser.Closed_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 118, self.RULE_closed_pattern)
+ try:
+ self.state = 863
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 108, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 855
+ self.literal_pattern()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 856
+ self.capture_pattern()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 857
+ self.wildcard_pattern()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 858
+ self.value_pattern()
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 859
+ self.group_pattern()
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 860
+ self.sequence_pattern()
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 861
+ self.mapping_pattern()
+ pass
+
+ elif la_ == 8:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 862
+ self.class_pattern()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Literal_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def signed_number(self):
+ return self.getTypedRuleContext(Python3Parser.Signed_numberContext, 0)
+
+ def complex_number(self):
+ return self.getTypedRuleContext(Python3Parser.Complex_numberContext, 0)
+
+ def strings(self):
+ return self.getTypedRuleContext(Python3Parser.StringsContext, 0)
+
+ def NONE(self):
+ return self.getToken(Python3Parser.NONE, 0)
+
+ def TRUE(self):
+ return self.getToken(Python3Parser.TRUE, 0)
+
+ def FALSE(self):
+ return self.getToken(Python3Parser.FALSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_literal_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLiteral_pattern"):
+ listener.enterLiteral_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLiteral_pattern"):
+ listener.exitLiteral_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLiteral_pattern"):
+ return visitor.visitLiteral_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def literal_pattern(self):
+
+ localctx = Python3Parser.Literal_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 120, self.RULE_literal_pattern)
+ try:
+ self.state = 873
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 109, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 865
+ self.signed_number()
+ self.state = 866
+ if not self.CannotBePlusMinus():
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, " self.CannotBePlusMinus() ")
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 868
+ self.complex_number()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 869
+ self.strings()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 870
+ self.match(Python3Parser.NONE)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 871
+ self.match(Python3Parser.TRUE)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 872
+ self.match(Python3Parser.FALSE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Literal_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def signed_number(self):
+ return self.getTypedRuleContext(Python3Parser.Signed_numberContext, 0)
+
+ def complex_number(self):
+ return self.getTypedRuleContext(Python3Parser.Complex_numberContext, 0)
+
+ def strings(self):
+ return self.getTypedRuleContext(Python3Parser.StringsContext, 0)
+
+ def NONE(self):
+ return self.getToken(Python3Parser.NONE, 0)
+
+ def TRUE(self):
+ return self.getToken(Python3Parser.TRUE, 0)
+
+ def FALSE(self):
+ return self.getToken(Python3Parser.FALSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_literal_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLiteral_expr"):
+ listener.enterLiteral_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLiteral_expr"):
+ listener.exitLiteral_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLiteral_expr"):
+ return visitor.visitLiteral_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def literal_expr(self):
+
+ localctx = Python3Parser.Literal_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 122, self.RULE_literal_expr)
+ try:
+ self.state = 883
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 110, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 875
+ self.signed_number()
+ self.state = 876
+ if not self.CannotBePlusMinus():
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, " self.CannotBePlusMinus() ")
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 878
+ self.complex_number()
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 879
+ self.strings()
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 880
+ self.match(Python3Parser.NONE)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 881
+ self.match(Python3Parser.TRUE)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 882
+ self.match(Python3Parser.FALSE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Complex_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def signed_real_number(self):
+ return self.getTypedRuleContext(Python3Parser.Signed_real_numberContext, 0)
+
+ def ADD(self):
+ return self.getToken(Python3Parser.ADD, 0)
+
+ def imaginary_number(self):
+ return self.getTypedRuleContext(Python3Parser.Imaginary_numberContext, 0)
+
+ def MINUS(self):
+ return self.getToken(Python3Parser.MINUS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_complex_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComplex_number"):
+ listener.enterComplex_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComplex_number"):
+ listener.exitComplex_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComplex_number"):
+ return visitor.visitComplex_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def complex_number(self):
+
+ localctx = Python3Parser.Complex_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 124, self.RULE_complex_number)
+ try:
+ self.state = 893
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 111, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 885
+ self.signed_real_number()
+ self.state = 886
+ self.match(Python3Parser.ADD)
+ self.state = 887
+ self.imaginary_number()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 889
+ self.signed_real_number()
+ self.state = 890
+ self.match(Python3Parser.MINUS)
+ self.state = 891
+ self.imaginary_number()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Signed_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NUMBER(self):
+ return self.getToken(Python3Parser.NUMBER, 0)
+
+ def MINUS(self):
+ return self.getToken(Python3Parser.MINUS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_signed_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSigned_number"):
+ listener.enterSigned_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSigned_number"):
+ listener.exitSigned_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSigned_number"):
+ return visitor.visitSigned_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def signed_number(self):
+
+ localctx = Python3Parser.Signed_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 126, self.RULE_signed_number)
+ try:
+ self.state = 898
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [4]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 895
+ self.match(Python3Parser.NUMBER)
+ pass
+ elif token in [72]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 896
+ self.match(Python3Parser.MINUS)
+ self.state = 897
+ self.match(Python3Parser.NUMBER)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Signed_real_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def real_number(self):
+ return self.getTypedRuleContext(Python3Parser.Real_numberContext, 0)
+
+ def MINUS(self):
+ return self.getToken(Python3Parser.MINUS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_signed_real_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSigned_real_number"):
+ listener.enterSigned_real_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSigned_real_number"):
+ listener.exitSigned_real_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSigned_real_number"):
+ return visitor.visitSigned_real_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def signed_real_number(self):
+
+ localctx = Python3Parser.Signed_real_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 128, self.RULE_signed_real_number)
+ try:
+ self.state = 903
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [4]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 900
+ self.real_number()
+ pass
+ elif token in [72]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 901
+ self.match(Python3Parser.MINUS)
+ self.state = 902
+ self.real_number()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Real_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NUMBER(self):
+ return self.getToken(Python3Parser.NUMBER, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_real_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterReal_number"):
+ listener.enterReal_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitReal_number"):
+ listener.exitReal_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitReal_number"):
+ return visitor.visitReal_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def real_number(self):
+
+ localctx = Python3Parser.Real_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 130, self.RULE_real_number)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 905
+ self.match(Python3Parser.NUMBER)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Imaginary_numberContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NUMBER(self):
+ return self.getToken(Python3Parser.NUMBER, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_imaginary_number
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterImaginary_number"):
+ listener.enterImaginary_number(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitImaginary_number"):
+ listener.exitImaginary_number(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitImaginary_number"):
+ return visitor.visitImaginary_number(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def imaginary_number(self):
+
+ localctx = Python3Parser.Imaginary_numberContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 132, self.RULE_imaginary_number)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 907
+ self.match(Python3Parser.NUMBER)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Capture_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def pattern_capture_target(self):
+ return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_capture_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterCapture_pattern"):
+ listener.enterCapture_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitCapture_pattern"):
+ listener.exitCapture_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitCapture_pattern"):
+ return visitor.visitCapture_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def capture_pattern(self):
+
+ localctx = Python3Parser.Capture_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 134, self.RULE_capture_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 909
+ self.pattern_capture_target()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Pattern_capture_targetContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_pattern_capture_target
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPattern_capture_target"):
+ listener.enterPattern_capture_target(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPattern_capture_target"):
+ listener.exitPattern_capture_target(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPattern_capture_target"):
+ return visitor.visitPattern_capture_target(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def pattern_capture_target(self):
+
+ localctx = Python3Parser.Pattern_capture_targetContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 136, self.RULE_pattern_capture_target)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 911
+ self.name()
+ self.state = 912
+ if not self.CannotBeDotLpEq():
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, " self.CannotBeDotLpEq() ")
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Wildcard_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def UNDERSCORE(self):
+ return self.getToken(Python3Parser.UNDERSCORE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_wildcard_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterWildcard_pattern"):
+ listener.enterWildcard_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitWildcard_pattern"):
+ listener.exitWildcard_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitWildcard_pattern"):
+ return visitor.visitWildcard_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def wildcard_pattern(self):
+
+ localctx = Python3Parser.Wildcard_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 138, self.RULE_wildcard_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 914
+ self.match(Python3Parser.UNDERSCORE)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Value_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def attr(self):
+ return self.getTypedRuleContext(Python3Parser.AttrContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_value_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterValue_pattern"):
+ listener.enterValue_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitValue_pattern"):
+ listener.exitValue_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitValue_pattern"):
+ return visitor.visitValue_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def value_pattern(self):
+
+ localctx = Python3Parser.Value_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 140, self.RULE_value_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 916
+ self.attr()
+ self.state = 917
+ if not self.CannotBeDotLpEq():
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, " self.CannotBeDotLpEq() ")
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AttrContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.NameContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.NameContext, i)
+
+ def DOT(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.DOT)
+ else:
+ return self.getToken(Python3Parser.DOT, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_attr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAttr"):
+ listener.enterAttr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAttr"):
+ listener.exitAttr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAttr"):
+ return visitor.visitAttr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def attr(self):
+
+ localctx = Python3Parser.AttrContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 142, self.RULE_attr)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 919
+ self.name()
+ self.state = 922
+ self._errHandler.sync(self)
+ _alt = 1
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 920
+ self.match(Python3Parser.DOT)
+ self.state = 921
+ self.name()
+
+ else:
+ raise NoViableAltException(self)
+ self.state = 924
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 114, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Name_or_attrContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def attr(self):
+ return self.getTypedRuleContext(Python3Parser.AttrContext, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_name_or_attr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterName_or_attr"):
+ listener.enterName_or_attr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitName_or_attr"):
+ listener.exitName_or_attr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitName_or_attr"):
+ return visitor.visitName_or_attr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def name_or_attr(self):
+
+ localctx = Python3Parser.Name_or_attrContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 144, self.RULE_name_or_attr)
+ try:
+ self.state = 928
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 115, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 926
+ self.attr()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 927
+ self.name()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Group_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_group_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterGroup_pattern"):
+ listener.enterGroup_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitGroup_pattern"):
+ listener.exitGroup_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitGroup_pattern"):
+ return visitor.visitGroup_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def group_pattern(self):
+
+ localctx = Python3Parser.Group_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 146, self.RULE_group_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 930
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 931
+ self.pattern()
+ self.state = 932
+ self.match(Python3Parser.CLOSE_PAREN)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Sequence_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_BRACK(self):
+ return self.getToken(Python3Parser.OPEN_BRACK, 0)
+
+ def CLOSE_BRACK(self):
+ return self.getToken(Python3Parser.CLOSE_BRACK, 0)
+
+ def maybe_sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Maybe_sequence_patternContext, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def open_sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Open_sequence_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_sequence_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSequence_pattern"):
+ listener.enterSequence_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSequence_pattern"):
+ listener.exitSequence_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSequence_pattern"):
+ return visitor.visitSequence_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def sequence_pattern(self):
+
+ localctx = Python3Parser.Sequence_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 148, self.RULE_sequence_pattern)
+ self._la = 0 # Token type
+ try:
+ self.state = 944
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [64]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 934
+ self.match(Python3Parser.OPEN_BRACK)
+ self.state = 936
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0):
+ self.state = 935
+ self.maybe_sequence_pattern()
+
+ self.state = 938
+ self.match(Python3Parser.CLOSE_BRACK)
+ pass
+ elif token in [57]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 939
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 941
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0):
+ self.state = 940
+ self.open_sequence_pattern()
+
+ self.state = 943
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Open_sequence_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def maybe_star_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Maybe_star_patternContext, 0)
+
+ def COMMA(self):
+ return self.getToken(Python3Parser.COMMA, 0)
+
+ def maybe_sequence_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Maybe_sequence_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_open_sequence_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterOpen_sequence_pattern"):
+ listener.enterOpen_sequence_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitOpen_sequence_pattern"):
+ listener.exitOpen_sequence_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitOpen_sequence_pattern"):
+ return visitor.visitOpen_sequence_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def open_sequence_pattern(self):
+
+ localctx = Python3Parser.Open_sequence_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 150, self.RULE_open_sequence_pattern)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 946
+ self.maybe_star_pattern()
+ self.state = 947
+ self.match(Python3Parser.COMMA)
+ self.state = 949
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0):
+ self.state = 948
+ self.maybe_sequence_pattern()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Maybe_sequence_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def maybe_star_pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Maybe_star_patternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Maybe_star_patternContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_maybe_sequence_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMaybe_sequence_pattern"):
+ listener.enterMaybe_sequence_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMaybe_sequence_pattern"):
+ listener.exitMaybe_sequence_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMaybe_sequence_pattern"):
+ return visitor.visitMaybe_sequence_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def maybe_sequence_pattern(self):
+
+ localctx = Python3Parser.Maybe_sequence_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 152, self.RULE_maybe_sequence_pattern)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 951
+ self.maybe_star_pattern()
+ self.state = 956
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 120, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 952
+ self.match(Python3Parser.COMMA)
+ self.state = 953
+ self.maybe_star_pattern()
+ self.state = 958
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 120, self._ctx)
+
+ self.state = 960
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 959
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Maybe_star_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def star_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Star_patternContext, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_maybe_star_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMaybe_star_pattern"):
+ listener.enterMaybe_star_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMaybe_star_pattern"):
+ listener.exitMaybe_star_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMaybe_star_pattern"):
+ return visitor.visitMaybe_star_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def maybe_star_pattern(self):
+
+ localctx = Python3Parser.Maybe_star_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 154, self.RULE_maybe_star_pattern)
+ try:
+ self.state = 964
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [56]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 962
+ self.star_pattern()
+ pass
+ elif token in [3, 4, 20, 30, 31, 38, 40, 45, 57, 64, 72, 77]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 963
+ self.pattern()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Star_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def pattern_capture_target(self):
+ return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0)
+
+ def wildcard_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Wildcard_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_star_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStar_pattern"):
+ listener.enterStar_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStar_pattern"):
+ listener.exitStar_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStar_pattern"):
+ return visitor.visitStar_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def star_pattern(self):
+
+ localctx = Python3Parser.Star_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 156, self.RULE_star_pattern)
+ try:
+ self.state = 970
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 123, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 966
+ self.match(Python3Parser.STAR)
+ self.state = 967
+ self.pattern_capture_target()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 968
+ self.match(Python3Parser.STAR)
+ self.state = 969
+ self.wildcard_pattern()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Mapping_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_BRACE(self):
+ return self.getToken(Python3Parser.OPEN_BRACE, 0)
+
+ def CLOSE_BRACE(self):
+ return self.getToken(Python3Parser.CLOSE_BRACE, 0)
+
+ def double_star_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Double_star_patternContext, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def items_pattern(self):
+ return self.getTypedRuleContext(Python3Parser.Items_patternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_mapping_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterMapping_pattern"):
+ listener.enterMapping_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitMapping_pattern"):
+ listener.exitMapping_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitMapping_pattern"):
+ return visitor.visitMapping_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def mapping_pattern(self):
+
+ localctx = Python3Parser.Mapping_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 158, self.RULE_mapping_pattern)
+ self._la = 0 # Token type
+ try:
+ self.state = 997
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 127, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 972
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 973
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 974
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 975
+ self.double_star_pattern()
+ self.state = 977
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 976
+ self.match(Python3Parser.COMMA)
+
+ self.state = 979
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 981
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 982
+ self.items_pattern()
+ self.state = 983
+ self.match(Python3Parser.COMMA)
+ self.state = 984
+ self.double_star_pattern()
+ self.state = 986
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 985
+ self.match(Python3Parser.COMMA)
+
+ self.state = 988
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 990
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 991
+ self.items_pattern()
+ self.state = 993
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 992
+ self.match(Python3Parser.COMMA)
+
+ self.state = 995
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Items_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def key_value_pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Key_value_patternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Key_value_patternContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_items_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterItems_pattern"):
+ listener.enterItems_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitItems_pattern"):
+ listener.exitItems_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitItems_pattern"):
+ return visitor.visitItems_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def items_pattern(self):
+
+ localctx = Python3Parser.Items_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 160, self.RULE_items_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 999
+ self.key_value_pattern()
+ self.state = 1004
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 128, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1000
+ self.match(Python3Parser.COMMA)
+ self.state = 1001
+ self.key_value_pattern()
+ self.state = 1006
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 128, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Key_value_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def literal_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Literal_exprContext, 0)
+
+ def attr(self):
+ return self.getTypedRuleContext(Python3Parser.AttrContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_key_value_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterKey_value_pattern"):
+ listener.enterKey_value_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitKey_value_pattern"):
+ listener.exitKey_value_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitKey_value_pattern"):
+ return visitor.visitKey_value_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def key_value_pattern(self):
+
+ localctx = Python3Parser.Key_value_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 162, self.RULE_key_value_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1009
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 20, 31, 38, 72]:
+ self.state = 1007
+ self.literal_expr()
+ pass
+ elif token in [30, 40, 45]:
+ self.state = 1008
+ self.attr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1011
+ self.match(Python3Parser.COLON)
+ self.state = 1012
+ self.pattern()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Double_star_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def pattern_capture_target(self):
+ return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_double_star_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDouble_star_pattern"):
+ listener.enterDouble_star_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDouble_star_pattern"):
+ listener.exitDouble_star_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDouble_star_pattern"):
+ return visitor.visitDouble_star_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def double_star_pattern(self):
+
+ localctx = Python3Parser.Double_star_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 164, self.RULE_double_star_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1014
+ self.match(Python3Parser.POWER)
+ self.state = 1015
+ self.pattern_capture_target()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Class_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name_or_attr(self):
+ return self.getTypedRuleContext(Python3Parser.Name_or_attrContext, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def positional_patterns(self):
+ return self.getTypedRuleContext(Python3Parser.Positional_patternsContext, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def keyword_patterns(self):
+ return self.getTypedRuleContext(Python3Parser.Keyword_patternsContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_class_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClass_pattern"):
+ listener.enterClass_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClass_pattern"):
+ listener.exitClass_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClass_pattern"):
+ return visitor.visitClass_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def class_pattern(self):
+
+ localctx = Python3Parser.Class_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 166, self.RULE_class_pattern)
+ self._la = 0 # Token type
+ try:
+ self.state = 1047
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 133, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1017
+ self.name_or_attr()
+ self.state = 1018
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1019
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1021
+ self.name_or_attr()
+ self.state = 1022
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1023
+ self.positional_patterns()
+ self.state = 1025
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1024
+ self.match(Python3Parser.COMMA)
+
+ self.state = 1027
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1029
+ self.name_or_attr()
+ self.state = 1030
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1031
+ self.keyword_patterns()
+ self.state = 1033
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1032
+ self.match(Python3Parser.COMMA)
+
+ self.state = 1035
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1037
+ self.name_or_attr()
+ self.state = 1038
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1039
+ self.positional_patterns()
+ self.state = 1040
+ self.match(Python3Parser.COMMA)
+ self.state = 1041
+ self.keyword_patterns()
+ self.state = 1043
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1042
+ self.match(Python3Parser.COMMA)
+
+ self.state = 1045
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Positional_patternsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.PatternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.PatternContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_positional_patterns
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterPositional_patterns"):
+ listener.enterPositional_patterns(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitPositional_patterns"):
+ listener.exitPositional_patterns(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitPositional_patterns"):
+ return visitor.visitPositional_patterns(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def positional_patterns(self):
+
+ localctx = Python3Parser.Positional_patternsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 168, self.RULE_positional_patterns)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1049
+ self.pattern()
+ self.state = 1054
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 134, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1050
+ self.match(Python3Parser.COMMA)
+ self.state = 1051
+ self.pattern()
+ self.state = 1056
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 134, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Keyword_patternsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def keyword_pattern(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Keyword_patternContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Keyword_patternContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_keyword_patterns
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterKeyword_patterns"):
+ listener.enterKeyword_patterns(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitKeyword_patterns"):
+ listener.exitKeyword_patterns(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitKeyword_patterns"):
+ return visitor.visitKeyword_patterns(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def keyword_patterns(self):
+
+ localctx = Python3Parser.Keyword_patternsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 170, self.RULE_keyword_patterns)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1057
+ self.keyword_pattern()
+ self.state = 1062
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 135, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1058
+ self.match(Python3Parser.COMMA)
+ self.state = 1059
+ self.keyword_pattern()
+ self.state = 1064
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 135, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Keyword_patternContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def ASSIGN(self):
+ return self.getToken(Python3Parser.ASSIGN, 0)
+
+ def pattern(self):
+ return self.getTypedRuleContext(Python3Parser.PatternContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_keyword_pattern
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterKeyword_pattern"):
+ listener.enterKeyword_pattern(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitKeyword_pattern"):
+ listener.exitKeyword_pattern(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitKeyword_pattern"):
+ return visitor.visitKeyword_pattern(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def keyword_pattern(self):
+
+ localctx = Python3Parser.Keyword_patternContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 172, self.RULE_keyword_pattern)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1065
+ self.name()
+ self.state = 1066
+ self.match(Python3Parser.ASSIGN)
+ self.state = 1067
+ self.pattern()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TestContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def or_test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Or_testContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Or_testContext, i)
+
+ def IF(self):
+ return self.getToken(Python3Parser.IF, 0)
+
+ def ELSE(self):
+ return self.getToken(Python3Parser.ELSE, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def lambdef(self):
+ return self.getTypedRuleContext(Python3Parser.LambdefContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_test
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTest"):
+ listener.enterTest(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTest"):
+ listener.exitTest(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTest"):
+ return visitor.visitTest(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def test(self):
+
+ localctx = Python3Parser.TestContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 174, self.RULE_test)
+ self._la = 0 # Token type
+ try:
+ self.state = 1078
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1069
+ self.or_test()
+ self.state = 1075
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 25:
+ self.state = 1070
+ self.match(Python3Parser.IF)
+ self.state = 1071
+ self.or_test()
+ self.state = 1072
+ self.match(Python3Parser.ELSE)
+ self.state = 1073
+ self.test()
+
+ pass
+ elif token in [29]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1077
+ self.lambdef()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Test_nocondContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def or_test(self):
+ return self.getTypedRuleContext(Python3Parser.Or_testContext, 0)
+
+ def lambdef_nocond(self):
+ return self.getTypedRuleContext(Python3Parser.Lambdef_nocondContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_test_nocond
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTest_nocond"):
+ listener.enterTest_nocond(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTest_nocond"):
+ listener.exitTest_nocond(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTest_nocond"):
+ return visitor.visitTest_nocond(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def test_nocond(self):
+
+ localctx = Python3Parser.Test_nocondContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 176, self.RULE_test_nocond)
+ try:
+ self.state = 1082
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1080
+ self.or_test()
+ pass
+ elif token in [29]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1081
+ self.lambdef_nocond()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class LambdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LAMBDA(self):
+ return self.getToken(Python3Parser.LAMBDA, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def varargslist(self):
+ return self.getTypedRuleContext(Python3Parser.VarargslistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_lambdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdef"):
+ listener.enterLambdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdef"):
+ listener.exitLambdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdef"):
+ return visitor.visitLambdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdef(self):
+
+ localctx = Python3Parser.LambdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 178, self.RULE_lambdef)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1084
+ self.match(Python3Parser.LAMBDA)
+ self.state = 1086
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0):
+ self.state = 1085
+ self.varargslist()
+
+ self.state = 1088
+ self.match(Python3Parser.COLON)
+ self.state = 1089
+ self.test()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Lambdef_nocondContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LAMBDA(self):
+ return self.getToken(Python3Parser.LAMBDA, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test_nocond(self):
+ return self.getTypedRuleContext(Python3Parser.Test_nocondContext, 0)
+
+ def varargslist(self):
+ return self.getTypedRuleContext(Python3Parser.VarargslistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_lambdef_nocond
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterLambdef_nocond"):
+ listener.enterLambdef_nocond(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitLambdef_nocond"):
+ listener.exitLambdef_nocond(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitLambdef_nocond"):
+ return visitor.visitLambdef_nocond(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def lambdef_nocond(self):
+
+ localctx = Python3Parser.Lambdef_nocondContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 180, self.RULE_lambdef_nocond)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1091
+ self.match(Python3Parser.LAMBDA)
+ self.state = 1093
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0):
+ self.state = 1092
+ self.varargslist()
+
+ self.state = 1095
+ self.match(Python3Parser.COLON)
+ self.state = 1096
+ self.test_nocond()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Or_testContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def and_test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.And_testContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.And_testContext, i)
+
+ def OR(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.OR)
+ else:
+ return self.getToken(Python3Parser.OR, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_or_test
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterOr_test"):
+ listener.enterOr_test(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitOr_test"):
+ listener.exitOr_test(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitOr_test"):
+ return visitor.visitOr_test(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def or_test(self):
+
+ localctx = Python3Parser.Or_testContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 182, self.RULE_or_test)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1098
+ self.and_test()
+ self.state = 1103
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 34:
+ self.state = 1099
+ self.match(Python3Parser.OR)
+ self.state = 1100
+ self.and_test()
+ self.state = 1105
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class And_testContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def not_test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Not_testContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Not_testContext, i)
+
+ def AND(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.AND)
+ else:
+ return self.getToken(Python3Parser.AND, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_and_test
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAnd_test"):
+ listener.enterAnd_test(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAnd_test"):
+ listener.exitAnd_test(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAnd_test"):
+ return visitor.visitAnd_test(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def and_test(self):
+
+ localctx = Python3Parser.And_testContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 184, self.RULE_and_test)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1106
+ self.not_test()
+ self.state = 1111
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while _la == 6:
+ self.state = 1107
+ self.match(Python3Parser.AND)
+ self.state = 1108
+ self.not_test()
+ self.state = 1113
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Not_testContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NOT(self):
+ return self.getToken(Python3Parser.NOT, 0)
+
+ def not_test(self):
+ return self.getTypedRuleContext(Python3Parser.Not_testContext, 0)
+
+ def comparison(self):
+ return self.getTypedRuleContext(Python3Parser.ComparisonContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_not_test
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterNot_test"):
+ listener.enterNot_test(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitNot_test"):
+ listener.exitNot_test(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitNot_test"):
+ return visitor.visitNot_test(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def not_test(self):
+
+ localctx = Python3Parser.Not_testContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 186, self.RULE_not_test)
+ try:
+ self.state = 1117
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [33]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1114
+ self.match(Python3Parser.NOT)
+ self.state = 1115
+ self.not_test()
+ pass
+ elif token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1116
+ self.comparison()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ComparisonContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ExprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ExprContext, i)
+
+ def comp_op(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Comp_opContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Comp_opContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comparison
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComparison"):
+ listener.enterComparison(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComparison"):
+ listener.exitComparison(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComparison"):
+ return visitor.visitComparison(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comparison(self):
+
+ localctx = Python3Parser.ComparisonContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 188, self.RULE_comparison)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1119
+ self.expr(0)
+ self.state = 1125
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 144, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1120
+ self.comp_op()
+ self.state = 1121
+ self.expr(0)
+ self.state = 1127
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 144, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Comp_opContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def LESS_THAN(self):
+ return self.getToken(Python3Parser.LESS_THAN, 0)
+
+ def GREATER_THAN(self):
+ return self.getToken(Python3Parser.GREATER_THAN, 0)
+
+ def EQUALS(self):
+ return self.getToken(Python3Parser.EQUALS, 0)
+
+ def GT_EQ(self):
+ return self.getToken(Python3Parser.GT_EQ, 0)
+
+ def LT_EQ(self):
+ return self.getToken(Python3Parser.LT_EQ, 0)
+
+ def NOT_EQ_1(self):
+ return self.getToken(Python3Parser.NOT_EQ_1, 0)
+
+ def NOT_EQ_2(self):
+ return self.getToken(Python3Parser.NOT_EQ_2, 0)
+
+ def IN(self):
+ return self.getToken(Python3Parser.IN, 0)
+
+ def NOT(self):
+ return self.getToken(Python3Parser.NOT, 0)
+
+ def IS(self):
+ return self.getToken(Python3Parser.IS, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comp_op
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComp_op"):
+ listener.enterComp_op(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComp_op"):
+ listener.exitComp_op(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComp_op"):
+ return visitor.visitComp_op(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comp_op(self):
+
+ localctx = Python3Parser.Comp_opContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 190, self.RULE_comp_op)
+ try:
+ self.state = 1141
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 145, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1128
+ self.match(Python3Parser.LESS_THAN)
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1129
+ self.match(Python3Parser.GREATER_THAN)
+ pass
+
+ elif la_ == 3:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1130
+ self.match(Python3Parser.EQUALS)
+ pass
+
+ elif la_ == 4:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1131
+ self.match(Python3Parser.GT_EQ)
+ pass
+
+ elif la_ == 5:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1132
+ self.match(Python3Parser.LT_EQ)
+ pass
+
+ elif la_ == 6:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1133
+ self.match(Python3Parser.NOT_EQ_1)
+ pass
+
+ elif la_ == 7:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1134
+ self.match(Python3Parser.NOT_EQ_2)
+ pass
+
+ elif la_ == 8:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1135
+ self.match(Python3Parser.IN)
+ pass
+
+ elif la_ == 9:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1136
+ self.match(Python3Parser.NOT)
+ self.state = 1137
+ self.match(Python3Parser.IN)
+ pass
+
+ elif la_ == 10:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 1138
+ self.match(Python3Parser.IS)
+ pass
+
+ elif la_ == 11:
+ self.enterOuterAlt(localctx, 11)
+ self.state = 1139
+ self.match(Python3Parser.IS)
+ self.state = 1140
+ self.match(Python3Parser.NOT)
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Star_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def expr(self):
+ return self.getTypedRuleContext(Python3Parser.ExprContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_star_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStar_expr"):
+ listener.enterStar_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStar_expr"):
+ listener.exitStar_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStar_expr"):
+ return visitor.visitStar_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def star_expr(self):
+
+ localctx = Python3Parser.Star_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 192, self.RULE_star_expr)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1143
+ self.match(Python3Parser.STAR)
+ self.state = 1144
+ self.expr(0)
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def atom_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Atom_exprContext, 0)
+
+ def expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ExprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ExprContext, i)
+
+ def ADD(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.ADD)
+ else:
+ return self.getToken(Python3Parser.ADD, i)
+
+ def MINUS(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.MINUS)
+ else:
+ return self.getToken(Python3Parser.MINUS, i)
+
+ def NOT_OP(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.NOT_OP)
+ else:
+ return self.getToken(Python3Parser.NOT_OP, i)
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def AT(self):
+ return self.getToken(Python3Parser.AT, 0)
+
+ def DIV(self):
+ return self.getToken(Python3Parser.DIV, 0)
+
+ def MOD(self):
+ return self.getToken(Python3Parser.MOD, 0)
+
+ def IDIV(self):
+ return self.getToken(Python3Parser.IDIV, 0)
+
+ def LEFT_SHIFT(self):
+ return self.getToken(Python3Parser.LEFT_SHIFT, 0)
+
+ def RIGHT_SHIFT(self):
+ return self.getToken(Python3Parser.RIGHT_SHIFT, 0)
+
+ def AND_OP(self):
+ return self.getToken(Python3Parser.AND_OP, 0)
+
+ def XOR(self):
+ return self.getToken(Python3Parser.XOR, 0)
+
+ def OR_OP(self):
+ return self.getToken(Python3Parser.OR_OP, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExpr"):
+ listener.enterExpr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExpr"):
+ listener.exitExpr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExpr"):
+ return visitor.visitExpr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def expr(self, _p: int = 0):
+ _parentctx = self._ctx
+ _parentState = self.state
+ localctx = Python3Parser.ExprContext(self, self._ctx, _parentState)
+ _prevctx = localctx
+ _startState = 194
+ self.enterRecursionRule(localctx, 194, self.RULE_expr, _p)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1154
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 77]:
+ self.state = 1147
+ self.atom_expr()
+ pass
+ elif token in [71, 72, 76]:
+ self.state = 1149
+ self._errHandler.sync(self)
+ _alt = 1
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1148
+ _la = self._input.LA(1)
+ if not (((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & 35) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+
+ else:
+ raise NoViableAltException(self)
+ self.state = 1151
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 146, self._ctx)
+
+ self.state = 1153
+ self.expr(7)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self._ctx.stop = self._input.LT(-1)
+ self.state = 1179
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 149, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ if self._parseListeners is not None:
+ self.triggerExitRuleEvent()
+ _prevctx = localctx
+ self.state = 1177
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 148, self._ctx)
+ if la_ == 1:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1156
+ if not self.precpred(self._ctx, 8):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 8)")
+ self.state = 1157
+ self.match(Python3Parser.POWER)
+ self.state = 1158
+ self.expr(9)
+ pass
+
+ elif la_ == 2:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1159
+ if not self.precpred(self._ctx, 6):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 6)")
+ self.state = 1160
+ _la = self._input.LA(1)
+ if not (((((_la - 56)) & ~0x3f) == 0 and ((1 << (_la - 56)) & 1074659329) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 1161
+ self.expr(7)
+ pass
+
+ elif la_ == 3:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1162
+ if not self.precpred(self._ctx, 5):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 5)")
+ self.state = 1163
+ _la = self._input.LA(1)
+ if not (_la == 71 or _la == 72):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 1164
+ self.expr(6)
+ pass
+
+ elif la_ == 4:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1165
+ if not self.precpred(self._ctx, 4):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 4)")
+ self.state = 1166
+ _la = self._input.LA(1)
+ if not (_la == 69 or _la == 70):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ self.state = 1167
+ self.expr(5)
+ pass
+
+ elif la_ == 5:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1168
+ if not self.precpred(self._ctx, 3):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 3)")
+ self.state = 1169
+ self.match(Python3Parser.AND_OP)
+ self.state = 1170
+ self.expr(4)
+ pass
+
+ elif la_ == 6:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1171
+ if not self.precpred(self._ctx, 2):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 2)")
+ self.state = 1172
+ self.match(Python3Parser.XOR)
+ self.state = 1173
+ self.expr(3)
+ pass
+
+ elif la_ == 7:
+ localctx = Python3Parser.ExprContext(self, _parentctx, _parentState)
+ self.pushNewRecursionContext(localctx, _startState, self.RULE_expr)
+ self.state = 1174
+ if not self.precpred(self._ctx, 1):
+ from antlr4.error.Errors import FailedPredicateException
+ raise FailedPredicateException(self, "self.precpred(self._ctx, 1)")
+ self.state = 1175
+ self.match(Python3Parser.OR_OP)
+ self.state = 1176
+ self.expr(2)
+ pass
+
+ self.state = 1181
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 149, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.unrollRecursionContexts(_parentctx)
+ return localctx
+
+ class Atom_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def atom(self):
+ return self.getTypedRuleContext(Python3Parser.AtomContext, 0)
+
+ def AWAIT(self):
+ return self.getToken(Python3Parser.AWAIT, 0)
+
+ def trailer(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TrailerContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TrailerContext, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_atom_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAtom_expr"):
+ listener.enterAtom_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAtom_expr"):
+ listener.exitAtom_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAtom_expr"):
+ return visitor.visitAtom_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def atom_expr(self):
+
+ localctx = Python3Parser.Atom_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 196, self.RULE_atom_expr)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1183
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 10:
+ self.state = 1182
+ self.match(Python3Parser.AWAIT)
+
+ self.state = 1185
+ self.atom()
+ self.state = 1189
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 151, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1186
+ self.trailer()
+ self.state = 1191
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 151, self._ctx)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class AtomContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def yield_expr(self):
+ return self.getTypedRuleContext(Python3Parser.Yield_exprContext, 0)
+
+ def testlist_comp(self):
+ return self.getTypedRuleContext(Python3Parser.Testlist_compContext, 0)
+
+ def OPEN_BRACK(self):
+ return self.getToken(Python3Parser.OPEN_BRACK, 0)
+
+ def CLOSE_BRACK(self):
+ return self.getToken(Python3Parser.CLOSE_BRACK, 0)
+
+ def OPEN_BRACE(self):
+ return self.getToken(Python3Parser.OPEN_BRACE, 0)
+
+ def CLOSE_BRACE(self):
+ return self.getToken(Python3Parser.CLOSE_BRACE, 0)
+
+ def dictorsetmaker(self):
+ return self.getTypedRuleContext(Python3Parser.DictorsetmakerContext, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def NUMBER(self):
+ return self.getToken(Python3Parser.NUMBER, 0)
+
+ def STRING(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.STRING)
+ else:
+ return self.getToken(Python3Parser.STRING, i)
+
+ def ELLIPSIS(self):
+ return self.getToken(Python3Parser.ELLIPSIS, 0)
+
+ def NONE(self):
+ return self.getToken(Python3Parser.NONE, 0)
+
+ def TRUE(self):
+ return self.getToken(Python3Parser.TRUE, 0)
+
+ def FALSE(self):
+ return self.getToken(Python3Parser.FALSE, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_atom
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterAtom"):
+ listener.enterAtom(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitAtom"):
+ listener.exitAtom(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitAtom"):
+ return visitor.visitAtom(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def atom(self):
+
+ localctx = Python3Parser.AtomContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 198, self.RULE_atom)
+ self._la = 0 # Token type
+ try:
+ self.state = 1219
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [57]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1192
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1195
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [43]:
+ self.state = 1193
+ self.yield_expr()
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]:
+ self.state = 1194
+ self.testlist_comp()
+ pass
+ elif token in [58]:
+ pass
+ else:
+ pass
+ self.state = 1197
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+ elif token in [64]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1198
+ self.match(Python3Parser.OPEN_BRACK)
+ self.state = 1200
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 252238150243451928) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1199
+ self.testlist_comp()
+
+ self.state = 1202
+ self.match(Python3Parser.CLOSE_BRACK)
+ pass
+ elif token in [77]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1203
+ self.match(Python3Parser.OPEN_BRACE)
+ self.state = 1205
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1204
+ self.dictorsetmaker()
+
+ self.state = 1207
+ self.match(Python3Parser.CLOSE_BRACE)
+ pass
+ elif token in [30, 40, 45]:
+ self.enterOuterAlt(localctx, 4)
+ self.state = 1208
+ self.name()
+ pass
+ elif token in [4]:
+ self.enterOuterAlt(localctx, 5)
+ self.state = 1209
+ self.match(Python3Parser.NUMBER)
+ pass
+ elif token in [3]:
+ self.enterOuterAlt(localctx, 6)
+ self.state = 1211
+ self._errHandler.sync(self)
+ _alt = 1
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1210
+ self.match(Python3Parser.STRING)
+
+ else:
+ raise NoViableAltException(self)
+ self.state = 1213
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 155, self._ctx)
+
+ pass
+ elif token in [55]:
+ self.enterOuterAlt(localctx, 7)
+ self.state = 1215
+ self.match(Python3Parser.ELLIPSIS)
+ pass
+ elif token in [31]:
+ self.enterOuterAlt(localctx, 8)
+ self.state = 1216
+ self.match(Python3Parser.NONE)
+ pass
+ elif token in [38]:
+ self.enterOuterAlt(localctx, 9)
+ self.state = 1217
+ self.match(Python3Parser.TRUE)
+ pass
+ elif token in [20]:
+ self.enterOuterAlt(localctx, 10)
+ self.state = 1218
+ self.match(Python3Parser.FALSE)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class NameContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def NAME(self):
+ return self.getToken(Python3Parser.NAME, 0)
+
+ def UNDERSCORE(self):
+ return self.getToken(Python3Parser.UNDERSCORE, 0)
+
+ def MATCH(self):
+ return self.getToken(Python3Parser.MATCH, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_name
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterName"):
+ listener.enterName(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitName"):
+ listener.exitName(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitName"):
+ return visitor.visitName(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def name(self):
+
+ localctx = Python3Parser.NameContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 200, self.RULE_name)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1221
+ _la = self._input.LA(1)
+ if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0)):
+ self._errHandler.recoverInline(self)
+ else:
+ self._errHandler.reportMatch(self)
+ self.consume()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Testlist_compContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_exprContext, i)
+
+ def comp_for(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_testlist_comp
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTestlist_comp"):
+ listener.enterTestlist_comp(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTestlist_comp"):
+ listener.exitTestlist_comp(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTestlist_comp"):
+ return visitor.visitTestlist_comp(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def testlist_comp(self):
+
+ localctx = Python3Parser.Testlist_compContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 202, self.RULE_testlist_comp)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1225
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1223
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 1224
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1241
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [9, 22]:
+ self.state = 1227
+ self.comp_for()
+ pass
+ elif token in [58, 59, 65]:
+ self.state = 1235
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 159, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1228
+ self.match(Python3Parser.COMMA)
+ self.state = 1231
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1229
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 1230
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1237
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 159, self._ctx)
+
+ self.state = 1239
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1238
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TrailerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def arglist(self):
+ return self.getTypedRuleContext(Python3Parser.ArglistContext, 0)
+
+ def OPEN_BRACK(self):
+ return self.getToken(Python3Parser.OPEN_BRACK, 0)
+
+ def subscriptlist(self):
+ return self.getTypedRuleContext(Python3Parser.SubscriptlistContext, 0)
+
+ def CLOSE_BRACK(self):
+ return self.getToken(Python3Parser.CLOSE_BRACK, 0)
+
+ def DOT(self):
+ return self.getToken(Python3Parser.DOT, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_trailer
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTrailer"):
+ listener.enterTrailer(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTrailer"):
+ listener.exitTrailer(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTrailer"):
+ return visitor.visitTrailer(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def trailer(self):
+
+ localctx = Python3Parser.TrailerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 204, self.RULE_trailer)
+ self._la = 0 # Token type
+ try:
+ self.state = 1254
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [57]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1243
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1245
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1244
+ self.arglist()
+
+ self.state = 1247
+ self.match(Python3Parser.CLOSE_PAREN)
+ pass
+ elif token in [64]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1248
+ self.match(Python3Parser.OPEN_BRACK)
+ self.state = 1249
+ self.subscriptlist()
+ self.state = 1250
+ self.match(Python3Parser.CLOSE_BRACK)
+ pass
+ elif token in [54]:
+ self.enterOuterAlt(localctx, 3)
+ self.state = 1252
+ self.match(Python3Parser.DOT)
+ self.state = 1253
+ self.name()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SubscriptlistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def subscript_(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Subscript_Context)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Subscript_Context, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_subscriptlist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSubscriptlist"):
+ listener.enterSubscriptlist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSubscriptlist"):
+ listener.exitSubscriptlist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSubscriptlist"):
+ return visitor.visitSubscriptlist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def subscriptlist(self):
+
+ localctx = Python3Parser.SubscriptlistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 206, self.RULE_subscriptlist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1256
+ self.subscript_()
+ self.state = 1261
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 164, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1257
+ self.match(Python3Parser.COMMA)
+ self.state = 1258
+ self.subscript_()
+ self.state = 1263
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 164, self._ctx)
+
+ self.state = 1265
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1264
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Subscript_Context(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def sliceop(self):
+ return self.getTypedRuleContext(Python3Parser.SliceopContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_subscript_
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSubscript_"):
+ listener.enterSubscript_(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSubscript_"):
+ listener.exitSubscript_(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSubscript_"):
+ return visitor.visitSubscript_(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def subscript_(self):
+
+ localctx = Python3Parser.Subscript_Context(self, self._ctx, self.state)
+ self.enterRule(localctx, 208, self.RULE_subscript_)
+ self._la = 0 # Token type
+ try:
+ self.state = 1278
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 169, self._ctx)
+ if la_ == 1:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1267
+ self.test()
+ pass
+
+ elif la_ == 2:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1269
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1268
+ self.test()
+
+ self.state = 1271
+ self.match(Python3Parser.COLON)
+ self.state = 1273
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1272
+ self.test()
+
+ self.state = 1276
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 60:
+ self.state = 1275
+ self.sliceop()
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class SliceopContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_sliceop
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterSliceop"):
+ listener.enterSliceop(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitSliceop"):
+ listener.exitSliceop(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitSliceop"):
+ return visitor.visitSliceop(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def sliceop(self):
+
+ localctx = Python3Parser.SliceopContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 210, self.RULE_sliceop)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1280
+ self.match(Python3Parser.COLON)
+ self.state = 1282
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1281
+ self.test()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ExprlistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ExprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ExprContext, i)
+
+ def star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_exprContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_exprlist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterExprlist"):
+ listener.enterExprlist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitExprlist"):
+ listener.exitExprlist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitExprlist"):
+ return visitor.visitExprlist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def exprlist(self):
+
+ localctx = Python3Parser.ExprlistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 212, self.RULE_exprlist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1286
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1284
+ self.expr(0)
+ pass
+ elif token in [56]:
+ self.state = 1285
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1295
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 173, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1288
+ self.match(Python3Parser.COMMA)
+ self.state = 1291
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1289
+ self.expr(0)
+ pass
+ elif token in [56]:
+ self.state = 1290
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1297
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 173, self._ctx)
+
+ self.state = 1299
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1298
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class TestlistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_testlist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterTestlist"):
+ listener.enterTestlist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitTestlist"):
+ listener.exitTestlist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitTestlist"):
+ return visitor.visitTestlist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def testlist(self):
+
+ localctx = Python3Parser.TestlistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 214, self.RULE_testlist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1301
+ self.test()
+ self.state = 1306
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 175, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1302
+ self.match(Python3Parser.COMMA)
+ self.state = 1303
+ self.test()
+ self.state = 1308
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 175, self._ctx)
+
+ self.state = 1310
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1309
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class DictorsetmakerContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def COLON(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COLON)
+ else:
+ return self.getToken(Python3Parser.COLON, i)
+
+ def POWER(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.POWER)
+ else:
+ return self.getToken(Python3Parser.POWER, i)
+
+ def expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ExprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ExprContext, i)
+
+ def comp_for(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0)
+
+ def star_expr(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.Star_exprContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.Star_exprContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_dictorsetmaker
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterDictorsetmaker"):
+ listener.enterDictorsetmaker(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitDictorsetmaker"):
+ listener.exitDictorsetmaker(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitDictorsetmaker"):
+ return visitor.visitDictorsetmaker(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def dictorsetmaker(self):
+
+ localctx = Python3Parser.DictorsetmakerContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 216, self.RULE_dictorsetmaker)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1360
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 187, self._ctx)
+ if la_ == 1:
+ self.state = 1318
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1312
+ self.test()
+ self.state = 1313
+ self.match(Python3Parser.COLON)
+ self.state = 1314
+ self.test()
+ pass
+ elif token in [62]:
+ self.state = 1316
+ self.match(Python3Parser.POWER)
+ self.state = 1317
+ self.expr(0)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1338
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [9, 22]:
+ self.state = 1320
+ self.comp_for()
+ pass
+ elif token in [59, 78]:
+ self.state = 1332
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 179, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1321
+ self.match(Python3Parser.COMMA)
+ self.state = 1328
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1322
+ self.test()
+ self.state = 1323
+ self.match(Python3Parser.COLON)
+ self.state = 1324
+ self.test()
+ pass
+ elif token in [62]:
+ self.state = 1326
+ self.match(Python3Parser.POWER)
+ self.state = 1327
+ self.expr(0)
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1334
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 179, self._ctx)
+
+ self.state = 1336
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1335
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ pass
+
+ elif la_ == 2:
+ self.state = 1342
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1340
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 1341
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1358
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [9, 22]:
+ self.state = 1344
+ self.comp_for()
+ pass
+ elif token in [59, 78]:
+ self.state = 1352
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 184, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1345
+ self.match(Python3Parser.COMMA)
+ self.state = 1348
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.state = 1346
+ self.test()
+ pass
+ elif token in [56]:
+ self.state = 1347
+ self.star_expr()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ self.state = 1354
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 184, self._ctx)
+
+ self.state = 1356
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1355
+ self.match(Python3Parser.COMMA)
+
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ClassdefContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def CLASS(self):
+ return self.getToken(Python3Parser.CLASS, 0)
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def COLON(self):
+ return self.getToken(Python3Parser.COLON, 0)
+
+ def block(self):
+ return self.getTypedRuleContext(Python3Parser.BlockContext, 0)
+
+ def OPEN_PAREN(self):
+ return self.getToken(Python3Parser.OPEN_PAREN, 0)
+
+ def CLOSE_PAREN(self):
+ return self.getToken(Python3Parser.CLOSE_PAREN, 0)
+
+ def arglist(self):
+ return self.getTypedRuleContext(Python3Parser.ArglistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_classdef
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterClassdef"):
+ listener.enterClassdef(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitClassdef"):
+ listener.exitClassdef(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitClassdef"):
+ return visitor.visitClassdef(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def classdef(self):
+
+ localctx = Python3Parser.ClassdefContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 218, self.RULE_classdef)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1362
+ self.match(Python3Parser.CLASS)
+ self.state = 1363
+ self.name()
+ self.state = 1369
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 57:
+ self.state = 1364
+ self.match(Python3Parser.OPEN_PAREN)
+ self.state = 1366
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1365
+ self.arglist()
+
+ self.state = 1368
+ self.match(Python3Parser.CLOSE_PAREN)
+
+ self.state = 1371
+ self.match(Python3Parser.COLON)
+ self.state = 1372
+ self.block()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArglistContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def argument(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.ArgumentContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.ArgumentContext, i)
+
+ def COMMA(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.COMMA)
+ else:
+ return self.getToken(Python3Parser.COMMA, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_arglist
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArglist"):
+ listener.enterArglist(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArglist"):
+ listener.exitArglist(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArglist"):
+ return visitor.visitArglist(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def arglist(self):
+
+ localctx = Python3Parser.ArglistContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 220, self.RULE_arglist)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1374
+ self.argument()
+ self.state = 1379
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 190, self._ctx)
+ while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER:
+ if _alt == 1:
+ self.state = 1375
+ self.match(Python3Parser.COMMA)
+ self.state = 1376
+ self.argument()
+ self.state = 1381
+ self._errHandler.sync(self)
+ _alt = self._interp.adaptivePredict(self._input, 190, self._ctx)
+
+ self.state = 1383
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 59:
+ self.state = 1382
+ self.match(Python3Parser.COMMA)
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class ArgumentContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def test(self, i: int = None):
+ if i is None:
+ return self.getTypedRuleContexts(Python3Parser.TestContext)
+ else:
+ return self.getTypedRuleContext(Python3Parser.TestContext, i)
+
+ def ASSIGN(self):
+ return self.getToken(Python3Parser.ASSIGN, 0)
+
+ def POWER(self):
+ return self.getToken(Python3Parser.POWER, 0)
+
+ def STAR(self):
+ return self.getToken(Python3Parser.STAR, 0)
+
+ def comp_for(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_argument
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterArgument"):
+ listener.enterArgument(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitArgument"):
+ listener.exitArgument(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitArgument"):
+ return visitor.visitArgument(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def argument(self):
+
+ localctx = Python3Parser.ArgumentContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 222, self.RULE_argument)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1397
+ self._errHandler.sync(self)
+ la_ = self._interp.adaptivePredict(self._input, 193, self._ctx)
+ if la_ == 1:
+ self.state = 1385
+ self.test()
+ self.state = 1387
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 9 or _la == 22:
+ self.state = 1386
+ self.comp_for()
+
+ pass
+
+ elif la_ == 2:
+ self.state = 1389
+ self.test()
+ self.state = 1390
+ self.match(Python3Parser.ASSIGN)
+ self.state = 1391
+ self.test()
+ pass
+
+ elif la_ == 3:
+ self.state = 1393
+ self.match(Python3Parser.POWER)
+ self.state = 1394
+ self.test()
+ pass
+
+ elif la_ == 4:
+ self.state = 1395
+ self.match(Python3Parser.STAR)
+ self.state = 1396
+ self.test()
+ pass
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Comp_iterContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def comp_for(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0)
+
+ def comp_if(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_ifContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comp_iter
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComp_iter"):
+ listener.enterComp_iter(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComp_iter"):
+ listener.exitComp_iter(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComp_iter"):
+ return visitor.visitComp_iter(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comp_iter(self):
+
+ localctx = Python3Parser.Comp_iterContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 224, self.RULE_comp_iter)
+ try:
+ self.state = 1401
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [9, 22]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1399
+ self.comp_for()
+ pass
+ elif token in [25]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1400
+ self.comp_if()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Comp_forContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FOR(self):
+ return self.getToken(Python3Parser.FOR, 0)
+
+ def exprlist(self):
+ return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0)
+
+ def IN(self):
+ return self.getToken(Python3Parser.IN, 0)
+
+ def or_test(self):
+ return self.getTypedRuleContext(Python3Parser.Or_testContext, 0)
+
+ def ASYNC(self):
+ return self.getToken(Python3Parser.ASYNC, 0)
+
+ def comp_iter(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_iterContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comp_for
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComp_for"):
+ listener.enterComp_for(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener,
+):
+ listener.exitComp_for(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComp_for"):
+ return visitor.visitComp_for(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comp_for(self):
+
+ localctx = Python3Parser.Comp_forContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 226, self.RULE_comp_for)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1404
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if _la == 9:
+ self.state = 1403
+ self.match(Python3Parser.ASYNC)
+
+ self.state = 1406
+ self.match(Python3Parser.FOR)
+ self.state = 1407
+ self.exprlist()
+ self.state = 1408
+ self.match(Python3Parser.IN)
+ self.state = 1409
+ self.or_test()
+ self.state = 1411
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 37749248) != 0):
+ self.state = 1410
+ self.comp_iter()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Comp_ifContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def IF(self):
+ return self.getToken(Python3Parser.IF, 0)
+
+ def test_nocond(self):
+ return self.getTypedRuleContext(Python3Parser.Test_nocondContext, 0)
+
+ def comp_iter(self):
+ return self.getTypedRuleContext(Python3Parser.Comp_iterContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_comp_if
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterComp_if"):
+ listener.enterComp_if(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitComp_if"):
+ listener.exitComp_if(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitComp_if"):
+ return visitor.visitComp_if(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def comp_if(self):
+
+ localctx = Python3Parser.Comp_ifContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 228, self.RULE_comp_if)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1413
+ self.match(Python3Parser.IF)
+ self.state = 1414
+ self.test_nocond()
+ self.state = 1416
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 37749248) != 0):
+ self.state = 1415
+ self.comp_iter()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Encoding_declContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def name(self):
+ return self.getTypedRuleContext(Python3Parser.NameContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_encoding_decl
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterEncoding_decl"):
+ listener.enterEncoding_decl(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitEncoding_decl"):
+ listener.exitEncoding_decl(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitEncoding_decl"):
+ return visitor.visitEncoding_decl(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def encoding_decl(self):
+
+ localctx = Python3Parser.Encoding_declContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 230, self.RULE_encoding_decl)
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1418
+ self.name()
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Yield_exprContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def YIELD(self):
+ return self.getToken(Python3Parser.YIELD, 0)
+
+ def yield_arg(self):
+ return self.getTypedRuleContext(Python3Parser.Yield_argContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_yield_expr
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterYield_expr"):
+ listener.enterYield_expr(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitYield_expr"):
+ listener.exitYield_expr(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitYield_expr"):
+ return visitor.visitYield_expr(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def yield_expr(self):
+
+ localctx = Python3Parser.Yield_exprContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 232, self.RULE_yield_expr)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1420
+ self.match(Python3Parser.YIELD)
+ self.state = 1422
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556213912600) != 0) or (
+ (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0):
+ self.state = 1421
+ self.yield_arg()
+
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class Yield_argContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def FROM(self):
+ return self.getToken(Python3Parser.FROM, 0)
+
+ def test(self):
+ return self.getTypedRuleContext(Python3Parser.TestContext, 0)
+
+ def testlist(self):
+ return self.getTypedRuleContext(Python3Parser.TestlistContext, 0)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_yield_arg
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterYield_arg"):
+ listener.enterYield_arg(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitYield_arg"):
+ listener.exitYield_arg(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitYield_arg"):
+ return visitor.visitYield_arg(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def yield_arg(self):
+
+ localctx = Python3Parser.Yield_argContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 234, self.RULE_yield_arg)
+ try:
+ self.state = 1427
+ self._errHandler.sync(self)
+ token = self._input.LA(1)
+ if token in [23]:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1424
+ self.match(Python3Parser.FROM)
+ self.state = 1425
+ self.test()
+ pass
+ elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]:
+ self.enterOuterAlt(localctx, 2)
+ self.state = 1426
+ self.testlist()
+ pass
+ else:
+ raise NoViableAltException(self)
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ class StringsContext(ParserRuleContext):
+ __slots__ = 'parser'
+
+ def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1):
+ super().__init__(parent, invokingState)
+ self.parser = parser
+
+ def STRING(self, i: int = None):
+ if i is None:
+ return self.getTokens(Python3Parser.STRING)
+ else:
+ return self.getToken(Python3Parser.STRING, i)
+
+ def getRuleIndex(self):
+ return Python3Parser.RULE_strings
+
+ def enterRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "enterStrings"):
+ listener.enterStrings(self)
+
+ def exitRule(self, listener: ParseTreeListener):
+ if hasattr(listener, "exitStrings"):
+ listener.exitStrings(self)
+
+ def accept(self, visitor: ParseTreeVisitor):
+ if hasattr(visitor, "visitStrings"):
+ return visitor.visitStrings(self)
+ else:
+ return visitor.visitChildren(self)
+
+ def strings(self):
+
+ localctx = Python3Parser.StringsContext(self, self._ctx, self.state)
+ self.enterRule(localctx, 236, self.RULE_strings)
+ self._la = 0 # Token type
+ try:
+ self.enterOuterAlt(localctx, 1)
+ self.state = 1430
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ while True:
+ self.state = 1429
+ self.match(Python3Parser.STRING)
+ self.state = 1432
+ self._errHandler.sync(self)
+ _la = self._input.LA(1)
+ if not (_la == 3):
+ break
+
+ except RecognitionException as re:
+ localctx.exception = re
+ self._errHandler.reportError(self, re)
+ self._errHandler.recover(self, re)
+ finally:
+ self.exitRule()
+ return localctx
+
+ def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int):
+ if self._predicates == None:
+ self._predicates = dict()
+ self._predicates[60] = self.literal_pattern_sempred
+ self._predicates[61] = self.literal_expr_sempred
+ self._predicates[68] = self.pattern_capture_target_sempred
+ self._predicates[70] = self.value_pattern_sempred
+ self._predicates[97] = self.expr_sempred
+ pred = self._predicates.get(ruleIndex, None)
+ if pred is None:
+ raise Exception("No predicate with index:" + str(ruleIndex))
+ else:
+ return pred(localctx, predIndex)
+
+ def literal_pattern_sempred(self, localctx: Literal_patternContext, predIndex: int):
+ if predIndex == 0:
+ return self.CannotBePlusMinus()
+
+ def literal_expr_sempred(self, localctx: Literal_exprContext, predIndex: int):
+ if predIndex == 1:
+ return self.CannotBePlusMinus()
+
+ def pattern_capture_target_sempred(self, localctx: Pattern_capture_targetContext, predIndex: int):
+ if predIndex == 2:
+ return self.CannotBeDotLpEq()
+
+ def value_pattern_sempred(self, localctx: Value_patternContext, predIndex: int):
+ if predIndex == 3:
+ return self.CannotBeDotLpEq()
+
+ def expr_sempred(self, localctx: ExprContext, predIndex: int):
+ if predIndex == 4:
+ return self.precpred(self._ctx, 8)
+
+ if predIndex == 5:
+ return self.precpred(self._ctx, 6)
+
+ if predIndex == 6:
+ return self.precpred(self._ctx, 5)
+
+ if predIndex == 7:
+ return self.precpred(self._ctx, 4)
+
+ if predIndex == 8:
+ return self.precpred(self._ctx, 3)
+
+ if predIndex == 9:
+ return self.precpred(self._ctx, 2)
+
+ if predIndex == 10:
+ return self.precpred(self._ctx, 1)
+
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py
new file mode 100644
index 000000000..ed67f5c29
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py
@@ -0,0 +1,10 @@
+from antlr4 import *
+
+
+class Python3ParserBase(Parser):
+
+ def CannotBePlusMinus(self) -> bool:
+ return True
+
+ def CannotBeDotLpEq(self) -> bool:
+ return True
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py
new file mode 100644
index 000000000..8117a775d
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py
@@ -0,0 +1,1083 @@
+# Generated from Python3Parser.g4 by ANTLR 4.13.1
+from antlr4 import *
+if "." in __name__:
+ from .Python3Parser import Python3Parser
+else:
+ from Python3Parser import Python3Parser
+
+# This class defines a complete listener for a parse tree produced by Python3Parser.
+class Python3ParserListener(ParseTreeListener):
+
+ # Enter a parse tree produced by Python3Parser#single_input.
+ def enterSingle_input(self, ctx:Python3Parser.Single_inputContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#single_input.
+ def exitSingle_input(self, ctx:Python3Parser.Single_inputContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#file_input.
+ def enterFile_input(self, ctx:Python3Parser.File_inputContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#file_input.
+ def exitFile_input(self, ctx:Python3Parser.File_inputContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#eval_input.
+ def enterEval_input(self, ctx:Python3Parser.Eval_inputContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#eval_input.
+ def exitEval_input(self, ctx:Python3Parser.Eval_inputContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#decorator.
+ def enterDecorator(self, ctx:Python3Parser.DecoratorContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#decorator.
+ def exitDecorator(self, ctx:Python3Parser.DecoratorContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#decorators.
+ def enterDecorators(self, ctx:Python3Parser.DecoratorsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#decorators.
+ def exitDecorators(self, ctx:Python3Parser.DecoratorsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#decorated.
+ def enterDecorated(self, ctx:Python3Parser.DecoratedContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#decorated.
+ def exitDecorated(self, ctx:Python3Parser.DecoratedContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#async_funcdef.
+ def enterAsync_funcdef(self, ctx:Python3Parser.Async_funcdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#async_funcdef.
+ def exitAsync_funcdef(self, ctx:Python3Parser.Async_funcdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#funcdef.
+ def enterFuncdef(self, ctx:Python3Parser.FuncdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#funcdef.
+ def exitFuncdef(self, ctx:Python3Parser.FuncdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#parameters.
+ def enterParameters(self, ctx:Python3Parser.ParametersContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#parameters.
+ def exitParameters(self, ctx:Python3Parser.ParametersContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#typedargslist.
+ def enterTypedargslist(self, ctx:Python3Parser.TypedargslistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#typedargslist.
+ def exitTypedargslist(self, ctx:Python3Parser.TypedargslistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#tfpdef.
+ def enterTfpdef(self, ctx:Python3Parser.TfpdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#tfpdef.
+ def exitTfpdef(self, ctx:Python3Parser.TfpdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#varargslist.
+ def enterVarargslist(self, ctx:Python3Parser.VarargslistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#varargslist.
+ def exitVarargslist(self, ctx:Python3Parser.VarargslistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#vfpdef.
+ def enterVfpdef(self, ctx:Python3Parser.VfpdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#vfpdef.
+ def exitVfpdef(self, ctx:Python3Parser.VfpdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#stmt.
+ def enterStmt(self, ctx:Python3Parser.StmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#stmt.
+ def exitStmt(self, ctx:Python3Parser.StmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#simple_stmts.
+ def enterSimple_stmts(self, ctx:Python3Parser.Simple_stmtsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#simple_stmts.
+ def exitSimple_stmts(self, ctx:Python3Parser.Simple_stmtsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#simple_stmt.
+ def enterSimple_stmt(self, ctx:Python3Parser.Simple_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#simple_stmt.
+ def exitSimple_stmt(self, ctx:Python3Parser.Simple_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#expr_stmt.
+ def enterExpr_stmt(self, ctx:Python3Parser.Expr_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#expr_stmt.
+ def exitExpr_stmt(self, ctx:Python3Parser.Expr_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#annassign.
+ def enterAnnassign(self, ctx:Python3Parser.AnnassignContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#annassign.
+ def exitAnnassign(self, ctx:Python3Parser.AnnassignContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#testlist_star_expr.
+ def enterTestlist_star_expr(self, ctx:Python3Parser.Testlist_star_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#testlist_star_expr.
+ def exitTestlist_star_expr(self, ctx:Python3Parser.Testlist_star_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#augassign.
+ def enterAugassign(self, ctx:Python3Parser.AugassignContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#augassign.
+ def exitAugassign(self, ctx:Python3Parser.AugassignContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#del_stmt.
+ def enterDel_stmt(self, ctx:Python3Parser.Del_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#del_stmt.
+ def exitDel_stmt(self, ctx:Python3Parser.Del_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#pass_stmt.
+ def enterPass_stmt(self, ctx:Python3Parser.Pass_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#pass_stmt.
+ def exitPass_stmt(self, ctx:Python3Parser.Pass_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#flow_stmt.
+ def enterFlow_stmt(self, ctx:Python3Parser.Flow_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#flow_stmt.
+ def exitFlow_stmt(self, ctx:Python3Parser.Flow_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#break_stmt.
+ def enterBreak_stmt(self, ctx:Python3Parser.Break_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#break_stmt.
+ def exitBreak_stmt(self, ctx:Python3Parser.Break_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#continue_stmt.
+ def enterContinue_stmt(self, ctx:Python3Parser.Continue_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#continue_stmt.
+ def exitContinue_stmt(self, ctx:Python3Parser.Continue_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#return_stmt.
+ def enterReturn_stmt(self, ctx:Python3Parser.Return_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#return_stmt.
+ def exitReturn_stmt(self, ctx:Python3Parser.Return_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#yield_stmt.
+ def enterYield_stmt(self, ctx:Python3Parser.Yield_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#yield_stmt.
+ def exitYield_stmt(self, ctx:Python3Parser.Yield_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#raise_stmt.
+ def enterRaise_stmt(self, ctx:Python3Parser.Raise_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#raise_stmt.
+ def exitRaise_stmt(self, ctx:Python3Parser.Raise_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_stmt.
+ def enterImport_stmt(self, ctx:Python3Parser.Import_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_stmt.
+ def exitImport_stmt(self, ctx:Python3Parser.Import_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_name.
+ def enterImport_name(self, ctx:Python3Parser.Import_nameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_name.
+ def exitImport_name(self, ctx:Python3Parser.Import_nameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_from.
+ def enterImport_from(self, ctx:Python3Parser.Import_fromContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_from.
+ def exitImport_from(self, ctx:Python3Parser.Import_fromContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_as_name.
+ def enterImport_as_name(self, ctx:Python3Parser.Import_as_nameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_as_name.
+ def exitImport_as_name(self, ctx:Python3Parser.Import_as_nameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#dotted_as_name.
+ def enterDotted_as_name(self, ctx:Python3Parser.Dotted_as_nameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#dotted_as_name.
+ def exitDotted_as_name(self, ctx:Python3Parser.Dotted_as_nameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#import_as_names.
+ def enterImport_as_names(self, ctx:Python3Parser.Import_as_namesContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#import_as_names.
+ def exitImport_as_names(self, ctx:Python3Parser.Import_as_namesContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#dotted_as_names.
+ def enterDotted_as_names(self, ctx:Python3Parser.Dotted_as_namesContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#dotted_as_names.
+ def exitDotted_as_names(self, ctx:Python3Parser.Dotted_as_namesContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#dotted_name.
+ def enterDotted_name(self, ctx:Python3Parser.Dotted_nameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#dotted_name.
+ def exitDotted_name(self, ctx:Python3Parser.Dotted_nameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#global_stmt.
+ def enterGlobal_stmt(self, ctx:Python3Parser.Global_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#global_stmt.
+ def exitGlobal_stmt(self, ctx:Python3Parser.Global_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#nonlocal_stmt.
+ def enterNonlocal_stmt(self, ctx:Python3Parser.Nonlocal_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#nonlocal_stmt.
+ def exitNonlocal_stmt(self, ctx:Python3Parser.Nonlocal_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#assert_stmt.
+ def enterAssert_stmt(self, ctx:Python3Parser.Assert_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#assert_stmt.
+ def exitAssert_stmt(self, ctx:Python3Parser.Assert_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#compound_stmt.
+ def enterCompound_stmt(self, ctx:Python3Parser.Compound_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#compound_stmt.
+ def exitCompound_stmt(self, ctx:Python3Parser.Compound_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#async_stmt.
+ def enterAsync_stmt(self, ctx:Python3Parser.Async_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#async_stmt.
+ def exitAsync_stmt(self, ctx:Python3Parser.Async_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#if_stmt.
+ def enterIf_stmt(self, ctx:Python3Parser.If_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#if_stmt.
+ def exitIf_stmt(self, ctx:Python3Parser.If_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#while_stmt.
+ def enterWhile_stmt(self, ctx:Python3Parser.While_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#while_stmt.
+ def exitWhile_stmt(self, ctx:Python3Parser.While_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#for_stmt.
+ def enterFor_stmt(self, ctx:Python3Parser.For_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#for_stmt.
+ def exitFor_stmt(self, ctx:Python3Parser.For_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#try_stmt.
+ def enterTry_stmt(self, ctx:Python3Parser.Try_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#try_stmt.
+ def exitTry_stmt(self, ctx:Python3Parser.Try_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#with_stmt.
+ def enterWith_stmt(self, ctx:Python3Parser.With_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#with_stmt.
+ def exitWith_stmt(self, ctx:Python3Parser.With_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#with_item.
+ def enterWith_item(self, ctx:Python3Parser.With_itemContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#with_item.
+ def exitWith_item(self, ctx:Python3Parser.With_itemContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#except_clause.
+ def enterExcept_clause(self, ctx:Python3Parser.Except_clauseContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#except_clause.
+ def exitExcept_clause(self, ctx:Python3Parser.Except_clauseContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#block.
+ def enterBlock(self, ctx:Python3Parser.BlockContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#block.
+ def exitBlock(self, ctx:Python3Parser.BlockContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#match_stmt.
+ def enterMatch_stmt(self, ctx:Python3Parser.Match_stmtContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#match_stmt.
+ def exitMatch_stmt(self, ctx:Python3Parser.Match_stmtContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#subject_expr.
+ def enterSubject_expr(self, ctx:Python3Parser.Subject_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#subject_expr.
+ def exitSubject_expr(self, ctx:Python3Parser.Subject_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#star_named_expressions.
+ def enterStar_named_expressions(self, ctx:Python3Parser.Star_named_expressionsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#star_named_expressions.
+ def exitStar_named_expressions(self, ctx:Python3Parser.Star_named_expressionsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#star_named_expression.
+ def enterStar_named_expression(self, ctx:Python3Parser.Star_named_expressionContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#star_named_expression.
+ def exitStar_named_expression(self, ctx:Python3Parser.Star_named_expressionContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#case_block.
+ def enterCase_block(self, ctx:Python3Parser.Case_blockContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#case_block.
+ def exitCase_block(self, ctx:Python3Parser.Case_blockContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#guard.
+ def enterGuard(self, ctx:Python3Parser.GuardContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#guard.
+ def exitGuard(self, ctx:Python3Parser.GuardContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#patterns.
+ def enterPatterns(self, ctx:Python3Parser.PatternsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#patterns.
+ def exitPatterns(self, ctx:Python3Parser.PatternsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#pattern.
+ def enterPattern(self, ctx:Python3Parser.PatternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#pattern.
+ def exitPattern(self, ctx:Python3Parser.PatternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#as_pattern.
+ def enterAs_pattern(self, ctx:Python3Parser.As_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#as_pattern.
+ def exitAs_pattern(self, ctx:Python3Parser.As_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#or_pattern.
+ def enterOr_pattern(self, ctx:Python3Parser.Or_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#or_pattern.
+ def exitOr_pattern(self, ctx:Python3Parser.Or_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#closed_pattern.
+ def enterClosed_pattern(self, ctx:Python3Parser.Closed_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#closed_pattern.
+ def exitClosed_pattern(self, ctx:Python3Parser.Closed_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#literal_pattern.
+ def enterLiteral_pattern(self, ctx:Python3Parser.Literal_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#literal_pattern.
+ def exitLiteral_pattern(self, ctx:Python3Parser.Literal_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#literal_expr.
+ def enterLiteral_expr(self, ctx:Python3Parser.Literal_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#literal_expr.
+ def exitLiteral_expr(self, ctx:Python3Parser.Literal_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#complex_number.
+ def enterComplex_number(self, ctx:Python3Parser.Complex_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#complex_number.
+ def exitComplex_number(self, ctx:Python3Parser.Complex_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#signed_number.
+ def enterSigned_number(self, ctx:Python3Parser.Signed_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#signed_number.
+ def exitSigned_number(self, ctx:Python3Parser.Signed_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#signed_real_number.
+ def enterSigned_real_number(self, ctx:Python3Parser.Signed_real_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#signed_real_number.
+ def exitSigned_real_number(self, ctx:Python3Parser.Signed_real_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#real_number.
+ def enterReal_number(self, ctx:Python3Parser.Real_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#real_number.
+ def exitReal_number(self, ctx:Python3Parser.Real_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#imaginary_number.
+ def enterImaginary_number(self, ctx:Python3Parser.Imaginary_numberContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#imaginary_number.
+ def exitImaginary_number(self, ctx:Python3Parser.Imaginary_numberContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#capture_pattern.
+ def enterCapture_pattern(self, ctx:Python3Parser.Capture_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#capture_pattern.
+ def exitCapture_pattern(self, ctx:Python3Parser.Capture_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#pattern_capture_target.
+ def enterPattern_capture_target(self, ctx:Python3Parser.Pattern_capture_targetContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#pattern_capture_target.
+ def exitPattern_capture_target(self, ctx:Python3Parser.Pattern_capture_targetContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#wildcard_pattern.
+ def enterWildcard_pattern(self, ctx:Python3Parser.Wildcard_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#wildcard_pattern.
+ def exitWildcard_pattern(self, ctx:Python3Parser.Wildcard_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#value_pattern.
+ def enterValue_pattern(self, ctx:Python3Parser.Value_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#value_pattern.
+ def exitValue_pattern(self, ctx:Python3Parser.Value_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#attr.
+ def enterAttr(self, ctx:Python3Parser.AttrContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#attr.
+ def exitAttr(self, ctx:Python3Parser.AttrContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#name_or_attr.
+ def enterName_or_attr(self, ctx:Python3Parser.Name_or_attrContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#name_or_attr.
+ def exitName_or_attr(self, ctx:Python3Parser.Name_or_attrContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#group_pattern.
+ def enterGroup_pattern(self, ctx:Python3Parser.Group_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#group_pattern.
+ def exitGroup_pattern(self, ctx:Python3Parser.Group_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#sequence_pattern.
+ def enterSequence_pattern(self, ctx:Python3Parser.Sequence_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#sequence_pattern.
+ def exitSequence_pattern(self, ctx:Python3Parser.Sequence_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#open_sequence_pattern.
+ def enterOpen_sequence_pattern(self, ctx:Python3Parser.Open_sequence_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#open_sequence_pattern.
+ def exitOpen_sequence_pattern(self, ctx:Python3Parser.Open_sequence_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#maybe_sequence_pattern.
+ def enterMaybe_sequence_pattern(self, ctx:Python3Parser.Maybe_sequence_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#maybe_sequence_pattern.
+ def exitMaybe_sequence_pattern(self, ctx:Python3Parser.Maybe_sequence_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#maybe_star_pattern.
+ def enterMaybe_star_pattern(self, ctx:Python3Parser.Maybe_star_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#maybe_star_pattern.
+ def exitMaybe_star_pattern(self, ctx:Python3Parser.Maybe_star_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#star_pattern.
+ def enterStar_pattern(self, ctx:Python3Parser.Star_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#star_pattern.
+ def exitStar_pattern(self, ctx:Python3Parser.Star_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#mapping_pattern.
+ def enterMapping_pattern(self, ctx:Python3Parser.Mapping_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#mapping_pattern.
+ def exitMapping_pattern(self, ctx:Python3Parser.Mapping_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#items_pattern.
+ def enterItems_pattern(self, ctx:Python3Parser.Items_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#items_pattern.
+ def exitItems_pattern(self, ctx:Python3Parser.Items_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#key_value_pattern.
+ def enterKey_value_pattern(self, ctx:Python3Parser.Key_value_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#key_value_pattern.
+ def exitKey_value_pattern(self, ctx:Python3Parser.Key_value_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#double_star_pattern.
+ def enterDouble_star_pattern(self, ctx:Python3Parser.Double_star_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#double_star_pattern.
+ def exitDouble_star_pattern(self, ctx:Python3Parser.Double_star_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#class_pattern.
+ def enterClass_pattern(self, ctx:Python3Parser.Class_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#class_pattern.
+ def exitClass_pattern(self, ctx:Python3Parser.Class_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#positional_patterns.
+ def enterPositional_patterns(self, ctx:Python3Parser.Positional_patternsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#positional_patterns.
+ def exitPositional_patterns(self, ctx:Python3Parser.Positional_patternsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#keyword_patterns.
+ def enterKeyword_patterns(self, ctx:Python3Parser.Keyword_patternsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#keyword_patterns.
+ def exitKeyword_patterns(self, ctx:Python3Parser.Keyword_patternsContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#keyword_pattern.
+ def enterKeyword_pattern(self, ctx:Python3Parser.Keyword_patternContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#keyword_pattern.
+ def exitKeyword_pattern(self, ctx:Python3Parser.Keyword_patternContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#test.
+ def enterTest(self, ctx:Python3Parser.TestContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#test.
+ def exitTest(self, ctx:Python3Parser.TestContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#test_nocond.
+ def enterTest_nocond(self, ctx:Python3Parser.Test_nocondContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#test_nocond.
+ def exitTest_nocond(self, ctx:Python3Parser.Test_nocondContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#lambdef.
+ def enterLambdef(self, ctx:Python3Parser.LambdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#lambdef.
+ def exitLambdef(self, ctx:Python3Parser.LambdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#lambdef_nocond.
+ def enterLambdef_nocond(self, ctx:Python3Parser.Lambdef_nocondContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#lambdef_nocond.
+ def exitLambdef_nocond(self, ctx:Python3Parser.Lambdef_nocondContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#or_test.
+ def enterOr_test(self, ctx:Python3Parser.Or_testContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#or_test.
+ def exitOr_test(self, ctx:Python3Parser.Or_testContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#and_test.
+ def enterAnd_test(self, ctx:Python3Parser.And_testContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#and_test.
+ def exitAnd_test(self, ctx:Python3Parser.And_testContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#not_test.
+ def enterNot_test(self, ctx:Python3Parser.Not_testContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#not_test.
+ def exitNot_test(self, ctx:Python3Parser.Not_testContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comparison.
+ def enterComparison(self, ctx:Python3Parser.ComparisonContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comparison.
+ def exitComparison(self, ctx:Python3Parser.ComparisonContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comp_op.
+ def enterComp_op(self, ctx:Python3Parser.Comp_opContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comp_op.
+ def exitComp_op(self, ctx:Python3Parser.Comp_opContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#star_expr.
+ def enterStar_expr(self, ctx:Python3Parser.Star_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#star_expr.
+ def exitStar_expr(self, ctx:Python3Parser.Star_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#expr.
+ def enterExpr(self, ctx:Python3Parser.ExprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#expr.
+ def exitExpr(self, ctx:Python3Parser.ExprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#atom_expr.
+ def enterAtom_expr(self, ctx:Python3Parser.Atom_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#atom_expr.
+ def exitAtom_expr(self, ctx:Python3Parser.Atom_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#atom.
+ def enterAtom(self, ctx:Python3Parser.AtomContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#atom.
+ def exitAtom(self, ctx:Python3Parser.AtomContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#name.
+ def enterName(self, ctx:Python3Parser.NameContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#name.
+ def exitName(self, ctx:Python3Parser.NameContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#testlist_comp.
+ def enterTestlist_comp(self, ctx:Python3Parser.Testlist_compContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#testlist_comp.
+ def exitTestlist_comp(self, ctx:Python3Parser.Testlist_compContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#trailer.
+ def enterTrailer(self, ctx:Python3Parser.TrailerContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#trailer.
+ def exitTrailer(self, ctx:Python3Parser.TrailerContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#subscriptlist.
+ def enterSubscriptlist(self, ctx:Python3Parser.SubscriptlistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#subscriptlist.
+ def exitSubscriptlist(self, ctx:Python3Parser.SubscriptlistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#subscript_.
+ def enterSubscript_(self, ctx:Python3Parser.Subscript_Context):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#subscript_.
+ def exitSubscript_(self, ctx:Python3Parser.Subscript_Context):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#sliceop.
+ def enterSliceop(self, ctx:Python3Parser.SliceopContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#sliceop.
+ def exitSliceop(self, ctx:Python3Parser.SliceopContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#exprlist.
+ def enterExprlist(self, ctx:Python3Parser.ExprlistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#exprlist.
+ def exitExprlist(self, ctx:Python3Parser.ExprlistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#testlist.
+ def enterTestlist(self, ctx:Python3Parser.TestlistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#testlist.
+ def exitTestlist(self, ctx:Python3Parser.TestlistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#dictorsetmaker.
+ def enterDictorsetmaker(self, ctx:Python3Parser.DictorsetmakerContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#dictorsetmaker.
+ def exitDictorsetmaker(self, ctx:Python3Parser.DictorsetmakerContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#classdef.
+ def enterClassdef(self, ctx:Python3Parser.ClassdefContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#classdef.
+ def exitClassdef(self, ctx:Python3Parser.ClassdefContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#arglist.
+ def enterArglist(self, ctx:Python3Parser.ArglistContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#arglist.
+ def exitArglist(self, ctx:Python3Parser.ArglistContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#argument.
+ def enterArgument(self, ctx:Python3Parser.ArgumentContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#argument.
+ def exitArgument(self, ctx:Python3Parser.ArgumentContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comp_iter.
+ def enterComp_iter(self, ctx:Python3Parser.Comp_iterContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comp_iter.
+ def exitComp_iter(self, ctx:Python3Parser.Comp_iterContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comp_for.
+ def enterComp_for(self, ctx:Python3Parser.Comp_forContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comp_for.
+ def exitComp_for(self, ctx:Python3Parser.Comp_forContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#comp_if.
+ def enterComp_if(self, ctx:Python3Parser.Comp_ifContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#comp_if.
+ def exitComp_if(self, ctx:Python3Parser.Comp_ifContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#encoding_decl.
+ def enterEncoding_decl(self, ctx:Python3Parser.Encoding_declContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#encoding_decl.
+ def exitEncoding_decl(self, ctx:Python3Parser.Encoding_declContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#yield_expr.
+ def enterYield_expr(self, ctx:Python3Parser.Yield_exprContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#yield_expr.
+ def exitYield_expr(self, ctx:Python3Parser.Yield_exprContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#yield_arg.
+ def enterYield_arg(self, ctx:Python3Parser.Yield_argContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#yield_arg.
+ def exitYield_arg(self, ctx:Python3Parser.Yield_argContext):
+ pass
+
+
+ # Enter a parse tree produced by Python3Parser#strings.
+ def enterStrings(self, ctx:Python3Parser.StringsContext):
+ pass
+
+ # Exit a parse tree produced by Python3Parser#strings.
+ def exitStrings(self, ctx:Python3Parser.StringsContext):
+ pass
+
+
+
+del Python3Parser
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py
new file mode 100644
index 000000000..2baaa2317
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py
@@ -0,0 +1,491 @@
+# Generated from Python3Parser.g4 by ANTLR 4.13.1
+from antlr4 import *
+
+if "." in __name__:
+ from .Python3Parser import Python3Parser
+else:
+ from Python3Parser import Python3Parser
+
+
+# This class defines a complete generic visitor for a parse tree produced by Python3Parser.
+
+class Python3ParserVisitor(ParseTreeVisitor):
+
+ # Visit a parse tree produced by Python3Parser#single_input.
+ def visitSingle_input(self, ctx: Python3Parser.Single_inputContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#file_input.
+ def visitFile_input(self, ctx: Python3Parser.File_inputContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#eval_input.
+ def visitEval_input(self, ctx: Python3Parser.Eval_inputContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#decorator.
+ def visitDecorator(self, ctx: Python3Parser.DecoratorContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#decorators.
+ def visitDecorators(self, ctx: Python3Parser.DecoratorsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#decorated.
+ def visitDecorated(self, ctx: Python3Parser.DecoratedContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#async_funcdef.
+ def visitAsync_funcdef(self, ctx: Python3Parser.Async_funcdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#funcdef.
+ def visitFuncdef(self, ctx: Python3Parser.FuncdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#parameters.
+ def visitParameters(self, ctx: Python3Parser.ParametersContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#typedargslist.
+ def visitTypedargslist(self, ctx: Python3Parser.TypedargslistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#tfpdef.
+ def visitTfpdef(self, ctx: Python3Parser.TfpdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#varargslist.
+ def visitVarargslist(self, ctx: Python3Parser.VarargslistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#vfpdef.
+ def visitVfpdef(self, ctx: Python3Parser.VfpdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#stmt.
+ def visitStmt(self, ctx: Python3Parser.StmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#simple_stmts.
+ def visitSimple_stmts(self, ctx: Python3Parser.Simple_stmtsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#simple_stmt.
+ def visitSimple_stmt(self, ctx: Python3Parser.Simple_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#expr_stmt.
+ def visitExpr_stmt(self, ctx: Python3Parser.Expr_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#annassign.
+ def visitAnnassign(self, ctx: Python3Parser.AnnassignContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#testlist_star_expr.
+ def visitTestlist_star_expr(self, ctx: Python3Parser.Testlist_star_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#augassign.
+ def visitAugassign(self, ctx: Python3Parser.AugassignContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#del_stmt.
+ def visitDel_stmt(self, ctx: Python3Parser.Del_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#pass_stmt.
+ def visitPass_stmt(self, ctx: Python3Parser.Pass_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#flow_stmt.
+ def visitFlow_stmt(self, ctx: Python3Parser.Flow_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#break_stmt.
+ def visitBreak_stmt(self, ctx: Python3Parser.Break_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#continue_stmt.
+ def visitContinue_stmt(self, ctx: Python3Parser.Continue_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#return_stmt.
+ def visitReturn_stmt(self, ctx: Python3Parser.Return_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#yield_stmt.
+ def visitYield_stmt(self, ctx: Python3Parser.Yield_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#raise_stmt.
+ def visitRaise_stmt(self, ctx: Python3Parser.Raise_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_stmt.
+ def visitImport_stmt(self, ctx: Python3Parser.Import_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_name.
+ def visitImport_name(self, ctx: Python3Parser.Import_nameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_from.
+ def visitImport_from(self, ctx: Python3Parser.Import_fromContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_as_name.
+ def visitImport_as_name(self, ctx: Python3Parser.Import_as_nameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#dotted_as_name.
+ def visitDotted_as_name(self, ctx: Python3Parser.Dotted_as_nameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#import_as_names.
+ def visitImport_as_names(self, ctx: Python3Parser.Import_as_namesContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#dotted_as_names.
+ def visitDotted_as_names(self, ctx: Python3Parser.Dotted_as_namesContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#dotted_name.
+ def visitDotted_name(self, ctx: Python3Parser.Dotted_nameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#global_stmt.
+ def visitGlobal_stmt(self, ctx: Python3Parser.Global_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#nonlocal_stmt.
+ def visitNonlocal_stmt(self, ctx: Python3Parser.Nonlocal_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#assert_stmt.
+ def visitAssert_stmt(self, ctx: Python3Parser.Assert_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#compound_stmt.
+ def visitCompound_stmt(self, ctx: Python3Parser.Compound_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#async_stmt.
+ def visitAsync_stmt(self, ctx: Python3Parser.Async_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#if_stmt.
+ def visitIf_stmt(self, ctx: Python3Parser.If_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#while_stmt.
+ def visitWhile_stmt(self, ctx: Python3Parser.While_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#for_stmt.
+ def visitFor_stmt(self, ctx: Python3Parser.For_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#try_stmt.
+ def visitTry_stmt(self, ctx: Python3Parser.Try_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#with_stmt.
+ def visitWith_stmt(self, ctx: Python3Parser.With_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#with_item.
+ def visitWith_item(self, ctx: Python3Parser.With_itemContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#except_clause.
+ def visitExcept_clause(self, ctx: Python3Parser.Except_clauseContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#block.
+ def visitBlock(self, ctx: Python3Parser.BlockContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#match_stmt.
+ def visitMatch_stmt(self, ctx: Python3Parser.Match_stmtContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#subject_expr.
+ def visitSubject_expr(self, ctx: Python3Parser.Subject_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#star_named_expressions.
+ def visitStar_named_expressions(self, ctx: Python3Parser.Star_named_expressionsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#star_named_expression.
+ def visitStar_named_expression(self, ctx: Python3Parser.Star_named_expressionContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#case_block.
+ def visitCase_block(self, ctx: Python3Parser.Case_blockContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#guard.
+ def visitGuard(self, ctx: Python3Parser.GuardContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#patterns.
+ def visitPatterns(self, ctx: Python3Parser.PatternsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#pattern.
+ def visitPattern(self, ctx: Python3Parser.PatternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#as_pattern.
+ def visitAs_pattern(self, ctx: Python3Parser.As_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#or_pattern.
+ def visitOr_pattern(self, ctx: Python3Parser.Or_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#closed_pattern.
+ def visitClosed_pattern(self, ctx: Python3Parser.Closed_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#literal_pattern.
+ def visitLiteral_pattern(self, ctx: Python3Parser.Literal_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#literal_expr.
+ def visitLiteral_expr(self, ctx: Python3Parser.Literal_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#complex_number.
+ def visitComplex_number(self, ctx: Python3Parser.Complex_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#signed_number.
+ def visitSigned_number(self, ctx: Python3Parser.Signed_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#signed_real_number.
+ def visitSigned_real_number(self, ctx: Python3Parser.Signed_real_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#real_number.
+ def visitReal_number(self, ctx: Python3Parser.Real_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#imaginary_number.
+ def visitImaginary_number(self, ctx: Python3Parser.Imaginary_numberContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#capture_pattern.
+ def visitCapture_pattern(self, ctx: Python3Parser.Capture_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#pattern_capture_target.
+ def visitPattern_capture_target(self, ctx: Python3Parser.Pattern_capture_targetContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#wildcard_pattern.
+ def visitWildcard_pattern(self, ctx: Python3Parser.Wildcard_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#value_pattern.
+ def visitValue_pattern(self, ctx: Python3Parser.Value_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#attr.
+ def visitAttr(self, ctx: Python3Parser.AttrContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#name_or_attr.
+ def visitName_or_attr(self, ctx: Python3Parser.Name_or_attrContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#group_pattern.
+ def visitGroup_pattern(self, ctx: Python3Parser.Group_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#sequence_pattern.
+ def visitSequence_pattern(self, ctx: Python3Parser.Sequence_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#open_sequence_pattern.
+ def visitOpen_sequence_pattern(self, ctx: Python3Parser.Open_sequence_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#maybe_sequence_pattern.
+ def visitMaybe_sequence_pattern(self, ctx: Python3Parser.Maybe_sequence_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#maybe_star_pattern.
+ def visitMaybe_star_pattern(self, ctx: Python3Parser.Maybe_star_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#star_pattern.
+ def visitStar_pattern(self, ctx: Python3Parser.Star_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#mapping_pattern.
+ def visitMapping_pattern(self, ctx: Python3Parser.Mapping_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#items_pattern.
+ def visitItems_pattern(self, ctx: Python3Parser.Items_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#key_value_pattern.
+ def visitKey_value_pattern(self, ctx: Python3Parser.Key_value_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#double_star_pattern.
+ def visitDouble_star_pattern(self, ctx: Python3Parser.Double_star_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#class_pattern.
+ def visitClass_pattern(self, ctx: Python3Parser.Class_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#positional_patterns.
+ def visitPositional_patterns(self, ctx: Python3Parser.Positional_patternsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#keyword_patterns.
+ def visitKeyword_patterns(self, ctx: Python3Parser.Keyword_patternsContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#keyword_pattern.
+ def visitKeyword_pattern(self, ctx: Python3Parser.Keyword_patternContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#test.
+ def visitTest(self, ctx: Python3Parser.TestContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#test_nocond.
+ def visitTest_nocond(self, ctx: Python3Parser.Test_nocondContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#lambdef.
+ def visitLambdef(self, ctx: Python3Parser.LambdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#lambdef_nocond.
+ def visitLambdef_nocond(self, ctx: Python3Parser.Lambdef_nocondContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#or_test.
+ def visitOr_test(self, ctx: Python3Parser.Or_testContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#and_test.
+ def visitAnd_test(self, ctx: Python3Parser.And_testContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#not_test.
+ def visitNot_test(self, ctx: Python3Parser.Not_testContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comparison.
+ def visitComparison(self, ctx: Python3Parser.ComparisonContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comp_op.
+ def visitComp_op(self, ctx: Python3Parser.Comp_opContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#star_expr.
+ def visitStar_expr(self, ctx: Python3Parser.Star_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#expr.
+ def visitExpr(self, ctx: Python3Parser.ExprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#atom_expr.
+ def visitAtom_expr(self, ctx: Python3Parser.Atom_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#atom.
+ def visitAtom(self, ctx: Python3Parser.AtomContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#name.
+ def visitName(self, ctx: Python3Parser.NameContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#testlist_comp.
+ def visitTestlist_comp(self, ctx: Python3Parser.Testlist_compContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#trailer.
+ def visitTrailer(self, ctx: Python3Parser.TrailerContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#subscriptlist.
+ def visitSubscriptlist(self, ctx: Python3Parser.SubscriptlistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#subscript_.
+ def visitSubscript_(self, ctx: Python3Parser.Subscript_Context):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#sliceop.
+ def visitSliceop(self, ctx: Python3Parser.SliceopContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#exprlist.
+ def visitExprlist(self, ctx: Python3Parser.ExprlistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#testlist.
+ def visitTestlist(self, ctx: Python3Parser.TestlistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#dictorsetmaker.
+ def visitDictorsetmaker(self, ctx: Python3Parser.DictorsetmakerContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#classdef.
+ def visitClassdef(self, ctx: Python3Parser.ClassdefContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#arglist.
+ def visitArglist(self, ctx: Python3Parser.ArglistContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#argument.
+ def visitArgument(self, ctx: Python3Parser.ArgumentContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comp_iter.
+ def visitComp_iter(self, ctx: Python3Parser.Comp_iterContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comp_for.
+ def visitComp_for(self, ctx: Python3Parser.Comp_forContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#comp_if.
+ def visitComp_if(self, ctx: Python3Parser.Comp_ifContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#encoding_decl.
+ def visitEncoding_decl(self, ctx: Python3Parser.Encoding_declContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#yield_expr.
+ def visitYield_expr(self, ctx: Python3Parser.Yield_exprContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#yield_arg.
+ def visitYield_arg(self, ctx: Python3Parser.Yield_argContext):
+ return self.visitChildren(ctx)
+
+ # Visit a parse tree produced by Python3Parser#strings.
+ def visitStrings(self, ctx: Python3Parser.StringsContext):
+ return self.visitChildren(ctx)
+
+
+del Python3Parser
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py
new file mode 100644
index 000000000..e8bd60bf1
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py
@@ -0,0 +1,134 @@
+from antlr4 import *
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Lexer import Python3Lexer
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser
+from module_programming_winnowing.convert_code_to_ast.languages.python.Python3ParserVisitor import Python3ParserVisitor
+
+
+class RemoveVariableNames(Python3ParserVisitor):
+ def visitAtom(self, ctx):
+ name_ctx = ctx.name()
+ if name_ctx:
+ token = name_ctx.getToken(Python3Parser.NAME, 0)
+ if token:
+ token.text = 'x'
+ return self.visitChildren(ctx)
+
+
+class CustomPythonVisitor(Python3ParserVisitor):
+ def __init__(self):
+ self.loop_count = 0
+ self.if_count = 0
+ self.method_count = 0
+
+ def visitWhile_stmt(self, ctx):
+ self.loop_count += 1
+ return self.visitChildren(ctx)
+
+ def visitFor_stmt(self, ctx):
+ self.loop_count += 1
+ return self.visitChildren(ctx)
+
+ def visitIf_stmt(self, ctx):
+ self.if_count += 1
+ return self.visitChildren(ctx)
+
+ def visitFuncdef(self, ctx):
+ self.method_count += 1
+ return self.visitChildren(ctx)
+
+
+def mutate(source_code: str):
+ input_stream = InputStream(source_code)
+ lexer = Python3Lexer(input_stream)
+ stream = CommonTokenStream(lexer)
+ parser = Python3Parser(stream)
+ tree = parser.file_input()
+
+ # Transform the AST
+ transformer = RemoveVariableNames()
+ transformer.visit(tree)
+
+ return tree
+
+
+level0 = []
+level1 = []
+level2 = []
+
+
+def find_levels(node, parser, level=0):
+ if level == 0:
+ level0.append(node.toStringTree(recog=parser))
+ elif level == 1:
+ level1.append(node.toStringTree(recog=parser))
+ elif level == 2:
+ level2.append(node.toStringTree(recog=parser))
+
+ for child in node.getChildren():
+ if isinstance(child, ParserRuleContext):
+ find_levels(child, parser, level=level + 1)
+
+
+def get_children(node, parser):
+ parent = node.toStringTree(recog=parser)
+ children = [child.toStringTree(recog=parser) if isinstance(child, ParserRuleContext) else child.getText() for child
+ in node.getChildren()]
+ return parent, children
+
+
+parents1 = []
+parents2 = []
+children1 = []
+children2 = []
+
+
+def get_parent_children_relation(root, parser, level=0):
+ for child in root.getChildren():
+ if isinstance(child, ParserRuleContext):
+ p, c = get_children(child, parser)
+ if level == 0:
+ parents1.append(p)
+ children1.append(c)
+ elif level == 1:
+ parents2.append(p)
+ children2.append(c)
+ get_parent_children_relation(child, parser, level + 1)
+
+
+def analyze(source_code: str):
+ input_tree = mutate(source_code)
+
+ parser = Python3Parser(CommonTokenStream(Python3Lexer(InputStream(source_code))))
+
+ visitor = CustomPythonVisitor()
+ visitor.visit(input_tree)
+ count_l = visitor.loop_count
+ count_if = visitor.if_count
+ count_f = visitor.method_count
+
+ # Finden der Ebenen
+ find_levels(input_tree, parser)
+
+ # Eltern-Kind-Beziehungen finden
+ get_parent_children_relation(input_tree, parser)
+
+ counts = [count_l, count_if, count_f]
+ print(counts)
+ levels = [level0, level1, level2]
+ i = 1
+ for lev in levels:
+ print("Level", i)
+ print(lev)
+ i += 1
+
+ return counts, levels
+
+
+if __name__ == "__main__":
+ code = """
+ def sum_first_ten():
+ sum = 0
+ for i in range (11):
+ sum += i
+ return sum"""
+ counts, levels = analyze(code)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py
new file mode 100644
index 000000000..5f2bd6d2b
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py
@@ -0,0 +1,15 @@
+from dataclasses import dataclass
+from typing import Any
+
+
+#TODO Extract the datanode to here
+@dataclass
+class MethodNode:
+ line_start: int
+ line_end: int
+ source_code: str
+ name: str
+ ast: Any
+
+ def __str__(self):
+ return f"MethodNode({self.name}, lines {self.line_start} to {self.line_end})"
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py
new file mode 100644
index 000000000..8058e47c2
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py
@@ -0,0 +1,12 @@
+from itertools import islice, zip_longest
+
+# https://docs.python.org/3/library/itertools.html#itertools-recipes
+def batched(iterable, n):
+ """Batch data into lists of length n. The last batch may be shorter."""
+ # batched('ABCDEFG', 3) --> ABC DEF G
+ it = iter(iterable)
+ while True:
+ batch = list(islice(it, n))
+ if not batch:
+ return
+ yield batch
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py
new file mode 100644
index 000000000..ca434c4d6
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py
@@ -0,0 +1,133 @@
+from dataclasses import dataclass
+from typing import Dict, Tuple, Union, cast
+from module_programming_winnowing.feedback_suggestions.winnowing import calculate_similarity
+
+from module_programming_winnowing.convert_code_to_ast.languages.python.PythonAstVisitor import analyze as analyze_python
+from module_programming_winnowing.convert_code_to_ast.languages.java.JavaAstVisitor import analyze as analyze_java
+
+
+def remove_whitespace(s: str) -> str:
+ return "".join(s.split())
+
+
+def cache_key(code1: str, code2: str) -> Tuple[str, str]:
+ return remove_whitespace(code1), remove_whitespace(code2)
+
+
+@dataclass
+class UncomputedComparison:
+ code1: str
+ counts1: list[int]
+ levels1: list[list]
+ code2: str
+ counts2: list[int]
+ levels2: list[list]
+
+
+@dataclass
+class SimilarityScore:
+ similarity_score: float
+
+ def __repr__(self):
+ return f"SimilarityScore(similarity_score={self.similarity_score})"
+
+ def __str__(self):
+ return f"similarity_score={self.similarity_score}"
+
+
+def create_ast_level_and_counts(code: str, programming_language: str):
+ if programming_language == "java":
+ # return analyze_java(code)
+ return
+ if programming_language == "python":
+ return analyze_python(code)
+ raise ValueError(f"Unsupported programming language: {programming_language}")
+
+
+class CodeSimilarityComputer:
+ """
+ Takes multiple pairs of code snippets and their corresponding tree representations,
+ and computes their similarity scores using AP-TED. It also caches the similarity
+ scores for faster computation and auto-assigns a similarity of 0.0 distance to
+ identical code snippets (ignoring whitespace).
+ """
+
+ def __init__(self) -> None:
+ # keys are with all whitespace removed
+ self.cache: Dict[Tuple[str, str], Union[SimilarityScore, UncomputedComparison]] = {}
+
+ def add_comparison(self, code1: str, code2: str, programming_language: str):
+ """Add a comparison to later compute."""
+ key = cache_key(code1, code2)
+ if key in self.cache:
+ return
+ if remove_whitespace(code1) == remove_whitespace(code2):
+ # identical code snippets in almost all cases
+ self.cache[key] = SimilarityScore(100.0) # perfect match (Similarity Score = 100)
+ else:
+ counts1, level1 = create_ast_level_and_counts(code1, programming_language)
+ counts2, level2 = create_ast_level_and_counts(code2, programming_language)
+ self.cache[key] = UncomputedComparison(code1, counts1, level1, code2, counts2, level2)
+
+ def compute_similarity_scores(self):
+ """Compute the similarity scores for all comparisons."""
+ wanted_comparisons = []
+
+ for value in self.cache.values():
+ if isinstance(value, UncomputedComparison):
+ wanted_comparisons.append((value.code1, value.counts1, value.levels1, value.code2, value.counts2,
+ value.levels2))
+ if not wanted_comparisons:
+ return
+
+ for code1, counts1, levels1, code2, counts2, levels2 in wanted_comparisons:
+ similarity_score = calculate_similarity(counts1, levels1, counts2, levels2)
+ self.cache[cache_key(code1, code2)] = SimilarityScore(similarity_score)
+
+ def get_similarity_score(self, code1: str, code2: str) -> SimilarityScore:
+ """Get the similarity score for a comparison."""
+ key = cache_key(code1, code2)
+ if key not in self.cache:
+ raise ValueError("Similarity score not yet computed. Call compute_similarity_scores() first.")
+ if isinstance(self.cache[key], UncomputedComparison):
+ raise ValueError("Similarity score not yet computed. Call compute_similarity_scores() first.")
+ return cast(SimilarityScore, self.cache[key])
+
+
+# TODO: These are test functions; to be deleted when productive later
+def test_code_similarity_computer():
+ # Beispiel-Code-Snippets
+ code1 = """
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, wooorld!");
+ int feld = 4;
+ int test = 5;
+
+ }"""
+ code2 = """
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, wooorld!");
+ int test = 5;
+
+ }"""
+
+ # Initialisiere den CodeSimilarityComputer
+ sim_computer = CodeSimilarityComputer()
+
+ # Füge die Code-Vergleiche hinzu
+ sim_computer.add_comparison(code1, code2, "java")
+
+ # Berechne die Ähnlichkeitspunkte
+ sim_computer.compute_similarity_scores()
+
+ # Hole die Ähnlichkeitspunkte
+ similarity = sim_computer.get_similarity_score(code1, code2)
+
+ # Ausgabe der Ähnlichkeit
+ print(f"Similarity score between code1 and code2: {similarity.similarity_score}")
+
+
+if __name__ == "__main__":
+ test_code_similarity_computer()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py
new file mode 100644
index 000000000..94e7048eb
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py
@@ -0,0 +1,198 @@
+from typing import Dict, Iterable, List, Optional
+import gc
+
+from pydantic import BaseModel, Field
+
+from athena.helpers.programming.feedback import format_feedback_title
+from athena.logger import logger
+from athena.programming import Feedback, Submission
+from module_programming_winnowing.convert_code_to_ast.extract_method_and_ast import parse
+from module_programming_winnowing.convert_code_to_ast.method_node import MethodNode
+from module_programming_winnowing.feedback_suggestions.batch import batched
+from module_programming_winnowing.feedback_suggestions.code_similarity_computer import CodeSimilarityComputer
+
+SIMILARITY_THRESHOLD = 95 # TODO Needs to be adapted
+
+
+def make_feedback_suggestion_from(feedback: Feedback, submission: Submission,
+ submission_method: MethodNode) -> Feedback:
+ suggestion = feedback.copy(deep=True)
+ # add meta information for debugging
+ suggestion.meta["original_feedback_id"] = feedback.id
+ suggestion.meta["original_method_code"] = suggestion.meta["method_code"]
+ suggestion.meta["method_code"] = submission_method.source_code
+ # adjust for submission
+ suggestion.submission_id = submission.id
+ suggestion.line_start = submission_method.line_start
+ suggestion.line_end = submission_method.line_end
+ # regenerate title from filename and line numbers
+ suggestion.title = format_feedback_title(suggestion.file_path, suggestion.line_start, suggestion.line_end)
+ # remove ID
+ suggestion.id = None
+ return suggestion
+
+class CodeComparisonWithCorrespondingSuggestions:
+ """A pair of code snippets with a corresponding suggestions if their similarity is high enough."""
+
+ def __init__(self, code1: str, code2: str, suggestion: Feedback) -> None:
+ self.code1 = code1
+ self.code2 = code2
+ self.suggestion = suggestion
+
+ def has_same_code(self, other) -> bool:
+ return self.code1 == other.code1 and self.code2 == other.code2
+
+
+def group_feedbacks_by_file_path(feedbacks: List[Feedback]) -> Dict[str, List[Feedback]]:
+ """Groups feedbacks by file path for faster access."""
+ feedbacks_by_file_path: Dict[str, List[Feedback]] = {}
+ for feedback in feedbacks:
+ if feedback.file_path not in feedbacks_by_file_path:
+ feedbacks_by_file_path[str(feedback.file_path)] = []
+ feedbacks_by_file_path[str(feedback.file_path)].append(feedback)
+ return feedbacks_by_file_path
+
+
+def create_comparisons_with_suggestions(
+ submissions: List[Submission],
+ feedbacks: List[Feedback],
+ programming_language: str,
+) -> Iterable[CodeComparisonWithCorrespondingSuggestions]:
+ """Creates code comparisons and corresponding feedback suggestions as a generator."""
+ if len(feedbacks) == 0:
+ return
+ # group feedbacks by file path for faster access
+ logger.debug("Grouping %d feedbacks by file path", len(feedbacks))
+ feedbacks_by_file_path = group_feedbacks_by_file_path(feedbacks)
+ for submission in submissions:
+ for file_path, file_feedbacks in feedbacks_by_file_path.items():
+ # read file from submission
+ try:
+ code = submission.get_code(file_path)
+ except KeyError: # KeyError is for when the file is not in the zip
+ logger.debug("File %s not found in submission %d.", file_path, submission.id)
+ continue
+ except UnicodeDecodeError:
+ logger.warning("File %s in submission %d is not UTF-8 encoded.", file_path, submission.id)
+ continue
+ # get all methods in the file of the submission
+ submission_methods = parse(code, programming_language)
+ # get all feedbacks that match methods in the submission
+ for s_method in submission_methods:
+ for feedback in file_feedbacks:
+ if feedback.submission_id == submission.id:
+ # don't compare feedback with itself
+ continue
+ if feedback.meta["method_name"] == s_method.name:
+ # compare code (later) and add feedback as a possible suggestion (also later)
+ suggestion = make_feedback_suggestion_from(feedback, submission, s_method)
+ yield CodeComparisonWithCorrespondingSuggestions(s_method.source_code,
+ feedback.meta["method_code"], suggestion)
+
+
+def create_feedback_suggestions(
+ submissions: List[Submission],
+ feedbacks: List[Feedback],
+ programming_language: str,
+) -> List[Feedback]:
+ """
+ Get a list of all submissions that the given feedback could also apply to (similar code in same method).
+ Then generate feedback suggestions for those submissions.
+ """
+ if len(feedbacks) == 0:
+ return [] # nothing to do
+
+ suggestions: List[Feedback] = []
+
+ # create code comparisons and corresponding feedback suggestions in batches for less memory usage
+ for idx, comparisons_with_suggestions in enumerate(
+ batched(create_comparisons_with_suggestions(submissions, feedbacks, programming_language), 128)):
+ # compute similarity scores for all comparisons at once
+ sim_computer = CodeSimilarityComputer()
+ for s_comp in comparisons_with_suggestions:
+ sim_computer.add_comparison(s_comp.code1, s_comp.code2, programming_language)
+ logger.debug("Computing similarity scores for %d code comparisons (batch #%d)",
+ len(comparisons_with_suggestions), idx)
+ sim_computer.compute_similarity_scores() # compute all at once, enables vectorization
+
+ # create suggestions
+ for s_comp in comparisons_with_suggestions:
+ similarity = sim_computer.get_similarity_score(s_comp.code1, s_comp.code2)
+ if similarity.similarity_score <= SIMILARITY_THRESHOLD:
+ # found similar code -> create feedback suggestion
+ logger.info("Found similar code wih similarity of %d", similarity.similarity_score)
+ # add meta information for debugging
+ s_comp.suggestion.meta["similarity_score"] = similarity.similarity_score
+ # add to suggestions
+ suggestions.append(s_comp.suggestion)
+ # clear memory to prevent being killed by OOM killer
+ del sim_computer
+ del comparisons_with_suggestions
+ gc.collect()
+
+ return suggestions
+
+
+# TODO From here on these are just testing functions below:
+def extract_methods_from_code(code, programming_language):
+ # Parsing und AST-Erstellung
+ methods = parse(code, programming_language)
+
+ # Ausgabe der extrahierten Methoden
+ print("Extrahierte Methoden:")
+ for method in methods:
+ print(f"Method Name: {method.name}")
+ print(f"Method Source Code:\n{method.source_code}\n")
+ print(f"Method Start Line: {method.line_start}, End Line: {method.line_end}\n")
+
+ return methods
+
+
+def compare_methods(methods1, methods2, programming_language):
+ # Initialisiere den CodeSimilarityComputer
+ sim_computer = CodeSimilarityComputer()
+
+ # Füge die Code-Vergleiche hinzu
+ for method1 in methods1:
+ for method2 in methods2:
+ sim_computer.add_comparison(method1.source_code, method2.source_code, programming_language)
+
+ # Berechne die Ähnlichkeitspunkte
+ sim_computer.compute_similarity_scores()
+
+ # Ausgabe der Ähnlichkeitspunkte
+ for method1 in methods1:
+ for method2 in methods2:
+ similarity = sim_computer.get_similarity_score(method1.source_code, method2.source_code)
+ print(f"Similarity score between {method1.name} and {method2.name}: {similarity.similarity_score}")
+
+
+def test_ast_creation_and_code_similarity():
+ code1 = """
+ def sum_first_ten():
+ sum = 0
+ return sum
+ """
+
+ code2 = """
+ def sum_first_ten():
+ sum = 0
+ for i in range(11):
+ sum += i
+ return sum
+ """
+
+ programming_language = "python"
+
+ print("Extracting methods from code1...")
+ methods1 = extract_methods_from_code(code1, programming_language)
+
+ print("Extracting methods from code2...")
+ methods2 = extract_methods_from_code(code2, programming_language)
+
+ print("Comparing methods from code1 and code2...")
+ compare_methods(methods1, methods2, programming_language)
+
+
+if __name__ == "__main__":
+ test_ast_creation_and_code_similarity()
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py
new file mode 100644
index 000000000..03c88e7b2
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py
@@ -0,0 +1,40 @@
+"""
+Feedback suggestions can overlap each other, which is not ideal.
+This module removes overlapping suggestions.
+"""
+
+from typing import List
+
+from athena.programming import Feedback
+
+
+def is_overlapping(feedback1: Feedback, feedback2: Feedback) -> bool:
+ """Returns whether the two given feedbacks overlap."""
+ if feedback1.file_path != feedback2.file_path:
+ # feedback in different files
+ return False
+ if feedback1.line_start is None or feedback2.line_start is None or feedback1.line_end is None or feedback2.line_end is None:
+ # unreferenced feedback (both start and end are None because of Schema validation for line_end)
+ return False
+ if feedback1.line_start > feedback2.line_end:
+ return False
+ if feedback2.line_start > feedback1.line_end:
+ return False
+ return True
+
+
+def filter_overlapping_suggestions(suggestions: List[Feedback]) -> List[Feedback]:
+ """Filters out overlapping suggestions we don't want to suggest to tutors.
+
+ Arguments:
+ suggestions {list} -- List of suggestions to filter
+ """
+ # sort suggestions by similarity_score to keep the most accurate ones
+ suggestions.sort(key=lambda s: s.meta.get("similarity_score", 0), reverse=True)
+ # skip suggestions if they overlap with a suggestion that was already added
+ added_suggestions: List[Feedback] = []
+ for suggestion in suggestions:
+ if any(is_overlapping(suggestion, added_suggestion) for added_suggestion in added_suggestions):
+ continue
+ added_suggestions.append(suggestion)
+ return added_suggestions
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py
new file mode 100644
index 000000000..32827ed63
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py
@@ -0,0 +1,47 @@
+"""
+When evaluating Winnowing, we found the following problems with the suggestions:
+(1) Sometimes, there was a feedback on something banal like a getter, which was actually meant for another method.
+ This caused suggestions for almost all the other submissions, which were not helpful.
+ We therefore classify a suggestion as "suspicious" if it affects too many other submissions (> 10% and > 2).
+(2) However, this would also sometimes classify a suggestion as suspicious if it is actually helpful.
+ Therefore, we make a suggestion non-supicious if there are at least 3 other suggestions for the same method.
+ This makes a mistake like described above unlikely.
+(3) Suggestions are also non-suspicious if they include words that hint at other parts of the code, like
+ "again", "consequential error", "previous", "later", "earlier", "above", "below" and German equivalents of these words.
+"""
+
+from typing import Dict, List, cast
+
+from athena.programming import Feedback
+
+
+def filter_suspicious(suggestions: List[Feedback], n_submissions: int) -> List[Feedback]:
+ """
+ Filters out suspicious suggestions we don't want to suggest to tutors.
+ suggestions: List of suggestions to filter
+ n_submissions: Number of submissions for the exercise
+ """
+ suspicious: Dict[int, bool] = {} # feedback id: is suspicious
+ # (1) classify suggestions as suspicious if they affect too many other submissions
+ for suggestion in suggestions:
+ n_feedback_suggestions = suggestion.meta.get("n_feedback_suggestions", 999999)
+ if n_feedback_suggestions > 2 and n_feedback_suggestions > 0.1 * n_submissions:
+ suspicious[cast(int, suggestion.id)] = True
+ # find all other suggestions for the same method
+ other_suggestions: List[Feedback] = []
+ for other_suggestion in suggestions:
+ if other_suggestion.id == suggestion.id:
+ continue
+ if other_suggestion.file_path == suggestion.file_path and other_suggestion.meta.get("method_name") == suggestion.meta.get("method_name"):
+ other_suggestions.append(other_suggestion)
+ # (2) make suggestion non-suspicious if there are at least 3 other suggestions for the same method
+ if len(other_suggestions) >= 3:
+ suspicious[cast(int, suggestion.id)] = False
+ # (3) classify suggestions as suspicious if they include words that hint at other parts of the code
+ suspicious_words = ["again", "consequential error", "previous", "later", "earlier", "above", "below"]
+ for suggestion in suggestions:
+ for word in suspicious_words:
+ if word in str(suggestion.description):
+ suspicious[cast(int, suggestion.id)] = True
+ # filter out suspicious suggestions
+ return list(filter(lambda s: not suspicious.get(cast(int, s.id), False), suggestions))
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py
new file mode 100644
index 000000000..511a9c5e2
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py
@@ -0,0 +1,170 @@
+# This implementation has been adapted from the algorithm provided in the repository:
+# https://github.com/prateksha/Source-Code-Similarity-Measurement/blob/master/generate_ast.py
+# The original code has been modified to fit the specific requirements of this project,
+# including changes in the caching mechanism and additional functionality to handle
+# both Java and Python code (and potentially further programming languages) similarity measurements.
+
+
+import nltk
+import math
+from nltk.util import ngrams
+from collections import Counter
+from statistics import mean
+
+def cosine_similarity(l1, l2):
+ vec1 = Counter(l1)
+ vec2 = Counter(l2)
+
+ intersection = set(vec1.keys()) & set(vec2.keys())
+
+ numerator = sum([vec1[x] * vec2[x] for x in intersection])
+
+ sum1 = sum([vec1[x] ** 2 for x in vec1.keys()])
+ sum2 = sum([vec2[x] ** 2 for x in vec2.keys()])
+ denominator = math.sqrt(sum1) * math.sqrt(sum2)
+
+ if not denominator:
+ return 0.0
+
+ return float(numerator) / denominator
+
+
+# Could be changed to include rightmost minimum too
+def get_min(get_key=lambda x: x):
+ def rightmost_minimum(l):
+ minimum = float('inf')
+ minimum_index = -1
+ pos = 0
+
+ while pos < len(l):
+ if get_key(l[pos]) < minimum:
+ minimum = get_key(l[pos])
+ minimum_index = pos
+ pos += 1
+
+ return l[minimum_index]
+
+ return rightmost_minimum
+
+
+# Have used the inbuilt hash function (Should try a self defined rolling hash function)
+def winnowing(kgrams, k, t):
+ modified_min_func = get_min(lambda key_value: key_value[0])
+
+ document_fingerprints = []
+
+ # print(kgrams)
+ hash_table = [(hash(kgrams[i]), i) for i in range(len(kgrams))]
+ # print(len(hash_table))
+
+ window_length = t - k + 1
+ window_begin = 0
+ window_end = window_length
+
+ minimum_hash = None
+
+ while (window_end < len(hash_table)):
+ window = hash_table[window_begin:window_end]
+ window_minimum = modified_min_func(window)
+
+ if (minimum_hash != window_minimum):
+ # print(window_minimum)
+ document_fingerprints.append(window_minimum[0]) # not taking positions into consideration
+ minimum_hash = window_minimum
+
+ window_begin = window_begin + 1
+ window_end = window_end + 1
+
+ return document_fingerprints
+
+
+def generate_kgrams(data, k):
+ for text in data:
+ token = nltk.word_tokenize(text)
+ kgrams = ngrams(token, k)
+ lst_kgrams = list(kgrams)
+ # print("Kgrams : ", lst_kgrams)
+ return lst_kgrams
+
+
+# only conversion to lowercase for now
+def preprocess(document):
+ preprocessed_document = []
+ for item in document:
+ item = item.lower()
+ preprocessed_document.append(item)
+ return preprocessed_document
+
+
+def generate_fingerprints(data, k, t):
+ preprocessed_data = preprocess(data)
+ kgrams = generate_kgrams(preprocessed_data, k)
+ # print(len(kgrams))
+ document_fingerprints = winnowing(kgrams, k, t)
+ return document_fingerprints
+
+
+def calculate_similarity(counts1, levels1, counts2, levels2):
+ lev0s = []
+ lev1s = []
+ lev2s = []
+
+ for i in range(10):
+ fingerprints1_0 = generate_fingerprints(levels1[0], 13, 17)
+ fingerprints2_0 = generate_fingerprints(levels2[0], 13, 17)
+ cosine_similarity_lev0 = cosine_similarity(fingerprints1_0, fingerprints2_0)
+ lev0s.append(cosine_similarity_lev0)
+
+ fingerprints1_1 = generate_fingerprints(levels1[1], 13, 17)
+ fingerprints2_1 = generate_fingerprints(levels2[1], 13, 17)
+ cosine_similarity_lev1 = cosine_similarity(fingerprints1_1, fingerprints2_1)
+ lev1s.append(cosine_similarity_lev1)
+
+ fingerprints1_2 = generate_fingerprints(levels1[2], 13, 17)
+ fingerprints2_2 = generate_fingerprints(levels2[2], 13, 17)
+ cosine_similarity_lev2 = cosine_similarity(fingerprints1_2, fingerprints2_2)
+ lev2s.append(cosine_similarity_lev2)
+
+ final_cosine_similarity_lev0 = round(mean(lev0s), 2)
+ final_cosine_similarity_lev1 = round(mean(lev1s), 2)
+ final_cosine_similarity_lev2 = round(mean(lev2s), 2)
+
+ normalization_score = 0
+ t = 0
+ for c in range(3):
+ x = counts1[c]
+ y = counts2[c]
+ if (x + y) != 0:
+ t = t + 1
+ if x > y:
+ s = 1 - ((x - y) / (x + y))
+ else:
+ s = 1 - ((y - x) / (x + y))
+ normalization_score += (10 * s)
+
+ if t != 0:
+ normalization_score = normalization_score / (t * 10)
+ total_similarity_score_win = ((0.5 * final_cosine_similarity_lev0) + (0.3 * final_cosine_similarity_lev1) + (
+ 0.2 * final_cosine_similarity_lev2))
+ normalization_score = normalization_score
+ final_score = (total_similarity_score_win * 60) + (normalization_score * 40)
+ print("Similarity score = : \n", final_score)
+ else:
+ total_similarity_score_win = ((0.5 * final_cosine_similarity_lev0) + (0.3 * final_cosine_similarity_lev1) + (
+ 0.2 * final_cosine_similarity_lev2))
+ final_score = (total_similarity_score_win * 100)
+
+ return final_score
+
+
+if __name__ == "__main__":
+ from module_programming_winnowing.convert_code_to_ast.languages.python.PythonAstVisitor import analyze
+
+ file_path1 = "1.py" #TODO test with string
+ file_path2 = "test6b.py" #TODO Test with String
+
+ counts1, levels1 = analyze(file_path1)
+ counts2, levels2 = analyze(file_path2)
+
+ similarity_score = calculate_similarity(counts1, levels1, counts2, levels2)
+ print("Similarity score:", similarity_score)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py
new file mode 100644
index 000000000..13e84ece9
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py
@@ -0,0 +1,4 @@
+a = 5
+for i in range(a):
+ for j in range(i):
+ print("Hi")
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl
new file mode 100644
index 000000000..a183a1c0a
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl
@@ -0,0 +1,15 @@
+def foo(x, y) do
+ if x + y > 10 then
+ z = x + y
+ endif
+endef
+
+for i in 0 do
+ while i < 5 do
+ i = i + 1
+ endwhile
+endfor
+
+x = 5
+y = 10
+result = x * y
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py
new file mode 100644
index 000000000..53cc9f233
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py
@@ -0,0 +1,3 @@
+for i in range(5):
+ for j in range(5):
+ print(i*j)
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java
new file mode 100644
index 000000000..f62c926bc
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java
@@ -0,0 +1,11 @@
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, wooorld!");
+ int test = 5;
+ for(int i = 0; i < 5; i++) {
+ //Das ist ein Kommentar
+ String foooler = "Test";
+ System.out.println(i);
+ }
+ }
+ }
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py
new file mode 100644
index 000000000..cebbe482f
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py
@@ -0,0 +1,7 @@
+import math
+
+p1=input()
+p2=input()
+p1 = int(p1)
+p2 = int(p2)
+print (math.sqrt((p1*p1)+(p2*p2)))
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py
new file mode 100644
index 000000000..ca3516805
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py
@@ -0,0 +1,10 @@
+import math
+
+x = input()
+y = input()
+x = int(x)
+y = int(y)
+# Square and add terms
+res = math.sqrt(pow(x, 2)+pow(y, 2))
+
+print (res)
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java
new file mode 100644
index 000000000..2b6873bc4
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java
@@ -0,0 +1,11 @@
+ public class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, world!");
+ int test = 5;
+ for(int i = 0; i < 10; i++) {
+ //Das ist ein Kommentar
+ String foooler = "Test";
+ System.out.println(i);
+ }
+ }
+ }
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py
new file mode 100644
index 000000000..7eec08e3a
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py
@@ -0,0 +1,12 @@
+a=input()
+a=int(a)
+
+
+if(5<=a<18):
+ print ("child")
+elif(a>=18):
+ print ("adult")
+elif(a<5):
+ print ("infant")
+
+
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py
new file mode 100644
index 000000000..df18531b7
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py
@@ -0,0 +1,9 @@
+x=input()
+x=int(x)
+
+if(x<5):
+ print ("infant")
+elif(5<=x<18):
+ print ("child")
+elif(x>=18):
+ print ("adult")
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py
new file mode 100644
index 000000000..fa828bf74
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py
@@ -0,0 +1,5 @@
+a=input()
+a=int(a)
+
+for i in range(a):
+ print ("Hello world!")
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py
new file mode 100644
index 000000000..7767e2386
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py
@@ -0,0 +1,6 @@
+a=input()
+a=int(a)
+count=0
+while(count= 1900 and year <= 100000:
+ if year % 4 == 0:
+ leap = True
+ if year % 100 == 0:
+ leap = False
+ if year % 400 == 0:
+ leap = True
+ return leap
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py
new file mode 100644
index 000000000..96e3a41bf
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py
@@ -0,0 +1,10 @@
+a = input()
+a = int(a)
+
+
+if(5 <= a < 18):
+ print("child")
+elif(a >= 18):
+ print("adult")
+elif(a < 5):
+ print("infant")
diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py
new file mode 100644
index 000000000..3c8a12f3f
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py
@@ -0,0 +1,12 @@
+a = input()
+a = int(a)
+
+
+if(5 <= a < 18):
+ print("child")
+elif(a >= 18):
+ print("adult")
+elif(a < 5):
+ print("infant")
+
+print("Finish")
\ No newline at end of file
diff --git a/modules/programming/module_programming_winnowing/poetry.lock b/modules/programming/module_programming_winnowing/poetry.lock
new file mode 100644
index 000000000..5cbf8aeb1
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/poetry.lock
@@ -0,0 +1,1197 @@
+# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+
+[[package]]
+name = "antlr4-python3-runtime"
+version = "4.13.2"
+description = "ANTLR 4.13.2 runtime for Python 3"
+optional = false
+python-versions = "*"
+files = [
+ {file = "antlr4_python3_runtime-4.13.2-py3-none-any.whl", hash = "sha256:fe3835eb8d33daece0e799090eda89719dbccee7aa39ef94eed3818cafa5a7e8"},
+ {file = "antlr4_python3_runtime-4.13.2.tar.gz", hash = "sha256:909b647e1d2fc2b70180ac586df3933e38919c85f98ccc656a96cd3f25ef3916"},
+]
+
+[[package]]
+name = "anyio"
+version = "4.6.2.post1"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"},
+ {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"},
+]
+
+[package.dependencies]
+idna = ">=2.8"
+sniffio = ">=1.1"
+
+[package.extras]
+doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
+trio = ["trio (>=0.26.1)"]
+
+[[package]]
+name = "astroid"
+version = "3.3.5"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.9.0"
+files = [
+ {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"},
+ {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"},
+]
+
+[[package]]
+name = "athena"
+version = "1.0.0"
+description = "This is a helper module for easier development of Athena modules. It provides communication functionality with the Assessment Module manager, as well as helper functions for storage."
+optional = false
+python-versions = "3.11.*"
+files = []
+develop = false
+
+[package.dependencies]
+fastapi = "^0.109.1"
+gitpython = "^3.1.41"
+httpx = "^0.24.1"
+psycopg2 = "^2.9.9"
+sqlalchemy = {version = "^2.0.21", extras = ["mypy"]}
+uvicorn = "^0.23.0"
+
+[package.source]
+type = "git"
+url = "https://github.com/ls1intum/Athena.git"
+reference = "bbb2bb0"
+resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2"
+subdirectory = "athena"
+
+[[package]]
+name = "certifi"
+version = "2024.8.30"
+description = "Python package for providing Mozilla's CA Bundle."
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"},
+ {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "dill"
+version = "0.3.9"
+description = "serialize all of Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
+ {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
+]
+
+[package.extras]
+graph = ["objgraph (>=1.7.2)"]
+profile = ["gprof2dot (>=2022.7.29)"]
+
+[[package]]
+name = "dodgy"
+version = "0.2.1"
+description = "Dodgy: Searches for dodgy looking lines in Python code"
+optional = false
+python-versions = "*"
+files = [
+ {file = "dodgy-0.2.1-py3-none-any.whl", hash = "sha256:51f54c0fd886fa3854387f354b19f429d38c04f984f38bc572558b703c0542a6"},
+ {file = "dodgy-0.2.1.tar.gz", hash = "sha256:28323cbfc9352139fdd3d316fa17f325cc0e9ac74438cbba51d70f9b48f86c3a"},
+]
+
+[[package]]
+name = "fastapi"
+version = "0.109.2"
+description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"},
+ {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"},
+]
+
+[package.dependencies]
+pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0"
+starlette = ">=0.36.3,<0.37.0"
+typing-extensions = ">=4.8.0"
+
+[package.extras]
+all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
+
+[[package]]
+name = "flake8"
+version = "7.1.1"
+description = "the modular source code checker: pep8 pyflakes and co"
+optional = false
+python-versions = ">=3.8.1"
+files = [
+ {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"},
+ {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"},
+]
+
+[package.dependencies]
+mccabe = ">=0.7.0,<0.8.0"
+pycodestyle = ">=2.12.0,<2.13.0"
+pyflakes = ">=3.2.0,<3.3.0"
+
+[[package]]
+name = "flake8-polyfill"
+version = "1.0.2"
+description = "Polyfill package for Flake8 plugins"
+optional = false
+python-versions = "*"
+files = [
+ {file = "flake8-polyfill-1.0.2.tar.gz", hash = "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"},
+ {file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"},
+]
+
+[package.dependencies]
+flake8 = "*"
+
+[[package]]
+name = "gitdb"
+version = "4.0.11"
+description = "Git Object Database"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"},
+ {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"},
+]
+
+[package.dependencies]
+smmap = ">=3.0.1,<6"
+
+[[package]]
+name = "gitpython"
+version = "3.1.43"
+description = "GitPython is a Python library used to interact with Git repositories"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"},
+ {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"},
+]
+
+[package.dependencies]
+gitdb = ">=4.0.1,<5"
+
+[package.extras]
+doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"]
+test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"]
+
+[[package]]
+name = "greenlet"
+version = "3.1.1"
+description = "Lightweight in-process concurrent programming"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"},
+ {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"},
+ {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"},
+ {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"},
+ {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"},
+ {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"},
+ {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"},
+ {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"},
+ {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"},
+ {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"},
+ {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"},
+ {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"},
+ {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"},
+ {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"},
+ {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"},
+]
+
+[package.extras]
+docs = ["Sphinx", "furo"]
+test = ["objgraph", "psutil"]
+
+[[package]]
+name = "h11"
+version = "0.14.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"},
+ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"},
+]
+
+[[package]]
+name = "httpcore"
+version = "0.17.3"
+description = "A minimal low-level HTTP client."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"},
+ {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"},
+]
+
+[package.dependencies]
+anyio = ">=3.0,<5.0"
+certifi = "*"
+h11 = ">=0.13,<0.15"
+sniffio = "==1.*"
+
+[package.extras]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "httpx"
+version = "0.24.1"
+description = "The next generation HTTP client."
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"},
+ {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"},
+]
+
+[package.dependencies]
+certifi = "*"
+httpcore = ">=0.15.0,<0.18.0"
+idna = "*"
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotli", "brotlicffi"]
+cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (==1.*)"]
+
+[[package]]
+name = "idna"
+version = "3.10"
+description = "Internationalized Domain Names in Applications (IDNA)"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
+]
+
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
+[[package]]
+name = "isort"
+version = "5.13.2"
+description = "A Python utility / library to sort Python imports."
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
+ {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
+]
+
+[package.extras]
+colors = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "joblib"
+version = "1.4.2"
+description = "Lightweight pipelining with Python functions"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"},
+ {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"},
+]
+
+[[package]]
+name = "mccabe"
+version = "0.7.0"
+description = "McCabe checker, plugin for flake8"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
+]
+
+[[package]]
+name = "mypy"
+version = "1.13.0"
+description = "Optional static typing for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
+ {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"},
+ {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"},
+ {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"},
+ {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"},
+ {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"},
+ {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"},
+ {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"},
+ {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"},
+ {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"},
+ {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"},
+ {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"},
+ {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"},
+ {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"},
+ {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"},
+ {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"},
+ {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"},
+ {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"},
+ {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"},
+ {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"},
+ {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"},
+]
+
+[package.dependencies]
+mypy-extensions = ">=1.0.0"
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+dmypy = ["psutil (>=4.0)"]
+faster-cache = ["orjson"]
+install-types = ["pip"]
+mypyc = ["setuptools (>=50)"]
+reports = ["lxml"]
+
+[[package]]
+name = "mypy-extensions"
+version = "1.0.0"
+description = "Type system extensions for programs checked with the mypy type checker."
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
+ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
+]
+
+[[package]]
+name = "nltk"
+version = "3.9.1"
+description = "Natural Language Toolkit"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1"},
+ {file = "nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868"},
+]
+
+[package.dependencies]
+click = "*"
+joblib = "*"
+regex = ">=2021.8.3"
+tqdm = "*"
+
+[package.extras]
+all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
+corenlp = ["requests"]
+machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
+plot = ["matplotlib"]
+tgrep = ["pyparsing"]
+twitter = ["twython"]
+
+[[package]]
+name = "packaging"
+version = "24.2"
+description = "Core utilities for Python packages"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
+]
+
+[[package]]
+name = "pep8-naming"
+version = "0.10.0"
+description = "Check PEP-8 naming conventions, plugin for flake8"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pep8-naming-0.10.0.tar.gz", hash = "sha256:f3b4a5f9dd72b991bf7d8e2a341d2e1aa3a884a769b5aaac4f56825c1763bf3a"},
+ {file = "pep8_naming-0.10.0-py2.py3-none-any.whl", hash = "sha256:5d9f1056cb9427ce344e98d1a7f5665710e2f20f748438e308995852cfa24164"},
+]
+
+[package.dependencies]
+flake8-polyfill = ">=1.0.2,<2"
+
+[[package]]
+name = "platformdirs"
+version = "4.3.6"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
+ {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
+]
+
+[package.extras]
+docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"]
+type = ["mypy (>=1.11.2)"]
+
+[[package]]
+name = "prospector"
+version = "1.13.3"
+description = "Prospector is a tool to analyse Python code by aggregating the result of other tools."
+optional = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"},
+ {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"},
+]
+
+[package.dependencies]
+dodgy = ">=0.2.1,<0.3.0"
+GitPython = ">=3.1.27,<4.0.0"
+mccabe = ">=0.7.0,<0.8.0"
+packaging = "*"
+pep8-naming = ">=0.3.3,<=0.10.0"
+pycodestyle = ">=2.9.0"
+pydocstyle = ">=2.0.0"
+pyflakes = ">=2.2.0"
+pylint = ">=3.0"
+pylint-celery = "0.3"
+pylint-django = ">=2.6.1"
+pylint-flask = "0.6"
+PyYAML = "*"
+requirements-detector = ">=1.3.2"
+setoptconf-tmp = ">=0.3.1,<0.4.0"
+toml = ">=0.10.2,<0.11.0"
+
+[package.extras]
+with-bandit = ["bandit (>=1.5.1)"]
+with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"]
+with-mypy = ["mypy (>=0.600)"]
+with-pyright = ["pyright (>=1.1.3)"]
+with-pyroma = ["pyroma (>=2.4)"]
+with-ruff = ["ruff"]
+with-vulture = ["vulture (>=1.5)"]
+
+[[package]]
+name = "psycopg2"
+version = "2.9.10"
+description = "psycopg2 - Python-PostgreSQL Database Adapter"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"},
+ {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"},
+]
+
+[[package]]
+name = "pycodestyle"
+version = "2.12.1"
+description = "Python style guide checker"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"},
+ {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"},
+]
+
+[[package]]
+name = "pydantic"
+version = "1.10.17"
+description = "Data validation and settings management using python type hints"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pydantic-1.10.17-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fa51175313cc30097660b10eec8ca55ed08bfa07acbfe02f7a42f6c242e9a4b"},
+ {file = "pydantic-1.10.17-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7e8988bb16988890c985bd2093df9dd731bfb9d5e0860db054c23034fab8f7a"},
+ {file = "pydantic-1.10.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:371dcf1831f87c9e217e2b6a0c66842879a14873114ebb9d0861ab22e3b5bb1e"},
+ {file = "pydantic-1.10.17-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4866a1579c0c3ca2c40575398a24d805d4db6cb353ee74df75ddeee3c657f9a7"},
+ {file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:543da3c6914795b37785703ffc74ba4d660418620cc273490d42c53949eeeca6"},
+ {file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7623b59876f49e61c2e283551cc3647616d2fbdc0b4d36d3d638aae8547ea681"},
+ {file = "pydantic-1.10.17-cp310-cp310-win_amd64.whl", hash = "sha256:409b2b36d7d7d19cd8310b97a4ce6b1755ef8bd45b9a2ec5ec2b124db0a0d8f3"},
+ {file = "pydantic-1.10.17-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fa43f362b46741df8f201bf3e7dff3569fa92069bcc7b4a740dea3602e27ab7a"},
+ {file = "pydantic-1.10.17-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a72d2a5ff86a3075ed81ca031eac86923d44bc5d42e719d585a8eb547bf0c9b"},
+ {file = "pydantic-1.10.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ad32aed3bf5eea5ca5decc3d1bbc3d0ec5d4fbcd72a03cdad849458decbc63"},
+ {file = "pydantic-1.10.17-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb4e741782e236ee7dc1fb11ad94dc56aabaf02d21df0e79e0c21fe07c95741"},
+ {file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2f89a719411cb234105735a520b7c077158a81e0fe1cb05a79c01fc5eb59d3c"},
+ {file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db3b48d9283d80a314f7a682f7acae8422386de659fffaba454b77a083c3937d"},
+ {file = "pydantic-1.10.17-cp311-cp311-win_amd64.whl", hash = "sha256:9c803a5113cfab7bbb912f75faa4fc1e4acff43e452c82560349fff64f852e1b"},
+ {file = "pydantic-1.10.17-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:820ae12a390c9cbb26bb44913c87fa2ff431a029a785642c1ff11fed0a095fcb"},
+ {file = "pydantic-1.10.17-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c1e51d1af306641b7d1574d6d3307eaa10a4991542ca324f0feb134fee259815"},
+ {file = "pydantic-1.10.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e53fb834aae96e7b0dadd6e92c66e7dd9cdf08965340ed04c16813102a47fab"},
+ {file = "pydantic-1.10.17-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e2495309b1266e81d259a570dd199916ff34f7f51f1b549a0d37a6d9b17b4dc"},
+ {file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:098ad8de840c92ea586bf8efd9e2e90c6339d33ab5c1cfbb85be66e4ecf8213f"},
+ {file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:525bbef620dac93c430d5d6bdbc91bdb5521698d434adf4434a7ef6ffd5c4b7f"},
+ {file = "pydantic-1.10.17-cp312-cp312-win_amd64.whl", hash = "sha256:6654028d1144df451e1da69a670083c27117d493f16cf83da81e1e50edce72ad"},
+ {file = "pydantic-1.10.17-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c87cedb4680d1614f1d59d13fea353faf3afd41ba5c906a266f3f2e8c245d655"},
+ {file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11289fa895bcbc8f18704efa1d8020bb9a86314da435348f59745473eb042e6b"},
+ {file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94833612d6fd18b57c359a127cbfd932d9150c1b72fea7c86ab58c2a77edd7c7"},
+ {file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4ecb515fa7cb0e46e163ecd9d52f9147ba57bc3633dca0e586cdb7a232db9e3"},
+ {file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7017971ffa7fd7808146880aa41b266e06c1e6e12261768a28b8b41ba55c8076"},
+ {file = "pydantic-1.10.17-cp37-cp37m-win_amd64.whl", hash = "sha256:e840e6b2026920fc3f250ea8ebfdedf6ea7a25b77bf04c6576178e681942ae0f"},
+ {file = "pydantic-1.10.17-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bfbb18b616abc4df70591b8c1ff1b3eabd234ddcddb86b7cac82657ab9017e33"},
+ {file = "pydantic-1.10.17-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebb249096d873593e014535ab07145498957091aa6ae92759a32d40cb9998e2e"},
+ {file = "pydantic-1.10.17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c209af63ccd7b22fba94b9024e8b7fd07feffee0001efae50dd99316b27768"},
+ {file = "pydantic-1.10.17-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b40c9e13a0b61583e5599e7950490c700297b4a375b55b2b592774332798b7"},
+ {file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c31d281c7485223caf6474fc2b7cf21456289dbaa31401844069b77160cab9c7"},
+ {file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae5184e99a060a5c80010a2d53c99aee76a3b0ad683d493e5f0620b5d86eeb75"},
+ {file = "pydantic-1.10.17-cp38-cp38-win_amd64.whl", hash = "sha256:ad1e33dc6b9787a6f0f3fd132859aa75626528b49cc1f9e429cdacb2608ad5f0"},
+ {file = "pydantic-1.10.17-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e17c0ee7192e54a10943f245dc79e36d9fe282418ea05b886e1c666063a7b54"},
+ {file = "pydantic-1.10.17-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cafb9c938f61d1b182dfc7d44a7021326547b7b9cf695db5b68ec7b590214773"},
+ {file = "pydantic-1.10.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95ef534e3c22e5abbdbdd6f66b6ea9dac3ca3e34c5c632894f8625d13d084cbe"},
+ {file = "pydantic-1.10.17-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d96b8799ae3d782df7ec9615cb59fc32c32e1ed6afa1b231b0595f6516e8ab"},
+ {file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ab2f976336808fd5d539fdc26eb51f9aafc1f4b638e212ef6b6f05e753c8011d"},
+ {file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8ad363330557beac73159acfbeed220d5f1bfcd6b930302a987a375e02f74fd"},
+ {file = "pydantic-1.10.17-cp39-cp39-win_amd64.whl", hash = "sha256:48db882e48575ce4b39659558b2f9f37c25b8d348e37a2b4e32971dd5a7d6227"},
+ {file = "pydantic-1.10.17-py3-none-any.whl", hash = "sha256:e41b5b973e5c64f674b3b4720286ded184dcc26a691dd55f34391c62c6934688"},
+ {file = "pydantic-1.10.17.tar.gz", hash = "sha256:f434160fb14b353caf634149baaf847206406471ba70e64657c1e8330277a991"},
+]
+
+[package.dependencies]
+typing-extensions = ">=4.2.0"
+
+[package.extras]
+dotenv = ["python-dotenv (>=0.10.4)"]
+email = ["email-validator (>=1.0.3)"]
+
+[[package]]
+name = "pydocstyle"
+version = "6.3.0"
+description = "Python docstring style checker"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019"},
+ {file = "pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1"},
+]
+
+[package.dependencies]
+snowballstemmer = ">=2.2.0"
+
+[package.extras]
+toml = ["tomli (>=1.2.3)"]
+
+[[package]]
+name = "pyflakes"
+version = "3.2.0"
+description = "passive checker of Python programs"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"},
+ {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"},
+]
+
+[[package]]
+name = "pylint"
+version = "3.3.2"
+description = "python code static checker"
+optional = false
+python-versions = ">=3.9.0"
+files = [
+ {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"},
+ {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"},
+]
+
+[package.dependencies]
+astroid = ">=3.3.5,<=3.4.0-dev0"
+colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
+dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""}
+isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
+mccabe = ">=0.6,<0.8"
+platformdirs = ">=2.2.0"
+tomlkit = ">=0.10.1"
+
+[package.extras]
+spelling = ["pyenchant (>=3.2,<4.0)"]
+testutils = ["gitpython (>3)"]
+
+[[package]]
+name = "pylint-celery"
+version = "0.3"
+description = "pylint-celery is a Pylint plugin to aid Pylint in recognising and understandingerrors caused when using the Celery library"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pylint-celery-0.3.tar.gz", hash = "sha256:41e32094e7408d15c044178ea828dd524beedbdbe6f83f712c5e35bde1de4beb"},
+]
+
+[package.dependencies]
+astroid = ">=1.0"
+pylint = ">=1.0"
+pylint-plugin-utils = ">=0.2.1"
+
+[[package]]
+name = "pylint-django"
+version = "2.6.1"
+description = "A Pylint plugin to help Pylint understand the Django web framework"
+optional = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"},
+ {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"},
+]
+
+[package.dependencies]
+pylint = ">=3.0,<4"
+pylint-plugin-utils = ">=0.8"
+
+[package.extras]
+with-django = ["Django (>=2.2)"]
+
+[[package]]
+name = "pylint-flask"
+version = "0.6"
+description = "pylint-flask is a Pylint plugin to aid Pylint in recognizing and understanding errors caused when using Flask"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pylint-flask-0.6.tar.gz", hash = "sha256:f4d97de2216bf7bfce07c9c08b166e978fe9f2725de2a50a9845a97de7e31517"},
+]
+
+[package.dependencies]
+pylint-plugin-utils = ">=0.2.1"
+
+[[package]]
+name = "pylint-plugin-utils"
+version = "0.8.2"
+description = "Utilities and helpers for writing Pylint plugins"
+optional = false
+python-versions = ">=3.7,<4.0"
+files = [
+ {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"},
+ {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"},
+]
+
+[package.dependencies]
+pylint = ">=1.7"
+
+[[package]]
+name = "pyyaml"
+version = "6.0.2"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"},
+ {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"},
+ {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"},
+ {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"},
+ {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"},
+ {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"},
+ {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"},
+ {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"},
+ {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"},
+ {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"},
+ {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"},
+ {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"},
+ {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"},
+ {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"},
+ {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"},
+ {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"},
+ {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"},
+ {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"},
+ {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"},
+ {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"},
+ {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"},
+ {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"},
+ {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"},
+ {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"},
+ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"},
+ {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"},
+ {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"},
+ {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"},
+ {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"},
+ {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"},
+ {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"},
+ {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"},
+ {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"},
+ {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"},
+ {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"},
+ {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"},
+ {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"},
+ {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"},
+ {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"},
+ {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"},
+ {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"},
+]
+
+[[package]]
+name = "regex"
+version = "2024.11.6"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"},
+ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"},
+ {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"},
+ {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"},
+ {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"},
+ {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"},
+ {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"},
+ {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"},
+ {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"},
+ {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"},
+ {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"},
+ {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"},
+ {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"},
+ {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"},
+ {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"},
+ {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"},
+]
+
+[[package]]
+name = "requirements-detector"
+version = "1.3.2"
+description = "Python tool to find and list requirements of a Python project"
+optional = false
+python-versions = "<4.0,>=3.8"
+files = [
+ {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"},
+ {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"},
+]
+
+[package.dependencies]
+astroid = ">=3.0,<4.0"
+packaging = ">=21.3"
+semver = ">=3.0.0,<4.0.0"
+
+[[package]]
+name = "semver"
+version = "3.0.2"
+description = "Python helper for Semantic Versioning (https://semver.org)"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "semver-3.0.2-py3-none-any.whl", hash = "sha256:b1ea4686fe70b981f85359eda33199d60c53964284e0cfb4977d243e37cf4bf4"},
+ {file = "semver-3.0.2.tar.gz", hash = "sha256:6253adb39c70f6e51afed2fa7152bcd414c411286088fb4b9effb133885ab4cc"},
+]
+
+[[package]]
+name = "setoptconf-tmp"
+version = "0.3.1"
+description = "A module for retrieving program settings from various sources in a consistant method."
+optional = false
+python-versions = "*"
+files = [
+ {file = "setoptconf-tmp-0.3.1.tar.gz", hash = "sha256:e0480addd11347ba52f762f3c4d8afa3e10ad0affbc53e3ffddc0ca5f27d5778"},
+ {file = "setoptconf_tmp-0.3.1-py3-none-any.whl", hash = "sha256:76035d5cd1593d38b9056ae12d460eca3aaa34ad05c315b69145e138ba80a745"},
+]
+
+[package.extras]
+yaml = ["pyyaml"]
+
+[[package]]
+name = "smmap"
+version = "5.0.1"
+description = "A pure Python implementation of a sliding window memory map manager"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"},
+ {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"},
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.1"
+description = "Sniff out which async library your code is running under"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
+ {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
+]
+
+[[package]]
+name = "snowballstemmer"
+version = "2.2.0"
+description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
+optional = false
+python-versions = "*"
+files = [
+ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
+ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
+]
+
+[[package]]
+name = "sqlalchemy"
+version = "2.0.36"
+description = "Database Abstraction Library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"},
+ {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"},
+ {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"},
+]
+
+[package.dependencies]
+greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"}
+mypy = {version = ">=0.910", optional = true, markers = "extra == \"mypy\""}
+typing-extensions = ">=4.6.0"
+
+[package.extras]
+aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"]
+aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
+aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
+asyncio = ["greenlet (!=0.4.17)"]
+asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"]
+mssql = ["pyodbc"]
+mssql-pymssql = ["pymssql"]
+mssql-pyodbc = ["pyodbc"]
+mypy = ["mypy (>=0.910)"]
+mysql = ["mysqlclient (>=1.4.0)"]
+mysql-connector = ["mysql-connector-python"]
+oracle = ["cx_oracle (>=8)"]
+oracle-oracledb = ["oracledb (>=1.0.1)"]
+postgresql = ["psycopg2 (>=2.7)"]
+postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"]
+postgresql-pg8000 = ["pg8000 (>=1.29.1)"]
+postgresql-psycopg = ["psycopg (>=3.0.7)"]
+postgresql-psycopg2binary = ["psycopg2-binary"]
+postgresql-psycopg2cffi = ["psycopg2cffi"]
+postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
+pymysql = ["pymysql"]
+sqlcipher = ["sqlcipher3_binary"]
+
+[[package]]
+name = "starlette"
+version = "0.36.3"
+description = "The little ASGI library that shines."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"},
+ {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"},
+]
+
+[package.dependencies]
+anyio = ">=3.4.0,<5"
+
+[package.extras]
+full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"]
+
+[[package]]
+name = "toml"
+version = "0.10.2"
+description = "Python Library for Tom's Obvious, Minimal Language"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
+ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
+]
+
+[[package]]
+name = "tomlkit"
+version = "0.13.2"
+description = "Style preserving TOML library"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"},
+ {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.67.1"
+description = "Fast, Extensible Progress Meter"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"},
+ {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"]
+discord = ["requests"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "typing-extensions"
+version = "4.12.2"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"},
+ {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"},
+]
+
+[[package]]
+name = "uvicorn"
+version = "0.23.2"
+description = "The lightning-fast ASGI server."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "uvicorn-0.23.2-py3-none-any.whl", hash = "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53"},
+ {file = "uvicorn-0.23.2.tar.gz", hash = "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a"},
+]
+
+[package.dependencies]
+click = ">=7.0"
+h11 = ">=0.8"
+
+[package.extras]
+standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
+
+[metadata]
+lock-version = "2.0"
+python-versions = "3.11.*"
+content-hash = "b5943cc8ae2e2fe7b1d84126fe323532445afea6680a775ca5415f63b5bd2256"
diff --git a/modules/programming/module_programming_winnowing/pyproject.toml b/modules/programming/module_programming_winnowing/pyproject.toml
new file mode 100644
index 000000000..c8517b6c2
--- /dev/null
+++ b/modules/programming/module_programming_winnowing/pyproject.toml
@@ -0,0 +1,25 @@
+[tool.poetry]
+name = "module_programming_winnowing"
+version = "0.1.0"
+description = "Programming assessment Winnowing module."
+authors = ["Marlon Bucciarelli "]
+license = "MIT"
+
+[tool.poetry.dependencies]
+python = "3.11.*"
+# if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible.
+# athena = { path = "../athena", develop = true }
+athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"}
+nltk = "^3.6.5"
+antlr4-python3-runtime = "^4.13.1"
+
+[tool.poetry.group.dev.dependencies]
+pydantic = "1.10.17"
+prospector = "^1.10.2"
+
+[tool.poetry.scripts]
+module = "athena:run_module"
+
+[build-system]
+requires = ["poetry-core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"
From 93bbe0cd2181c69a4e2848060d28b8facdd2b7c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maximilian=20S=C3=B6lch?=
Date: Thu, 5 Dec 2024 17:00:50 +0100
Subject: [PATCH 2/3] Update athena core package in themisml, coffee and
example module (#367)
---
.../programming/module_example/poetry.lock | 628 ++---
.../programming/module_example/pyproject.toml | 2 +-
.../module_programming_themisml/poetry.lock | 2337 ++++++++---------
.../pyproject.toml | 2 +-
modules/text/module_text_cofee/poetry.lock | 849 +++---
modules/text/module_text_cofee/pyproject.toml | 2 +-
6 files changed, 1789 insertions(+), 2031 deletions(-)
diff --git a/modules/programming/module_example/poetry.lock b/modules/programming/module_example/poetry.lock
index 02fbdee86..9fa2824f9 100644
--- a/modules/programming/module_example/poetry.lock
+++ b/modules/programming/module_example/poetry.lock
@@ -2,13 +2,13 @@
[[package]]
name = "anyio"
-version = "4.4.0"
+version = "4.6.2.post1"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"},
- {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"},
+ {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"},
+ {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"},
]
[package.dependencies]
@@ -16,25 +16,21 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
-trio = ["trio (>=0.23)"]
+doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
+trio = ["trio (>=0.26.1)"]
[[package]]
name = "astroid"
-version = "2.15.8"
+version = "3.3.5"
description = "An abstract syntax tree for Python with inference support."
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"},
- {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"},
+ {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"},
+ {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"},
]
-[package.dependencies]
-lazy-object-proxy = ">=1.4.0"
-wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}
-
[[package]]
name = "athena"
version = "1.0.0"
@@ -55,8 +51,8 @@ uvicorn = "^0.23.0"
[package.source]
type = "git"
url = "https://github.com/ls1intum/Athena.git"
-reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
-resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
+reference = "bbb2bb0"
+resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2"
subdirectory = "athena"
[[package]]
@@ -97,13 +93,13 @@ files = [
[[package]]
name = "dill"
-version = "0.3.8"
+version = "0.3.9"
description = "serialize all of Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
- {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
+ {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
]
[package.extras]
@@ -142,19 +138,19 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)"
[[package]]
name = "flake8"
-version = "5.0.4"
+version = "7.1.1"
description = "the modular source code checker: pep8 pyflakes and co"
optional = false
-python-versions = ">=3.6.1"
+python-versions = ">=3.8.1"
files = [
- {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"},
- {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"},
+ {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"},
+ {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"},
]
[package.dependencies]
mccabe = ">=0.7.0,<0.8.0"
-pycodestyle = ">=2.9.0,<2.10.0"
-pyflakes = ">=2.5.0,<2.6.0"
+pycodestyle = ">=2.12.0,<2.13.0"
+pyflakes = ">=3.2.0,<3.3.0"
[[package]]
name = "flake8-polyfill"
@@ -204,69 +200,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit",
[[package]]
name = "greenlet"
-version = "3.0.3"
+version = "3.1.1"
description = "Lightweight in-process concurrent programming"
optional = false
python-versions = ">=3.7"
files = [
- {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
- {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
- {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
- {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
- {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
- {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
- {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
- {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
- {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
- {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
- {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
- {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
- {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
- {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
- {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
- {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"},
+ {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"},
+ {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"},
+ {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"},
+ {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"},
+ {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"},
+ {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"},
+ {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"},
+ {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"},
+ {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"},
+ {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"},
+ {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"},
+ {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"},
+ {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"},
+ {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"},
]
[package.extras]
@@ -330,15 +341,18 @@ socks = ["socksio (==1.*)"]
[[package]]
name = "idna"
-version = "3.8"
+version = "3.10"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.6"
files = [
- {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"},
- {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"},
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
]
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
[[package]]
name = "isort"
version = "5.13.2"
@@ -353,52 +367,6 @@ files = [
[package.extras]
colors = ["colorama (>=0.4.6)"]
-[[package]]
-name = "lazy-object-proxy"
-version = "1.10.0"
-description = "A fast and thorough lazy object proxy."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
- {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
-]
-
[[package]]
name = "mccabe"
version = "0.7.0"
@@ -412,38 +380,43 @@ files = [
[[package]]
name = "mypy"
-version = "1.11.2"
+version = "1.13.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"},
- {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"},
- {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"},
- {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"},
- {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"},
- {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"},
- {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"},
- {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"},
- {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"},
- {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"},
- {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"},
- {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"},
- {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"},
- {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"},
- {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"},
- {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"},
- {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"},
- {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"},
- {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
+ {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"},
+ {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"},
+ {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"},
+ {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"},
+ {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"},
+ {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"},
+ {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"},
+ {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"},
+ {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"},
+ {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"},
+ {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"},
+ {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"},
+ {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"},
+ {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"},
+ {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"},
+ {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"},
+ {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"},
+ {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"},
+ {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"},
+ {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"},
]
[package.dependencies]
@@ -452,6 +425,7 @@ typing-extensions = ">=4.6.0"
[package.extras]
dmypy = ["psutil (>=4.0)"]
+faster-cache = ["orjson"]
install-types = ["pip"]
mypyc = ["setuptools (>=50)"]
reports = ["lxml"]
@@ -469,13 +443,13 @@ files = [
[[package]]
name = "packaging"
-version = "24.1"
+version = "24.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
- {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
]
[[package]]
@@ -494,90 +468,85 @@ flake8-polyfill = ">=1.0.2,<2"
[[package]]
name = "platformdirs"
-version = "4.2.2"
+version = "4.3.6"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
python-versions = ">=3.8"
files = [
- {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
- {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
+ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
+ {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
]
[package.extras]
-docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
-type = ["mypy (>=1.8)"]
+docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"]
+type = ["mypy (>=1.11.2)"]
[[package]]
name = "prospector"
-version = "1.10.3"
+version = "1.13.3"
description = "Prospector is a tool to analyse Python code by aggregating the result of other tools."
optional = false
-python-versions = ">=3.7.2,<4.0"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"},
- {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"},
+ {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"},
+ {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"},
]
[package.dependencies]
dodgy = ">=0.2.1,<0.3.0"
-flake8 = "<6.0.0"
GitPython = ">=3.1.27,<4.0.0"
mccabe = ">=0.7.0,<0.8.0"
packaging = "*"
pep8-naming = ">=0.3.3,<=0.10.0"
pycodestyle = ">=2.9.0"
pydocstyle = ">=2.0.0"
-pyflakes = ">=2.2.0,<3"
-pylint = ">=2.8.3"
+pyflakes = ">=2.2.0"
+pylint = ">=3.0"
pylint-celery = "0.3"
-pylint-django = ">=2.5,<2.6"
+pylint-django = ">=2.6.1"
pylint-flask = "0.6"
-pylint-plugin-utils = ">=0.7,<0.8"
PyYAML = "*"
-requirements-detector = ">=1.2.0"
+requirements-detector = ">=1.3.2"
setoptconf-tmp = ">=0.3.1,<0.4.0"
toml = ">=0.10.2,<0.11.0"
[package.extras]
with-bandit = ["bandit (>=1.5.1)"]
-with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"]
+with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"]
with-mypy = ["mypy (>=0.600)"]
with-pyright = ["pyright (>=1.1.3)"]
with-pyroma = ["pyroma (>=2.4)"]
+with-ruff = ["ruff"]
with-vulture = ["vulture (>=1.5)"]
[[package]]
name = "psycopg2"
-version = "2.9.9"
+version = "2.9.10"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"},
- {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"},
- {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"},
- {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"},
- {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"},
- {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"},
- {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"},
- {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"},
- {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"},
- {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"},
- {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"},
+ {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"},
]
[[package]]
name = "pycodestyle"
-version = "2.9.1"
+version = "2.12.1"
description = "Python style guide checker"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"},
- {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"},
+ {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"},
+ {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"},
]
[[package]]
@@ -658,31 +627,31 @@ toml = ["tomli (>=1.2.3)"]
[[package]]
name = "pyflakes"
-version = "2.5.0"
+version = "3.2.0"
description = "passive checker of Python programs"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"},
- {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"},
+ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"},
+ {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"},
]
[[package]]
name = "pylint"
-version = "2.17.7"
+version = "3.3.2"
description = "python code static checker"
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"},
- {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"},
+ {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"},
+ {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"},
]
[package.dependencies]
-astroid = ">=2.15.8,<=2.17.0-dev0"
+astroid = ">=3.3.5,<=3.4.0-dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""}
-isort = ">=4.2.5,<6"
+isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2.0"
tomlkit = ">=0.10.1"
@@ -708,22 +677,21 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-django"
-version = "2.5.3"
+version = "2.6.1"
description = "A Pylint plugin to help Pylint understand the Django web framework"
optional = false
-python-versions = "*"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"},
- {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"},
+ {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"},
+ {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"},
]
[package.dependencies]
-pylint = ">=2.0,<3"
-pylint-plugin-utils = ">=0.7"
+pylint = ">=3.0,<4"
+pylint-plugin-utils = ">=0.8"
[package.extras]
-for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"]
-with-django = ["Django"]
+with-django = ["Django (>=2.2)"]
[[package]]
name = "pylint-flask"
@@ -740,13 +708,13 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-plugin-utils"
-version = "0.7"
+version = "0.8.2"
description = "Utilities and helpers for writing Pylint plugins"
optional = false
-python-versions = ">=3.6.2"
+python-versions = ">=3.7,<4.0"
files = [
- {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"},
- {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"},
+ {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"},
+ {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"},
]
[package.dependencies]
@@ -816,20 +784,19 @@ files = [
[[package]]
name = "requirements-detector"
-version = "1.2.2"
+version = "1.3.2"
description = "Python tool to find and list requirements of a Python project"
optional = false
-python-versions = ">=3.7,<4.0"
+python-versions = "<4.0,>=3.8"
files = [
- {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"},
- {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"},
+ {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"},
+ {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"},
]
[package.dependencies]
-astroid = ">=2.0,<3.0"
+astroid = ">=3.0,<4.0"
packaging = ">=21.3"
semver = ">=3.0.0,<4.0.0"
-toml = ">=0.10.2,<0.11.0"
[[package]]
name = "semver"
@@ -891,60 +858,68 @@ files = [
[[package]]
name = "sqlalchemy"
-version = "2.0.33"
+version = "2.0.36"
description = "Database Abstraction Library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"},
- {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"},
- {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"},
+ {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"},
+ {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"},
]
[package.dependencies]
@@ -958,7 +933,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
asyncio = ["greenlet (!=0.4.17)"]
asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
-mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"]
mssql = ["pyodbc"]
mssql-pymssql = ["pymssql"]
mssql-pyodbc = ["pyodbc"]
@@ -1018,13 +993,13 @@ files = [
[[package]]
name = "types-requests"
-version = "2.32.0.20240712"
+version = "2.32.0.20241016"
description = "Typing stubs for requests"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"},
- {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"},
+ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"},
+ {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"},
]
[package.dependencies]
@@ -1043,13 +1018,13 @@ files = [
[[package]]
name = "urllib3"
-version = "2.2.2"
+version = "2.2.3"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.8"
files = [
- {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
- {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
+ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"},
+ {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"},
]
[package.extras]
@@ -1076,86 +1051,7 @@ h11 = ">=0.8"
[package.extras]
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
-[[package]]
-name = "wrapt"
-version = "1.16.0"
-description = "Module for decorators, wrappers and monkey patching."
-optional = false
-python-versions = ">=3.6"
-files = [
- {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
- {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
- {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
- {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
- {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
- {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
- {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
- {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
- {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
- {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
- {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
- {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
- {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
- {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
- {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
- {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
- {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
- {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
-]
-
[metadata]
lock-version = "2.0"
python-versions = "3.11.*"
-content-hash = "0a44c6ca65ad12f9b38c44e61cb84594284cc703c132732f201d5cefa0090050"
+content-hash = "416585a1c6721e3a1b8d48e54b8488f2633e90d983183b024b4f4e7dd785f5e4"
diff --git a/modules/programming/module_example/pyproject.toml b/modules/programming/module_example/pyproject.toml
index 4053d7037..69b85e19f 100644
--- a/modules/programming/module_example/pyproject.toml
+++ b/modules/programming/module_example/pyproject.toml
@@ -9,7 +9,7 @@ license = "MIT"
python = "3.11.*"
# if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible.
# athena = { path = "../athena", develop = true }
-athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"}
+athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"}
[tool.poetry.group.dev.dependencies]
types-requests = "^2.31.0.8"
diff --git a/modules/programming/module_programming_themisml/poetry.lock b/modules/programming/module_programming_themisml/poetry.lock
index 4e24547e6..fd20f77b0 100644
--- a/modules/programming/module_programming_themisml/poetry.lock
+++ b/modules/programming/module_programming_themisml/poetry.lock
@@ -13,13 +13,13 @@ files = [
[[package]]
name = "anyio"
-version = "4.4.0"
+version = "4.6.2.post1"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"},
- {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"},
+ {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"},
+ {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"},
]
[package.dependencies]
@@ -27,25 +27,21 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
-trio = ["trio (>=0.23)"]
+doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
+trio = ["trio (>=0.26.1)"]
[[package]]
name = "astroid"
-version = "2.15.8"
+version = "3.3.5"
description = "An abstract syntax tree for Python with inference support."
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"},
- {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"},
+ {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"},
+ {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"},
]
-[package.dependencies]
-lazy-object-proxy = ">=1.4.0"
-wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}
-
[[package]]
name = "athena"
version = "1.0.0"
@@ -66,8 +62,8 @@ uvicorn = "^0.23.0"
[package.source]
type = "git"
url = "https://github.com/ls1intum/Athena.git"
-reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
-resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
+reference = "bbb2bb0"
+resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2"
subdirectory = "athena"
[[package]]
@@ -83,101 +79,116 @@ files = [
[[package]]
name = "charset-normalizer"
-version = "3.3.2"
+version = "3.4.0"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
optional = false
python-versions = ">=3.7.0"
files = [
- {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
- {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"},
+ {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"},
+ {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"},
]
[[package]]
@@ -226,76 +237,65 @@ files = [
[[package]]
name = "contourpy"
-version = "1.3.0"
+version = "1.3.1"
description = "Python library for calculating contours of 2D quadrilateral grids"
optional = false
-python-versions = ">=3.9"
+python-versions = ">=3.10"
files = [
- {file = "contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7"},
- {file = "contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42"},
- {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7"},
- {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab"},
- {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589"},
- {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41"},
- {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d"},
- {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223"},
- {file = "contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f"},
- {file = "contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b"},
- {file = "contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad"},
- {file = "contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49"},
- {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66"},
- {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081"},
- {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1"},
- {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d"},
- {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c"},
- {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb"},
- {file = "contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c"},
- {file = "contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67"},
- {file = "contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f"},
- {file = "contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6"},
- {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639"},
- {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c"},
- {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06"},
- {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09"},
- {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd"},
- {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35"},
- {file = "contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb"},
- {file = "contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b"},
- {file = "contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3"},
- {file = "contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7"},
- {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84"},
- {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0"},
- {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b"},
- {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da"},
- {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14"},
- {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8"},
- {file = "contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294"},
- {file = "contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087"},
- {file = "contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8"},
- {file = "contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b"},
- {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973"},
- {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18"},
- {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8"},
- {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6"},
- {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2"},
- {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927"},
- {file = "contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8"},
- {file = "contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c"},
- {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca"},
- {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f"},
- {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc"},
- {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2"},
- {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e"},
- {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800"},
- {file = "contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5"},
- {file = "contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843"},
- {file = "contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c"},
- {file = "contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779"},
- {file = "contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4"},
- {file = "contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0"},
- {file = "contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102"},
- {file = "contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb"},
- {file = "contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4"},
+ {file = "contourpy-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a045f341a77b77e1c5de31e74e966537bba9f3c4099b35bf4c2e3939dd54cdab"},
+ {file = "contourpy-1.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:500360b77259914f7805af7462e41f9cb7ca92ad38e9f94d6c8641b089338124"},
+ {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2f926efda994cdf3c8d3fdb40b9962f86edbc4457e739277b961eced3d0b4c1"},
+ {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adce39d67c0edf383647a3a007de0a45fd1b08dedaa5318404f1a73059c2512b"},
+ {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abbb49fb7dac584e5abc6636b7b2a7227111c4f771005853e7d25176daaf8453"},
+ {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0cffcbede75c059f535725c1680dfb17b6ba8753f0c74b14e6a9c68c29d7ea3"},
+ {file = "contourpy-1.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab29962927945d89d9b293eabd0d59aea28d887d4f3be6c22deaefbb938a7277"},
+ {file = "contourpy-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974d8145f8ca354498005b5b981165b74a195abfae9a8129df3e56771961d595"},
+ {file = "contourpy-1.3.1-cp310-cp310-win32.whl", hash = "sha256:ac4578ac281983f63b400f7fe6c101bedc10651650eef012be1ccffcbacf3697"},
+ {file = "contourpy-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:174e758c66bbc1c8576992cec9599ce8b6672b741b5d336b5c74e35ac382b18e"},
+ {file = "contourpy-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b"},
+ {file = "contourpy-1.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc"},
+ {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86"},
+ {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:113231fe3825ebf6f15eaa8bc1f5b0ddc19d42b733345eae0934cb291beb88b6"},
+ {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dbbc03a40f916a8420e420d63e96a1258d3d1b58cbdfd8d1f07b49fcbd38e85"},
+ {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a04ecd68acbd77fa2d39723ceca4c3197cb2969633836ced1bea14e219d077c"},
+ {file = "contourpy-1.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c414fc1ed8ee1dbd5da626cf3710c6013d3d27456651d156711fa24f24bd1291"},
+ {file = "contourpy-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:31c1b55c1f34f80557d3830d3dd93ba722ce7e33a0b472cba0ec3b6535684d8f"},
+ {file = "contourpy-1.3.1-cp311-cp311-win32.whl", hash = "sha256:f611e628ef06670df83fce17805c344710ca5cde01edfdc72751311da8585375"},
+ {file = "contourpy-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b2bdca22a27e35f16794cf585832e542123296b4687f9fd96822db6bae17bfc9"},
+ {file = "contourpy-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509"},
+ {file = "contourpy-1.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc"},
+ {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454"},
+ {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80"},
+ {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec"},
+ {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9"},
+ {file = "contourpy-1.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b"},
+ {file = "contourpy-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d"},
+ {file = "contourpy-1.3.1-cp312-cp312-win32.whl", hash = "sha256:e914a8cb05ce5c809dd0fe350cfbb4e881bde5e2a38dc04e3afe1b3e58bd158e"},
+ {file = "contourpy-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d"},
+ {file = "contourpy-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2"},
+ {file = "contourpy-1.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5"},
+ {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81"},
+ {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2"},
+ {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7"},
+ {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c"},
+ {file = "contourpy-1.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3"},
+ {file = "contourpy-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1"},
+ {file = "contourpy-1.3.1-cp313-cp313-win32.whl", hash = "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82"},
+ {file = "contourpy-1.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd"},
+ {file = "contourpy-1.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30"},
+ {file = "contourpy-1.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751"},
+ {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342"},
+ {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c"},
+ {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f"},
+ {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda"},
+ {file = "contourpy-1.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242"},
+ {file = "contourpy-1.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1"},
+ {file = "contourpy-1.3.1-cp313-cp313t-win32.whl", hash = "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1"},
+ {file = "contourpy-1.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546"},
+ {file = "contourpy-1.3.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b457d6430833cee8e4b8e9b6f07aa1c161e5e0d52e118dc102c8f9bd7dd060d6"},
+ {file = "contourpy-1.3.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb76c1a154b83991a3cbbf0dfeb26ec2833ad56f95540b442c73950af2013750"},
+ {file = "contourpy-1.3.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:44a29502ca9c7b5ba389e620d44f2fbe792b1fb5734e8b931ad307071ec58c53"},
+ {file = "contourpy-1.3.1.tar.gz", hash = "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699"},
]
[package.dependencies]
@@ -325,13 +325,13 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"]
[[package]]
name = "dill"
-version = "0.3.8"
+version = "0.3.9"
description = "serialize all of Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
- {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
+ {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
]
[package.extras]
@@ -370,35 +370,35 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)"
[[package]]
name = "filelock"
-version = "3.15.4"
+version = "3.16.1"
description = "A platform independent file lock."
optional = false
python-versions = ">=3.8"
files = [
- {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"},
- {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"},
+ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"},
+ {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"},
]
[package.extras]
-docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
-testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"]
-typing = ["typing-extensions (>=4.8)"]
+docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"]
+typing = ["typing-extensions (>=4.12.2)"]
[[package]]
name = "flake8"
-version = "5.0.4"
+version = "7.1.1"
description = "the modular source code checker: pep8 pyflakes and co"
optional = false
-python-versions = ">=3.6.1"
+python-versions = ">=3.8.1"
files = [
- {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"},
- {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"},
+ {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"},
+ {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"},
]
[package.dependencies]
mccabe = ">=0.7.0,<0.8.0"
-pycodestyle = ">=2.9.0,<2.10.0"
-pyflakes = ">=2.5.0,<2.6.0"
+pycodestyle = ">=2.12.0,<2.13.0"
+pyflakes = ">=3.2.0,<3.3.0"
[[package]]
name = "flake8-polyfill"
@@ -416,53 +416,61 @@ flake8 = "*"
[[package]]
name = "fonttools"
-version = "4.53.1"
+version = "4.55.2"
description = "Tools to manipulate font files"
optional = false
python-versions = ">=3.8"
files = [
- {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"},
- {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"},
- {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"},
- {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"},
- {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"},
- {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"},
- {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"},
- {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"},
- {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"},
- {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"},
- {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"},
- {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"},
- {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"},
- {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"},
- {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"},
- {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"},
- {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"},
- {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"},
- {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"},
- {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"},
- {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"},
- {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"},
- {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"},
- {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"},
- {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"},
- {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"},
- {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"},
- {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"},
- {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"},
- {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"},
- {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"},
- {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"},
- {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"},
- {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"},
- {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"},
- {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"},
- {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"},
- {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"},
- {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"},
- {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"},
- {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"},
- {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"},
+ {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bef0f8603834643b1a6419d57902f18e7d950ec1a998fb70410635c598dc1a1e"},
+ {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:944228b86d472612d3b48bcc83b31c25c2271e63fdc74539adfcfa7a96d487fb"},
+ {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f0e55f5da594b85f269cfbecd2f6bd3e07d0abba68870bc3f34854de4fa4678"},
+ {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b1a6e576db0c83c1b91925bf1363478c4bb968dbe8433147332fb5782ce6190"},
+ {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:616368b15716781bc84df5c2191dc0540137aaef56c2771eb4b89b90933f347a"},
+ {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7bbae4f3915225c2c37670da68e2bf18a21206060ad31dfb95fec91ef641caa7"},
+ {file = "fonttools-4.55.2-cp310-cp310-win32.whl", hash = "sha256:8b02b10648d69d67a7eb055f4d3eedf4a85deb22fb7a19fbd9acbae7c7538199"},
+ {file = "fonttools-4.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:bbea0ab841113ac8e8edde067e099b7288ffc6ac2dded538b131c2c0595d5f77"},
+ {file = "fonttools-4.55.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d34525e8141286fa976e14806639d32294bfb38d28bbdb5f6be9f46a1cd695a6"},
+ {file = "fonttools-4.55.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ecd1c2b1c2ec46bb73685bc5473c72e16ed0930ef79bc2919ccadc43a99fb16"},
+ {file = "fonttools-4.55.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9008438ad59e5a8e403a62fbefef2b2ff377eb3857d90a3f2a5f4d674ff441b2"},
+ {file = "fonttools-4.55.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:131591ac8d7a47043aaf29581aba755ae151d46e49d2bf49608601efd71e8b4d"},
+ {file = "fonttools-4.55.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4c83381c3e3e3d9caa25527c4300543578341f21aae89e4fbbb4debdda8d82a2"},
+ {file = "fonttools-4.55.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42aca564b575252fd9954ed0d91d97a24de24289a16ce8ff74ed0bdf5ecebf11"},
+ {file = "fonttools-4.55.2-cp311-cp311-win32.whl", hash = "sha256:c6457f650ebe15baa17fc06e256227f0a47f46f80f27ec5a0b00160de8dc2c13"},
+ {file = "fonttools-4.55.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cfa67414d7414442a5635ff634384101c54f53bb7b0e04aa6a61b013fcce194"},
+ {file = "fonttools-4.55.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:18f082445b8fe5e91c53e6184f4c1c73f3f965c8bcc614c6cd6effd573ce6c1a"},
+ {file = "fonttools-4.55.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c0f91adbbd706e8acd1db73e3e510118e62d0ffb651864567dccc5b2339f90"},
+ {file = "fonttools-4.55.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d8ccce035320d63dba0c35f52499322f5531dbe85bba1514c7cea26297e4c54"},
+ {file = "fonttools-4.55.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e126df9615df214ec7f04bebcf60076297fbc10b75c777ce58b702d7708ffb"},
+ {file = "fonttools-4.55.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:508ebb42956a7a931c4092dfa2d9b4ffd4f94cea09b8211199090d2bd082506b"},
+ {file = "fonttools-4.55.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1b9de46ef7b683d50400abf9f1578eaceee271ff51c36bf4b7366f2be29f498"},
+ {file = "fonttools-4.55.2-cp312-cp312-win32.whl", hash = "sha256:2df61d9fc15199cc86dad29f64dd686874a3a52dda0c2d8597d21f509f95c332"},
+ {file = "fonttools-4.55.2-cp312-cp312-win_amd64.whl", hash = "sha256:d337ec087da8216a828574aa0525d869df0a2ac217a2efc1890974ddd1fbc5b9"},
+ {file = "fonttools-4.55.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:10aff204e2edee1d312fa595c06f201adf8d528a3b659cfb34cd47eceaaa6a26"},
+ {file = "fonttools-4.55.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:09fe922a3eff181fd07dd724cdb441fb6b9fc355fd1c0f1aa79aca60faf1fbdd"},
+ {file = "fonttools-4.55.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:487e1e8b524143a799bda0169c48b44a23a6027c1bb1957d5a172a7d3a1dd704"},
+ {file = "fonttools-4.55.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b1726872e09268bbedb14dc02e58b7ea31ecdd1204c6073eda4911746b44797"},
+ {file = "fonttools-4.55.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6fc88cfb58b0cd7b48718c3e61dd0d0a3ee8e2c86b973342967ce09fbf1db6d4"},
+ {file = "fonttools-4.55.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e857fe1859901ad8c5cab32e0eebc920adb09f413d2d73b74b677cf47b28590c"},
+ {file = "fonttools-4.55.2-cp313-cp313-win32.whl", hash = "sha256:81ccd2b3a420b8050c7d9db3be0555d71662973b3ef2a1d921a2880b58957db8"},
+ {file = "fonttools-4.55.2-cp313-cp313-win_amd64.whl", hash = "sha256:d559eb1744c7dcfa90ae60cb1a4b3595e898e48f4198738c321468c01180cd83"},
+ {file = "fonttools-4.55.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6b5917ef79cac8300b88fd6113003fd01bbbbea2ea060a27b95d8f77cb4c65c2"},
+ {file = "fonttools-4.55.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:663eba5615d6abaaf616432354eb7ce951d518e43404371bcc2b0694ef21e8d6"},
+ {file = "fonttools-4.55.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:803d5cef5fc47f44f5084d154aa3d6f069bb1b60e32390c225f897fa19b0f939"},
+ {file = "fonttools-4.55.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bc5f100de0173cc39102c0399bd6c3bd544bbdf224957933f10ee442d43cddd"},
+ {file = "fonttools-4.55.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3d9bbc1e380fdaf04ad9eabd8e3e6a4301eaf3487940893e9fd98537ea2e283b"},
+ {file = "fonttools-4.55.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:42a9afedff07b6f75aa0f39b5e49922ac764580ef3efce035ca30284b2ee65c8"},
+ {file = "fonttools-4.55.2-cp38-cp38-win32.whl", hash = "sha256:f1c76f423f1a241df08f87614364dff6e0b7ce23c962c1b74bd995ec7c0dad13"},
+ {file = "fonttools-4.55.2-cp38-cp38-win_amd64.whl", hash = "sha256:25062b6ca03464dd5179fc2040fb19e03391b7cc49b9cc4f879312e638605c5c"},
+ {file = "fonttools-4.55.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d1100d8e665fe386a79cab59446992de881ea74d0d6c191bb988642692aa2421"},
+ {file = "fonttools-4.55.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dbdc251c5e472e5ae6bc816f9b82718b8e93ff7992e7331d6cf3562b96aa268e"},
+ {file = "fonttools-4.55.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0bf24d2b02dbc9376d795a63062632ff73e3e9e60c0229373f500aed7e86dd7"},
+ {file = "fonttools-4.55.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4ff250ed4ff05015dfd9cf2adf7570c7a383ca80f4d9732ac484a5ed0d8453c"},
+ {file = "fonttools-4.55.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44cf2a98aa661dbdeb8c03f5e405b074e2935196780bb729888639f5276067d9"},
+ {file = "fonttools-4.55.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22ef222740eb89d189bf0612eb98fbae592c61d7efeac51bfbc2a1592d469557"},
+ {file = "fonttools-4.55.2-cp39-cp39-win32.whl", hash = "sha256:93f439ca27e55f585e7aaa04a74990acd983b5f2245e41d6b79f0a8b44e684d8"},
+ {file = "fonttools-4.55.2-cp39-cp39-win_amd64.whl", hash = "sha256:627cf10d6f5af5bec6324c18a2670f134c29e1b7dce3fb62e8ef88baa6cba7a9"},
+ {file = "fonttools-4.55.2-py3-none-any.whl", hash = "sha256:8e2d89fbe9b08d96e22c7a81ec04a4e8d8439c31223e2dc6f2f9fc8ff14bdf9f"},
+ {file = "fonttools-4.55.2.tar.gz", hash = "sha256:45947e7b3f9673f91df125d375eb57b9a23f2a603f438a1aebf3171bffa7a205"},
]
[package.extras]
@@ -481,13 +489,13 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"]
[[package]]
name = "fsspec"
-version = "2024.6.1"
+version = "2024.10.0"
description = "File-system specification"
optional = false
python-versions = ">=3.8"
files = [
- {file = "fsspec-2024.6.1-py3-none-any.whl", hash = "sha256:3cb443f8bcd2efb31295a5b9fdb02aee81d8452c80d28f97a6d0959e6cee101e"},
- {file = "fsspec-2024.6.1.tar.gz", hash = "sha256:fad7d7e209dd4c1208e3bbfda706620e0da5142bebbd9c384afb95b07e798e49"},
+ {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"},
+ {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"},
]
[package.extras]
@@ -552,69 +560,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit",
[[package]]
name = "greenlet"
-version = "3.0.3"
+version = "3.1.1"
description = "Lightweight in-process concurrent programming"
optional = false
python-versions = ">=3.7"
files = [
- {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
- {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
- {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
- {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
- {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
- {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
- {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
- {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
- {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
- {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
- {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
- {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
- {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
- {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
- {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
- {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"},
+ {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"},
+ {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"},
+ {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"},
+ {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"},
+ {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"},
+ {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"},
+ {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"},
+ {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"},
+ {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"},
+ {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"},
+ {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"},
+ {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"},
+ {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"},
+ {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"},
]
[package.extras]
@@ -678,13 +701,13 @@ socks = ["socksio (==1.*)"]
[[package]]
name = "huggingface-hub"
-version = "0.24.6"
+version = "0.26.3"
description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub"
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "huggingface_hub-0.24.6-py3-none-any.whl", hash = "sha256:a990f3232aa985fe749bc9474060cbad75e8b2f115f6665a9fda5b9c97818970"},
- {file = "huggingface_hub-0.24.6.tar.gz", hash = "sha256:cc2579e761d070713eaa9c323e3debe39d5b464ae3a7261c39a9195b27bb8000"},
+ {file = "huggingface_hub-0.26.3-py3-none-any.whl", hash = "sha256:e66aa99e569c2d5419240a9e553ad07245a5b1300350bfbc5a4945cf7432991b"},
+ {file = "huggingface_hub-0.26.3.tar.gz", hash = "sha256:90e1fe62ffc26757a073aaad618422b899ccf9447c2bba8c902a90bef5b42e1d"},
]
[package.dependencies]
@@ -697,30 +720,33 @@ tqdm = ">=4.42.1"
typing-extensions = ">=3.7.4.3"
[package.extras]
-all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"]
+all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"]
cli = ["InquirerPy (==0.3.4)"]
-dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"]
+dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"]
fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"]
hf-transfer = ["hf-transfer (>=0.1.4)"]
-inference = ["aiohttp", "minijinja (>=1.0)"]
-quality = ["mypy (==1.5.1)", "ruff (>=0.5.0)"]
+inference = ["aiohttp"]
+quality = ["libcst (==1.4.0)", "mypy (==1.5.1)", "ruff (>=0.5.0)"]
tensorflow = ["graphviz", "pydot", "tensorflow"]
tensorflow-testing = ["keras (<3.0)", "tensorflow"]
-testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"]
+testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"]
torch = ["safetensors[torch]", "torch"]
typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"]
[[package]]
name = "idna"
-version = "3.8"
+version = "3.10"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.6"
files = [
- {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"},
- {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"},
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
]
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
[[package]]
name = "isort"
version = "5.13.2"
@@ -872,170 +898,127 @@ files = [
{file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674"},
{file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225"},
{file = "kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0"},
-]
-
-[[package]]
-name = "lazy-object-proxy"
-version = "1.10.0"
-description = "A fast and thorough lazy object proxy."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
- {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
+ {file = "kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60"},
]
[[package]]
name = "markupsafe"
-version = "2.1.5"
+version = "3.0.2"
description = "Safely add untrusted strings to HTML/XML markup."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.9"
files = [
- {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
- {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
- {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
- {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
- {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
- {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
- {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
- {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"},
+ {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"},
+ {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"},
+ {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"},
+ {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"},
+ {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"},
+ {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"},
]
[[package]]
name = "matplotlib"
-version = "3.9.2"
+version = "3.9.3"
description = "Python plotting package"
optional = false
python-versions = ">=3.9"
files = [
- {file = "matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb"},
- {file = "matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4"},
- {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64"},
- {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66"},
- {file = "matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a"},
- {file = "matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae"},
- {file = "matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772"},
- {file = "matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41"},
- {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f"},
- {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447"},
- {file = "matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e"},
- {file = "matplotlib-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7"},
- {file = "matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9"},
- {file = "matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d"},
- {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7"},
- {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c"},
- {file = "matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e"},
- {file = "matplotlib-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3"},
- {file = "matplotlib-3.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9"},
- {file = "matplotlib-3.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa"},
- {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b"},
- {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413"},
- {file = "matplotlib-3.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b"},
- {file = "matplotlib-3.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49"},
- {file = "matplotlib-3.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03"},
- {file = "matplotlib-3.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30"},
- {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51"},
- {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c"},
- {file = "matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e"},
- {file = "matplotlib-3.9.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2"},
- {file = "matplotlib-3.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a"},
- {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5"},
- {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca"},
- {file = "matplotlib-3.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea"},
- {file = "matplotlib-3.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2"},
- {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556"},
- {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21"},
- {file = "matplotlib-3.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc"},
- {file = "matplotlib-3.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697"},
- {file = "matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92"},
+ {file = "matplotlib-3.9.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:41b016e3be4e740b66c79a031a0a6e145728dbc248142e751e8dab4f3188ca1d"},
+ {file = "matplotlib-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e0143975fc2a6d7136c97e19c637321288371e8f09cff2564ecd73e865ea0b9"},
+ {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f459c8ee2c086455744723628264e43c884be0c7d7b45d84b8cd981310b4815"},
+ {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:687df7ceff57b8f070d02b4db66f75566370e7ae182a0782b6d3d21b0d6917dc"},
+ {file = "matplotlib-3.9.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:edd14cf733fdc4f6e6fe3f705af97676a7e52859bf0044aa2c84e55be739241c"},
+ {file = "matplotlib-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c40c244221a1adbb1256692b1133c6fb89418df27bf759a31a333e7912a4010"},
+ {file = "matplotlib-3.9.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:cf2a60daf6cecff6828bc608df00dbc794380e7234d2411c0ec612811f01969d"},
+ {file = "matplotlib-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:213d6dc25ce686516208d8a3e91120c6a4fdae4a3e06b8505ced5b716b50cc04"},
+ {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c52f48eb75fcc119a4fdb68ba83eb5f71656999420375df7c94cc68e0e14686e"},
+ {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c93796b44fa111049b88a24105e947f03c01966b5c0cc782e2ee3887b790a3"},
+ {file = "matplotlib-3.9.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cd1077b9a09b16d8c3c7075a8add5ffbfe6a69156a57e290c800ed4d435bef1d"},
+ {file = "matplotlib-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:c96eeeb8c68b662c7747f91a385688d4b449687d29b691eff7068a4602fe6dc4"},
+ {file = "matplotlib-3.9.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0a361bd5583bf0bcc08841df3c10269617ee2a36b99ac39d455a767da908bbbc"},
+ {file = "matplotlib-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e14485bb1b83eeb3d55b6878f9560240981e7bbc7a8d4e1e8c38b9bd6ec8d2de"},
+ {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8d279f78844aad213c4935c18f8292a9432d51af2d88bca99072c903948045"},
+ {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6c12514329ac0d03128cf1dcceb335f4fbf7c11da98bca68dca8dcb983153a9"},
+ {file = "matplotlib-3.9.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6e9de2b390d253a508dd497e9b5579f3a851f208763ed67fdca5dc0c3ea6849c"},
+ {file = "matplotlib-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d796272408f8567ff7eaa00eb2856b3a00524490e47ad505b0b4ca6bb8a7411f"},
+ {file = "matplotlib-3.9.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:203d18df84f5288973b2d56de63d4678cc748250026ca9e1ad8f8a0fd8a75d83"},
+ {file = "matplotlib-3.9.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b651b0d3642991259109dc0351fc33ad44c624801367bb8307be9bfc35e427ad"},
+ {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66d7b171fecf96940ce069923a08ba3df33ef542de82c2ff4fe8caa8346fa95a"},
+ {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be0ba61f6ff2e6b68e4270fb63b6813c9e7dec3d15fc3a93f47480444fd72f0"},
+ {file = "matplotlib-3.9.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d6b2e8856dec3a6db1ae51aec85c82223e834b228c1d3228aede87eee2b34f9"},
+ {file = "matplotlib-3.9.3-cp313-cp313-win_amd64.whl", hash = "sha256:90a85a004fefed9e583597478420bf904bb1a065b0b0ee5b9d8d31b04b0f3f70"},
+ {file = "matplotlib-3.9.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3119b2f16de7f7b9212ba76d8fe6a0e9f90b27a1e04683cd89833a991682f639"},
+ {file = "matplotlib-3.9.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:87ad73763d93add1b6c1f9fcd33af662fd62ed70e620c52fcb79f3ac427cf3a6"},
+ {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:026bdf3137ab6022c866efa4813b6bbeddc2ed4c9e7e02f0e323a7bca380dfa0"},
+ {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760a5e89ebbb172989e8273024a1024b0f084510b9105261b3b00c15e9c9f006"},
+ {file = "matplotlib-3.9.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a42b9dc42de2cfe357efa27d9c50c7833fc5ab9b2eb7252ccd5d5f836a84e1e4"},
+ {file = "matplotlib-3.9.3-cp313-cp313t-win_amd64.whl", hash = "sha256:e0fcb7da73fbf67b5f4bdaa57d85bb585a4e913d4a10f3e15b32baea56a67f0a"},
+ {file = "matplotlib-3.9.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:031b7f5b8e595cc07def77ec5b58464e9bb67dc5760be5d6f26d9da24892481d"},
+ {file = "matplotlib-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9fa6e193c14d6944e0685cdb527cb6b38b0e4a518043e7212f214113af7391da"},
+ {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e6eefae6effa0c35bbbc18c25ee6e0b1da44d2359c3cd526eb0c9e703cf055d"},
+ {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d3e5c7a99bd28afb957e1ae661323b0800d75b419f24d041ed1cc5d844a764"},
+ {file = "matplotlib-3.9.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816a966d5d376bf24c92af8f379e78e67278833e4c7cbc9fa41872eec629a060"},
+ {file = "matplotlib-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fb0b37c896172899a4a93d9442ffdc6f870165f59e05ce2e07c6fded1c15749"},
+ {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f2a4ea08e6876206d511365b0bc234edc813d90b930be72c3011bbd7898796f"},
+ {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b081dac96ab19c54fd8558fac17c9d2c9cb5cc4656e7ed3261ddc927ba3e2c5"},
+ {file = "matplotlib-3.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a0a63cb8404d1d1f94968ef35738900038137dab8af836b6c21bb6f03d75465"},
+ {file = "matplotlib-3.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:896774766fd6be4571a43bc2fcbcb1dcca0807e53cab4a5bf88c4aa861a08e12"},
+ {file = "matplotlib-3.9.3.tar.gz", hash = "sha256:cd5dbbc8e25cad5f706845c4d100e2c8b34691b412b93717ce38d8ae803bcfa5"},
]
[package.dependencies]
@@ -1050,7 +1033,7 @@ pyparsing = ">=2.3.1"
python-dateutil = ">=2.7"
[package.extras]
-dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"]
+dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"]
[[package]]
name = "mccabe"
@@ -1082,38 +1065,43 @@ tests = ["pytest (>=4.6)"]
[[package]]
name = "mypy"
-version = "1.11.2"
+version = "1.13.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"},
- {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"},
- {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"},
- {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"},
- {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"},
- {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"},
- {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"},
- {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"},
- {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"},
- {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"},
- {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"},
- {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"},
- {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"},
- {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"},
- {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"},
- {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"},
- {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"},
- {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"},
- {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
+ {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"},
+ {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"},
+ {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"},
+ {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"},
+ {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"},
+ {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"},
+ {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"},
+ {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"},
+ {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"},
+ {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"},
+ {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"},
+ {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"},
+ {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"},
+ {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"},
+ {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"},
+ {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"},
+ {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"},
+ {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"},
+ {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"},
+ {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"},
]
[package.dependencies]
@@ -1122,6 +1110,7 @@ typing-extensions = ">=4.6.0"
[package.extras]
dmypy = ["psutil (>=4.0)"]
+faster-cache = ["orjson"]
install-types = ["pip"]
mypyc = ["setuptools (>=50)"]
reports = ["lxml"]
@@ -1139,131 +1128,147 @@ files = [
[[package]]
name = "networkx"
-version = "3.3"
+version = "3.4.2"
description = "Python package for creating and manipulating graphs and networks"
optional = false
python-versions = ">=3.10"
files = [
- {file = "networkx-3.3-py3-none-any.whl", hash = "sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2"},
- {file = "networkx-3.3.tar.gz", hash = "sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9"},
+ {file = "networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f"},
+ {file = "networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1"},
]
[package.extras]
-default = ["matplotlib (>=3.6)", "numpy (>=1.23)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"]
+default = ["matplotlib (>=3.7)", "numpy (>=1.24)", "pandas (>=2.0)", "scipy (>=1.10,!=1.11.0,!=1.11.1)"]
developer = ["changelist (==0.5)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"]
-doc = ["myst-nb (>=1.0)", "numpydoc (>=1.7)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"]
-extra = ["lxml (>=4.6)", "pydot (>=2.0)", "pygraphviz (>=1.12)", "sympy (>=1.10)"]
+doc = ["intersphinx-registry", "myst-nb (>=1.1)", "numpydoc (>=1.8.0)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.15)", "sphinx (>=7.3)", "sphinx-gallery (>=0.16)", "texext (>=0.6.7)"]
+example = ["cairocffi (>=1.7)", "contextily (>=1.6)", "igraph (>=0.11)", "momepy (>=0.7.2)", "osmnx (>=1.9)", "scikit-learn (>=1.5)", "seaborn (>=0.13)"]
+extra = ["lxml (>=4.6)", "pydot (>=3.0.1)", "pygraphviz (>=1.14)", "sympy (>=1.10)"]
test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"]
[[package]]
name = "numpy"
-version = "2.1.1"
+version = "2.1.3"
description = "Fundamental package for array computing in Python"
optional = false
python-versions = ">=3.10"
files = [
- {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"},
- {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"},
- {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"},
- {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"},
- {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"},
- {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"},
- {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"},
- {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"},
- {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"},
- {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"},
- {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"},
- {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"},
- {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"},
- {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"},
- {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"},
- {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"},
- {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"},
- {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"},
- {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"},
- {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"},
- {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"},
- {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"},
- {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"},
- {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"},
- {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"},
- {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"},
- {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"},
- {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"},
- {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"},
- {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"},
- {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"},
- {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"},
- {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"},
- {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"},
- {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"},
- {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"},
- {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"},
- {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"},
- {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"},
- {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"},
- {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"},
- {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"},
- {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"},
- {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"},
- {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"},
- {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"},
- {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"},
- {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"},
- {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"},
- {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"},
- {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"},
- {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"},
- {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"},
+ {file = "numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff"},
+ {file = "numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5"},
+ {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1"},
+ {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd"},
+ {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3"},
+ {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098"},
+ {file = "numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c"},
+ {file = "numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4"},
+ {file = "numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23"},
+ {file = "numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0"},
+ {file = "numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d"},
+ {file = "numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41"},
+ {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9"},
+ {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09"},
+ {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a"},
+ {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b"},
+ {file = "numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee"},
+ {file = "numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0"},
+ {file = "numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9"},
+ {file = "numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2"},
+ {file = "numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e"},
+ {file = "numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958"},
+ {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8"},
+ {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564"},
+ {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512"},
+ {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b"},
+ {file = "numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc"},
+ {file = "numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0"},
+ {file = "numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9"},
+ {file = "numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a"},
+ {file = "numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f"},
+ {file = "numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598"},
+ {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57"},
+ {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe"},
+ {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43"},
+ {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56"},
+ {file = "numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a"},
+ {file = "numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef"},
+ {file = "numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f"},
+ {file = "numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed"},
+ {file = "numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f"},
+ {file = "numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4"},
+ {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e"},
+ {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0"},
+ {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408"},
+ {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6"},
+ {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f"},
+ {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17"},
+ {file = "numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48"},
+ {file = "numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4"},
+ {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f"},
+ {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4"},
+ {file = "numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d"},
+ {file = "numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb"},
+ {file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"},
]
[[package]]
name = "packaging"
-version = "24.1"
+version = "24.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
- {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
]
[[package]]
name = "pandas"
-version = "2.2.2"
+version = "2.2.3"
description = "Powerful data structures for data analysis, time series, and statistics"
optional = false
python-versions = ">=3.9"
files = [
- {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"},
- {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"},
- {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"},
- {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"},
- {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"},
- {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"},
- {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"},
- {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"},
- {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"},
- {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"},
- {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"},
- {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"},
- {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"},
- {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"},
- {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"},
- {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"},
- {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"},
- {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"},
- {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"},
- {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"},
- {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"},
- {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"},
- {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"},
- {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"},
- {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"},
- {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"},
- {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"},
- {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"},
- {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"},
+ {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"},
+ {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"},
+ {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"},
+ {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"},
+ {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"},
+ {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"},
+ {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"},
+ {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"},
+ {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"},
+ {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"},
+ {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"},
+ {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"},
+ {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"},
+ {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"},
+ {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"},
+ {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"},
+ {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"},
+ {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"},
+ {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"},
+ {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"},
+ {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"},
+ {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"},
+ {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"},
+ {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"},
+ {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"},
+ {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"},
+ {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"},
+ {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"},
+ {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"},
+ {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"},
+ {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"},
+ {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"},
+ {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"},
+ {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"},
+ {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"},
+ {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"},
+ {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"},
+ {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"},
+ {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"},
+ {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"},
+ {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"},
+ {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"},
]
[package.dependencies]
@@ -1313,95 +1318,90 @@ flake8-polyfill = ">=1.0.2,<2"
[[package]]
name = "pillow"
-version = "10.4.0"
+version = "11.0.0"
description = "Python Imaging Library (Fork)"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"},
- {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"},
- {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"},
- {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"},
- {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"},
- {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"},
- {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"},
- {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"},
- {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"},
- {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"},
- {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"},
- {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"},
- {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"},
- {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"},
- {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"},
- {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"},
- {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"},
- {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"},
- {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"},
- {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"},
- {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"},
- {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"},
- {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"},
- {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"},
- {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"},
- {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"},
- {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"},
- {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"},
- {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"},
- {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"},
- {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"},
- {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"},
- {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"},
- {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"},
- {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"},
- {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"},
- {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"},
- {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"},
- {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"},
- {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"},
- {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"},
- {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"},
- {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"},
- {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"},
- {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"},
- {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"},
- {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"},
- {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"},
- {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"},
- {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"},
- {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"},
- {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"},
- {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"},
- {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"},
- {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"},
- {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"},
- {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"},
- {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"},
- {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"},
- {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"},
- {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"},
- {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"},
- {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"},
- {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"},
- {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"},
- {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"},
- {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"},
- {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"},
- {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"},
- {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"},
- {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"},
- {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"},
- {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"},
- {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"},
- {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"},
- {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"},
- {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"},
- {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"},
- {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"},
- {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"},
+ {file = "pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947"},
+ {file = "pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba"},
+ {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086"},
+ {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9"},
+ {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488"},
+ {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f"},
+ {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb"},
+ {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97"},
+ {file = "pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50"},
+ {file = "pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c"},
+ {file = "pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1"},
+ {file = "pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc"},
+ {file = "pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a"},
+ {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3"},
+ {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5"},
+ {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b"},
+ {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa"},
+ {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306"},
+ {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9"},
+ {file = "pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5"},
+ {file = "pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291"},
+ {file = "pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9"},
+ {file = "pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923"},
+ {file = "pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903"},
+ {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4"},
+ {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f"},
+ {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9"},
+ {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7"},
+ {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6"},
+ {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc"},
+ {file = "pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6"},
+ {file = "pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47"},
+ {file = "pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25"},
+ {file = "pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699"},
+ {file = "pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38"},
+ {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2"},
+ {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2"},
+ {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527"},
+ {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa"},
+ {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f"},
+ {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb"},
+ {file = "pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798"},
+ {file = "pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de"},
+ {file = "pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84"},
+ {file = "pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b"},
+ {file = "pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003"},
+ {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2"},
+ {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a"},
+ {file = "pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8"},
+ {file = "pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8"},
+ {file = "pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904"},
+ {file = "pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3"},
+ {file = "pillow-11.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba"},
+ {file = "pillow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a"},
+ {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916"},
+ {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d"},
+ {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7"},
+ {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e"},
+ {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f"},
+ {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae"},
+ {file = "pillow-11.0.0-cp39-cp39-win32.whl", hash = "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4"},
+ {file = "pillow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd"},
+ {file = "pillow-11.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd"},
+ {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2"},
+ {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2"},
+ {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b"},
+ {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2"},
+ {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830"},
+ {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734"},
+ {file = "pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316"},
+ {file = "pillow-11.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06"},
+ {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273"},
+ {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790"},
+ {file = "pillow-11.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944"},
+ {file = "pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739"},
]
[package.extras]
-docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"]
+docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"]
fpx = ["olefile"]
mic = ["olefile"]
tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
@@ -1410,90 +1410,85 @@ xmp = ["defusedxml"]
[[package]]
name = "platformdirs"
-version = "4.2.2"
+version = "4.3.6"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
python-versions = ">=3.8"
files = [
- {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
- {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
+ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
+ {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
]
[package.extras]
-docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
-type = ["mypy (>=1.8)"]
+docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"]
+type = ["mypy (>=1.11.2)"]
[[package]]
name = "prospector"
-version = "1.10.3"
+version = "1.13.3"
description = "Prospector is a tool to analyse Python code by aggregating the result of other tools."
optional = false
-python-versions = ">=3.7.2,<4.0"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"},
- {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"},
+ {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"},
+ {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"},
]
[package.dependencies]
dodgy = ">=0.2.1,<0.3.0"
-flake8 = "<6.0.0"
GitPython = ">=3.1.27,<4.0.0"
mccabe = ">=0.7.0,<0.8.0"
packaging = "*"
pep8-naming = ">=0.3.3,<=0.10.0"
pycodestyle = ">=2.9.0"
pydocstyle = ">=2.0.0"
-pyflakes = ">=2.2.0,<3"
-pylint = ">=2.8.3"
+pyflakes = ">=2.2.0"
+pylint = ">=3.0"
pylint-celery = "0.3"
-pylint-django = ">=2.5,<2.6"
+pylint-django = ">=2.6.1"
pylint-flask = "0.6"
-pylint-plugin-utils = ">=0.7,<0.8"
PyYAML = "*"
-requirements-detector = ">=1.2.0"
+requirements-detector = ">=1.3.2"
setoptconf-tmp = ">=0.3.1,<0.4.0"
toml = ">=0.10.2,<0.11.0"
[package.extras]
with-bandit = ["bandit (>=1.5.1)"]
-with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"]
+with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"]
with-mypy = ["mypy (>=0.600)"]
with-pyright = ["pyright (>=1.1.3)"]
with-pyroma = ["pyroma (>=2.4)"]
+with-ruff = ["ruff"]
with-vulture = ["vulture (>=1.5)"]
[[package]]
name = "psycopg2"
-version = "2.9.9"
+version = "2.9.10"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"},
- {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"},
- {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"},
- {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"},
- {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"},
- {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"},
- {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"},
- {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"},
- {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"},
- {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"},
- {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"},
+ {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"},
]
[[package]]
name = "pycodestyle"
-version = "2.9.1"
+version = "2.12.1"
description = "Python style guide checker"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"},
- {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"},
+ {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"},
+ {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"},
]
[[package]]
@@ -1574,31 +1569,31 @@ toml = ["tomli (>=1.2.3)"]
[[package]]
name = "pyflakes"
-version = "2.5.0"
+version = "3.2.0"
description = "passive checker of Python programs"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"},
- {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"},
+ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"},
+ {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"},
]
[[package]]
name = "pylint"
-version = "2.17.7"
+version = "3.3.2"
description = "python code static checker"
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"},
- {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"},
+ {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"},
+ {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"},
]
[package.dependencies]
-astroid = ">=2.15.8,<=2.17.0-dev0"
+astroid = ">=3.3.5,<=3.4.0-dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""}
-isort = ">=4.2.5,<6"
+isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2.0"
tomlkit = ">=0.10.1"
@@ -1624,22 +1619,21 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-django"
-version = "2.5.3"
+version = "2.6.1"
description = "A Pylint plugin to help Pylint understand the Django web framework"
optional = false
-python-versions = "*"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"},
- {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"},
+ {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"},
+ {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"},
]
[package.dependencies]
-pylint = ">=2.0,<3"
-pylint-plugin-utils = ">=0.7"
+pylint = ">=3.0,<4"
+pylint-plugin-utils = ">=0.8"
[package.extras]
-for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"]
-with-django = ["Django"]
+with-django = ["Django (>=2.2)"]
[[package]]
name = "pylint-flask"
@@ -1656,13 +1650,13 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-plugin-utils"
-version = "0.7"
+version = "0.8.2"
description = "Utilities and helpers for writing Pylint plugins"
optional = false
-python-versions = ">=3.6.2"
+python-versions = ">=3.7,<4.0"
files = [
- {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"},
- {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"},
+ {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"},
+ {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"},
]
[package.dependencies]
@@ -1670,13 +1664,13 @@ pylint = ">=1.7"
[[package]]
name = "pyparsing"
-version = "3.1.4"
+version = "3.2.0"
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
optional = false
-python-versions = ">=3.6.8"
+python-versions = ">=3.9"
files = [
- {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"},
- {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"},
+ {file = "pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84"},
+ {file = "pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c"},
]
[package.extras]
@@ -1698,13 +1692,13 @@ six = ">=1.5"
[[package]]
name = "pytz"
-version = "2024.1"
+version = "2024.2"
description = "World timezone definitions, modern and historical"
optional = false
python-versions = "*"
files = [
- {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
- {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+ {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"},
+ {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"},
]
[[package]]
@@ -1771,90 +1765,105 @@ files = [
[[package]]
name = "regex"
-version = "2024.7.24"
+version = "2024.11.6"
description = "Alternative regular expression module, to replace re."
optional = false
python-versions = ">=3.8"
files = [
- {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce"},
- {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024"},
- {file = "regex-2024.7.24-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd"},
- {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53"},
- {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca"},
- {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59"},
- {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41"},
- {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5"},
- {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46"},
- {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f"},
- {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7"},
- {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe"},
- {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce"},
- {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa"},
- {file = "regex-2024.7.24-cp310-cp310-win32.whl", hash = "sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66"},
- {file = "regex-2024.7.24-cp310-cp310-win_amd64.whl", hash = "sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e"},
- {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281"},
- {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b"},
- {file = "regex-2024.7.24-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a"},
- {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73"},
- {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2"},
- {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e"},
- {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51"},
- {file = "regex-2024.7.24-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364"},
- {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee"},
- {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c"},
- {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce"},
- {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1"},
- {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e"},
- {file = "regex-2024.7.24-cp311-cp311-win32.whl", hash = "sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c"},
- {file = "regex-2024.7.24-cp311-cp311-win_amd64.whl", hash = "sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52"},
- {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"},
- {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"},
- {file = "regex-2024.7.24-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9"},
- {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289"},
- {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9"},
- {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c"},
- {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440"},
- {file = "regex-2024.7.24-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610"},
- {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5"},
- {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799"},
- {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05"},
- {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94"},
- {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38"},
- {file = "regex-2024.7.24-cp312-cp312-win32.whl", hash = "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc"},
- {file = "regex-2024.7.24-cp312-cp312-win_amd64.whl", hash = "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908"},
- {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0"},
- {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b"},
- {file = "regex-2024.7.24-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2"},
- {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950"},
- {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57"},
- {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293"},
- {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe"},
- {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b"},
- {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53"},
- {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750"},
- {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2"},
- {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf"},
- {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169"},
- {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8"},
- {file = "regex-2024.7.24-cp38-cp38-win32.whl", hash = "sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96"},
- {file = "regex-2024.7.24-cp38-cp38-win_amd64.whl", hash = "sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5"},
- {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24"},
- {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d"},
- {file = "regex-2024.7.24-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8"},
- {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc"},
- {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535"},
- {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd"},
- {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1"},
- {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be"},
- {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e"},
- {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f"},
- {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3"},
- {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4"},
- {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759"},
- {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9"},
- {file = "regex-2024.7.24-cp39-cp39-win32.whl", hash = "sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1"},
- {file = "regex-2024.7.24-cp39-cp39-win_amd64.whl", hash = "sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9"},
- {file = "regex-2024.7.24.tar.gz", hash = "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506"},
+ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"},
+ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"},
+ {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"},
+ {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"},
+ {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"},
+ {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"},
+ {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"},
+ {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"},
+ {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"},
+ {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"},
+ {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"},
+ {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"},
+ {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"},
+ {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"},
+ {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"},
+ {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"},
+ {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"},
+ {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"},
+ {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"},
+ {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"},
+ {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"},
+ {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"},
+ {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"},
+ {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"},
+ {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"},
+ {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"},
+ {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"},
+ {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"},
+ {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"},
+ {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"},
+ {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"},
+ {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"},
+ {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"},
]
[[package]]
@@ -1880,138 +1889,137 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "requirements-detector"
-version = "1.2.2"
+version = "1.3.2"
description = "Python tool to find and list requirements of a Python project"
optional = false
-python-versions = ">=3.7,<4.0"
+python-versions = "<4.0,>=3.8"
files = [
- {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"},
- {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"},
+ {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"},
+ {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"},
]
[package.dependencies]
-astroid = ">=2.0,<3.0"
+astroid = ">=3.0,<4.0"
packaging = ">=21.3"
semver = ">=3.0.0,<4.0.0"
-toml = ">=0.10.2,<0.11.0"
[[package]]
name = "safetensors"
-version = "0.4.4"
+version = "0.4.5"
description = ""
optional = false
python-versions = ">=3.7"
files = [
- {file = "safetensors-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2adb497ada13097f30e386e88c959c0fda855a5f6f98845710f5bb2c57e14f12"},
- {file = "safetensors-0.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7db7fdc2d71fd1444d85ca3f3d682ba2df7d61a637dfc6d80793f439eae264ab"},
- {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4f0eed76b430f009fbefca1a0028ddb112891b03cb556d7440d5cd68eb89a9"},
- {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:57d216fab0b5c432aabf7170883d7c11671622bde8bd1436c46d633163a703f6"},
- {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7d9b76322e49c056bcc819f8bdca37a2daa5a6d42c07f30927b501088db03309"},
- {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32f0d1f6243e90ee43bc6ee3e8c30ac5b09ca63f5dd35dbc985a1fc5208c451a"},
- {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d464bdc384874601a177375028012a5f177f1505279f9456fea84bbc575c7f"},
- {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63144e36209ad8e4e65384dbf2d52dd5b1866986079c00a72335402a38aacdc5"},
- {file = "safetensors-0.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:051d5ecd490af7245258000304b812825974d5e56f14a3ff7e1b8b2ba6dc2ed4"},
- {file = "safetensors-0.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51bc8429d9376224cd3cf7e8ce4f208b4c930cd10e515b6ac6a72cbc3370f0d9"},
- {file = "safetensors-0.4.4-cp310-none-win32.whl", hash = "sha256:fb7b54830cee8cf9923d969e2df87ce20e625b1af2fd194222ab902d3adcc29c"},
- {file = "safetensors-0.4.4-cp310-none-win_amd64.whl", hash = "sha256:4b3e8aa8226d6560de8c2b9d5ff8555ea482599c670610758afdc97f3e021e9c"},
- {file = "safetensors-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:bbaa31f2cb49013818bde319232ccd72da62ee40f7d2aa532083eda5664e85ff"},
- {file = "safetensors-0.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fdcb80f4e9fbb33b58e9bf95e7dbbedff505d1bcd1c05f7c7ce883632710006"},
- {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55c14c20be247b8a1aeaf3ab4476265e3ca83096bb8e09bb1a7aa806088def4f"},
- {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:949aaa1118660f992dbf0968487b3e3cfdad67f948658ab08c6b5762e90cc8b6"},
- {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c11a4ab7debc456326a2bac67f35ee0ac792bcf812c7562a4a28559a5c795e27"},
- {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0cea44bba5c5601b297bc8307e4075535b95163402e4906b2e9b82788a2a6df"},
- {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9d752c97f6bbe327352f76e5b86442d776abc789249fc5e72eacb49e6916482"},
- {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:03f2bb92e61b055ef6cc22883ad1ae898010a95730fa988c60a23800eb742c2c"},
- {file = "safetensors-0.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:87bf3f91a9328a941acc44eceffd4e1f5f89b030985b2966637e582157173b98"},
- {file = "safetensors-0.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:20d218ec2b6899d29d6895419a58b6e44cc5ff8f0cc29fac8d236a8978ab702e"},
- {file = "safetensors-0.4.4-cp311-none-win32.whl", hash = "sha256:8079486118919f600c603536e2490ca37b3dbd3280e3ad6eaacfe6264605ac8a"},
- {file = "safetensors-0.4.4-cp311-none-win_amd64.whl", hash = "sha256:2f8c2eb0615e2e64ee27d478c7c13f51e5329d7972d9e15528d3e4cfc4a08f0d"},
- {file = "safetensors-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:baec5675944b4a47749c93c01c73d826ef7d42d36ba8d0dba36336fa80c76426"},
- {file = "safetensors-0.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f15117b96866401825f3e94543145028a2947d19974429246ce59403f49e77c6"},
- {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a13a9caea485df164c51be4eb0c87f97f790b7c3213d635eba2314d959fe929"},
- {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6b54bc4ca5f9b9bba8cd4fb91c24b2446a86b5ae7f8975cf3b7a277353c3127c"},
- {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08332c22e03b651c8eb7bf5fc2de90044f3672f43403b3d9ac7e7e0f4f76495e"},
- {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bb62841e839ee992c37bb75e75891c7f4904e772db3691c59daaca5b4ab960e1"},
- {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e5b927acc5f2f59547270b0309a46d983edc44be64e1ca27a7fcb0474d6cd67"},
- {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2a69c71b1ae98a8021a09a0b43363b0143b0ce74e7c0e83cacba691b62655fb8"},
- {file = "safetensors-0.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23654ad162c02a5636f0cd520a0310902c4421aab1d91a0b667722a4937cc445"},
- {file = "safetensors-0.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0677c109d949cf53756859160b955b2e75b0eefe952189c184d7be30ecf7e858"},
- {file = "safetensors-0.4.4-cp312-none-win32.whl", hash = "sha256:a51d0ddd4deb8871c6de15a772ef40b3dbd26a3c0451bb9e66bc76fc5a784e5b"},
- {file = "safetensors-0.4.4-cp312-none-win_amd64.whl", hash = "sha256:2d065059e75a798bc1933c293b68d04d79b586bb7f8c921e0ca1e82759d0dbb1"},
- {file = "safetensors-0.4.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:9d625692578dd40a112df30c02a1adf068027566abd8e6a74893bb13d441c150"},
- {file = "safetensors-0.4.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7cabcf39c81e5b988d0adefdaea2eb9b4fd9bd62d5ed6559988c62f36bfa9a89"},
- {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8359bef65f49d51476e9811d59c015f0ddae618ee0e44144f5595278c9f8268c"},
- {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1a32c662e7df9226fd850f054a3ead0e4213a96a70b5ce37b2d26ba27004e013"},
- {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c329a4dcc395364a1c0d2d1574d725fe81a840783dda64c31c5a60fc7d41472c"},
- {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:239ee093b1db877c9f8fe2d71331a97f3b9c7c0d3ab9f09c4851004a11f44b65"},
- {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd574145d930cf9405a64f9923600879a5ce51d9f315443a5f706374841327b6"},
- {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f6784eed29f9e036acb0b7769d9e78a0dc2c72c2d8ba7903005350d817e287a4"},
- {file = "safetensors-0.4.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:65a4a6072436bf0a4825b1c295d248cc17e5f4651e60ee62427a5bcaa8622a7a"},
- {file = "safetensors-0.4.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:df81e3407630de060ae8313da49509c3caa33b1a9415562284eaf3d0c7705f9f"},
- {file = "safetensors-0.4.4-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:e4a0f374200e8443d9746e947ebb346c40f83a3970e75a685ade0adbba5c48d9"},
- {file = "safetensors-0.4.4-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:181fb5f3dee78dae7fd7ec57d02e58f7936498d587c6b7c1c8049ef448c8d285"},
- {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb4ac1d8f6b65ec84ddfacd275079e89d9df7c92f95675ba96c4f790a64df6e"},
- {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76897944cd9239e8a70955679b531b9a0619f76e25476e57ed373322d9c2075d"},
- {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a9e9d1a27e51a0f69e761a3d581c3af46729ec1c988fa1f839e04743026ae35"},
- {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:005ef9fc0f47cb9821c40793eb029f712e97278dae84de91cb2b4809b856685d"},
- {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26987dac3752688c696c77c3576f951dbbdb8c57f0957a41fb6f933cf84c0b62"},
- {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c05270b290acd8d249739f40d272a64dd597d5a4b90f27d830e538bc2549303c"},
- {file = "safetensors-0.4.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:068d3a33711fc4d93659c825a04480ff5a3854e1d78632cdc8f37fee917e8a60"},
- {file = "safetensors-0.4.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:063421ef08ca1021feea8b46951251b90ae91f899234dd78297cbe7c1db73b99"},
- {file = "safetensors-0.4.4-cp37-none-win32.whl", hash = "sha256:d52f5d0615ea83fd853d4e1d8acf93cc2e0223ad4568ba1e1f6ca72e94ea7b9d"},
- {file = "safetensors-0.4.4-cp37-none-win_amd64.whl", hash = "sha256:88a5ac3280232d4ed8e994cbc03b46a1807ce0aa123867b40c4a41f226c61f94"},
- {file = "safetensors-0.4.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3467ab511bfe3360967d7dc53b49f272d59309e57a067dd2405b4d35e7dcf9dc"},
- {file = "safetensors-0.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2ab4c96d922e53670ce25fbb9b63d5ea972e244de4fa1dd97b590d9fd66aacef"},
- {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87df18fce4440477c3ef1fd7ae17c704a69a74a77e705a12be135ee0651a0c2d"},
- {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e5fe345b2bc7d88587149ac11def1f629d2671c4c34f5df38aed0ba59dc37f8"},
- {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f1a3e01dce3cd54060791e7e24588417c98b941baa5974700eeb0b8eb65b0a0"},
- {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6bf35e9a8998d8339fd9a05ac4ce465a4d2a2956cc0d837b67c4642ed9e947"},
- {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:166c0c52f6488b8538b2a9f3fbc6aad61a7261e170698779b371e81b45f0440d"},
- {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87e9903b8668a16ef02c08ba4ebc91e57a49c481e9b5866e31d798632805014b"},
- {file = "safetensors-0.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9c421153aa23c323bd8483d4155b4eee82c9a50ac11cccd83539104a8279c64"},
- {file = "safetensors-0.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a4b8617499b2371c7353302c5116a7e0a3a12da66389ce53140e607d3bf7b3d3"},
- {file = "safetensors-0.4.4-cp38-none-win32.whl", hash = "sha256:c6280f5aeafa1731f0a3709463ab33d8e0624321593951aefada5472f0b313fd"},
- {file = "safetensors-0.4.4-cp38-none-win_amd64.whl", hash = "sha256:6ceed6247fc2d33b2a7b7d25d8a0fe645b68798856e0bc7a9800c5fd945eb80f"},
- {file = "safetensors-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5cf6c6f6193797372adf50c91d0171743d16299491c75acad8650107dffa9269"},
- {file = "safetensors-0.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:419010156b914a3e5da4e4adf992bee050924d0fe423c4b329e523e2c14c3547"},
- {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88f6fd5a5c1302ce79993cc5feeadcc795a70f953c762544d01fb02b2db4ea33"},
- {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d468cffb82d90789696d5b4d8b6ab8843052cba58a15296691a7a3df55143cd2"},
- {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9353c2af2dd467333d4850a16edb66855e795561cd170685178f706c80d2c71e"},
- {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83c155b4a33368d9b9c2543e78f2452090fb030c52401ca608ef16fa58c98353"},
- {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9850754c434e636ce3dc586f534bb23bcbd78940c304775bee9005bf610e98f1"},
- {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:275f500b4d26f67b6ec05629a4600645231bd75e4ed42087a7c1801bff04f4b3"},
- {file = "safetensors-0.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5c2308de665b7130cd0e40a2329278226e4cf083f7400c51ca7e19ccfb3886f3"},
- {file = "safetensors-0.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e06a9ebc8656e030ccfe44634f2a541b4b1801cd52e390a53ad8bacbd65f8518"},
- {file = "safetensors-0.4.4-cp39-none-win32.whl", hash = "sha256:ef73df487b7c14b477016947c92708c2d929e1dee2bacdd6fff5a82ed4539537"},
- {file = "safetensors-0.4.4-cp39-none-win_amd64.whl", hash = "sha256:83d054818a8d1198d8bd8bc3ea2aac112a2c19def2bf73758321976788706398"},
- {file = "safetensors-0.4.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1d1f34c71371f0e034004a0b583284b45d233dd0b5f64a9125e16b8a01d15067"},
- {file = "safetensors-0.4.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a8043a33d58bc9b30dfac90f75712134ca34733ec3d8267b1bd682afe7194f5"},
- {file = "safetensors-0.4.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8db8f0c59c84792c12661f8efa85de160f80efe16b87a9d5de91b93f9e0bce3c"},
- {file = "safetensors-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfc1fc38e37630dd12d519bdec9dcd4b345aec9930bb9ce0ed04461f49e58b52"},
- {file = "safetensors-0.4.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5c9d86d9b13b18aafa88303e2cd21e677f5da2a14c828d2c460fe513af2e9a5"},
- {file = "safetensors-0.4.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:43251d7f29a59120a26f5a0d9583b9e112999e500afabcfdcb91606d3c5c89e3"},
- {file = "safetensors-0.4.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:2c42e9b277513b81cf507e6121c7b432b3235f980cac04f39f435b7902857f91"},
- {file = "safetensors-0.4.4-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3daacc9a4e3f428a84dd56bf31f20b768eb0b204af891ed68e1f06db9edf546f"},
- {file = "safetensors-0.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:218bbb9b883596715fc9997bb42470bf9f21bb832c3b34c2bf744d6fa8f2bbba"},
- {file = "safetensors-0.4.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bd5efc26b39f7fc82d4ab1d86a7f0644c8e34f3699c33f85bfa9a717a030e1b"},
- {file = "safetensors-0.4.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56ad9776b65d8743f86698a1973292c966cf3abff627efc44ed60e66cc538ddd"},
- {file = "safetensors-0.4.4-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:30f23e6253c5f43a809dea02dc28a9f5fa747735dc819f10c073fe1b605e97d4"},
- {file = "safetensors-0.4.4-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5512078d00263de6cb04e9d26c9ae17611098f52357fea856213e38dc462f81f"},
- {file = "safetensors-0.4.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b96c3d9266439d17f35fc2173111d93afc1162f168e95aed122c1ca517b1f8f1"},
- {file = "safetensors-0.4.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:08d464aa72a9a13826946b4fb9094bb4b16554bbea2e069e20bd903289b6ced9"},
- {file = "safetensors-0.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:210160816d5a36cf41f48f38473b6f70d7bcb4b0527bedf0889cc0b4c3bb07db"},
- {file = "safetensors-0.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb276a53717f2bcfb6df0bcf284d8a12069002508d4c1ca715799226024ccd45"},
- {file = "safetensors-0.4.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a2c28c6487f17d8db0089e8b2cdc13de859366b94cc6cdc50e1b0a4147b56551"},
- {file = "safetensors-0.4.4-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7915f0c60e4e6e65d90f136d85dd3b429ae9191c36b380e626064694563dbd9f"},
- {file = "safetensors-0.4.4-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:00eea99ae422fbfa0b46065acbc58b46bfafadfcec179d4b4a32d5c45006af6c"},
- {file = "safetensors-0.4.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb1ed4fcb0b3c2f3ea2c5767434622fe5d660e5752f21ac2e8d737b1e5e480bb"},
- {file = "safetensors-0.4.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:73fc9a0a4343188bdb421783e600bfaf81d0793cd4cce6bafb3c2ed567a74cd5"},
- {file = "safetensors-0.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c37e6b714200824c73ca6eaf007382de76f39466a46e97558b8dc4cf643cfbf"},
- {file = "safetensors-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f75698c5c5c542417ac4956acfc420f7d4a2396adca63a015fd66641ea751759"},
- {file = "safetensors-0.4.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca1a209157f242eb183e209040097118472e169f2e069bfbd40c303e24866543"},
- {file = "safetensors-0.4.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:177f2b60a058f92a3cec7a1786c9106c29eca8987ecdfb79ee88126e5f47fa31"},
- {file = "safetensors-0.4.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ee9622e84fe6e4cd4f020e5fda70d6206feff3157731df7151d457fdae18e541"},
- {file = "safetensors-0.4.4.tar.gz", hash = "sha256:5fe3e9b705250d0172ed4e100a811543108653fb2b66b9e702a088ad03772a07"},
+ {file = "safetensors-0.4.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a63eaccd22243c67e4f2b1c3e258b257effc4acd78f3b9d397edc8cf8f1298a7"},
+ {file = "safetensors-0.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:23fc9b4ec7b602915cbb4ec1a7c1ad96d2743c322f20ab709e2c35d1b66dad27"},
+ {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6885016f34bef80ea1085b7e99b3c1f92cb1be78a49839203060f67b40aee761"},
+ {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:133620f443450429322f238fda74d512c4008621227fccf2f8cf4a76206fea7c"},
+ {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4fb3e0609ec12d2a77e882f07cced530b8262027f64b75d399f1504ffec0ba56"},
+ {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0f1dd769f064adc33831f5e97ad07babbd728427f98e3e1db6902e369122737"},
+ {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6d156bdb26732feada84f9388a9f135528c1ef5b05fae153da365ad4319c4c5"},
+ {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e347d77e2c77eb7624400ccd09bed69d35c0332f417ce8c048d404a096c593b"},
+ {file = "safetensors-0.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9f556eea3aec1d3d955403159fe2123ddd68e880f83954ee9b4a3f2e15e716b6"},
+ {file = "safetensors-0.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9483f42be3b6bc8ff77dd67302de8ae411c4db39f7224dec66b0eb95822e4163"},
+ {file = "safetensors-0.4.5-cp310-none-win32.whl", hash = "sha256:7389129c03fadd1ccc37fd1ebbc773f2b031483b04700923c3511d2a939252cc"},
+ {file = "safetensors-0.4.5-cp310-none-win_amd64.whl", hash = "sha256:e98ef5524f8b6620c8cdef97220c0b6a5c1cef69852fcd2f174bb96c2bb316b1"},
+ {file = "safetensors-0.4.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:21f848d7aebd5954f92538552d6d75f7c1b4500f51664078b5b49720d180e47c"},
+ {file = "safetensors-0.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb07000b19d41e35eecef9a454f31a8b4718a185293f0d0b1c4b61d6e4487971"},
+ {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09dedf7c2fda934ee68143202acff6e9e8eb0ddeeb4cfc24182bef999efa9f42"},
+ {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:59b77e4b7a708988d84f26de3ebead61ef1659c73dcbc9946c18f3b1786d2688"},
+ {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d3bc83e14d67adc2e9387e511097f254bd1b43c3020440e708858c684cbac68"},
+ {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39371fc551c1072976073ab258c3119395294cf49cdc1f8476794627de3130df"},
+ {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6c19feda32b931cae0acd42748a670bdf56bee6476a046af20181ad3fee4090"},
+ {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a659467495de201e2f282063808a41170448c78bada1e62707b07a27b05e6943"},
+ {file = "safetensors-0.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bad5e4b2476949bcd638a89f71b6916fa9a5cae5c1ae7eede337aca2100435c0"},
+ {file = "safetensors-0.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a3a315a6d0054bc6889a17f5668a73f94f7fe55121ff59e0a199e3519c08565f"},
+ {file = "safetensors-0.4.5-cp311-none-win32.whl", hash = "sha256:a01e232e6d3d5cf8b1667bc3b657a77bdab73f0743c26c1d3c5dd7ce86bd3a92"},
+ {file = "safetensors-0.4.5-cp311-none-win_amd64.whl", hash = "sha256:cbd39cae1ad3e3ef6f63a6f07296b080c951f24cec60188378e43d3713000c04"},
+ {file = "safetensors-0.4.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:473300314e026bd1043cef391bb16a8689453363381561b8a3e443870937cc1e"},
+ {file = "safetensors-0.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:801183a0f76dc647f51a2d9141ad341f9665602a7899a693207a82fb102cc53e"},
+ {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1524b54246e422ad6fb6aea1ac71edeeb77666efa67230e1faf6999df9b2e27f"},
+ {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3139098e3e8b2ad7afbca96d30ad29157b50c90861084e69fcb80dec7430461"},
+ {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65573dc35be9059770808e276b017256fa30058802c29e1038eb1c00028502ea"},
+ {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd33da8e9407559f8779c82a0448e2133737f922d71f884da27184549416bfed"},
+ {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3685ce7ed036f916316b567152482b7e959dc754fcc4a8342333d222e05f407c"},
+ {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dde2bf390d25f67908278d6f5d59e46211ef98e44108727084d4637ee70ab4f1"},
+ {file = "safetensors-0.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7469d70d3de970b1698d47c11ebbf296a308702cbaae7fcb993944751cf985f4"},
+ {file = "safetensors-0.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a6ba28118636a130ccbb968bc33d4684c48678695dba2590169d5ab03a45646"},
+ {file = "safetensors-0.4.5-cp312-none-win32.whl", hash = "sha256:c859c7ed90b0047f58ee27751c8e56951452ed36a67afee1b0a87847d065eec6"},
+ {file = "safetensors-0.4.5-cp312-none-win_amd64.whl", hash = "sha256:b5a8810ad6a6f933fff6c276eae92c1da217b39b4d8b1bc1c0b8af2d270dc532"},
+ {file = "safetensors-0.4.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:25e5f8e2e92a74f05b4ca55686234c32aac19927903792b30ee6d7bd5653d54e"},
+ {file = "safetensors-0.4.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:81efb124b58af39fcd684254c645e35692fea81c51627259cdf6d67ff4458916"},
+ {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:585f1703a518b437f5103aa9cf70e9bd437cb78eea9c51024329e4fb8a3e3679"},
+ {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b99fbf72e3faf0b2f5f16e5e3458b93b7d0a83984fe8d5364c60aa169f2da89"},
+ {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b17b299ca9966ca983ecda1c0791a3f07f9ca6ab5ded8ef3d283fff45f6bcd5f"},
+ {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76ded72f69209c9780fdb23ea89e56d35c54ae6abcdec67ccb22af8e696e449a"},
+ {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2783956926303dcfeb1de91a4d1204cd4089ab441e622e7caee0642281109db3"},
+ {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d94581aab8c6b204def4d7320f07534d6ee34cd4855688004a4354e63b639a35"},
+ {file = "safetensors-0.4.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:67e1e7cb8678bb1b37ac48ec0df04faf689e2f4e9e81e566b5c63d9f23748523"},
+ {file = "safetensors-0.4.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:dbd280b07e6054ea68b0cb4b16ad9703e7d63cd6890f577cb98acc5354780142"},
+ {file = "safetensors-0.4.5-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:77d9b228da8374c7262046a36c1f656ba32a93df6cc51cd4453af932011e77f1"},
+ {file = "safetensors-0.4.5-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:500cac01d50b301ab7bb192353317035011c5ceeef0fca652f9f43c000bb7f8d"},
+ {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75331c0c746f03158ded32465b7d0b0e24c5a22121743662a2393439c43a45cf"},
+ {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:670e95fe34e0d591d0529e5e59fd9d3d72bc77b1444fcaa14dccda4f36b5a38b"},
+ {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:098923e2574ff237c517d6e840acada8e5b311cb1fa226019105ed82e9c3b62f"},
+ {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13ca0902d2648775089fa6a0c8fc9e6390c5f8ee576517d33f9261656f851e3f"},
+ {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f0032bedc869c56f8d26259fe39cd21c5199cd57f2228d817a0e23e8370af25"},
+ {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4b15f51b4f8f2a512341d9ce3475cacc19c5fdfc5db1f0e19449e75f95c7dc8"},
+ {file = "safetensors-0.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f6594d130d0ad933d885c6a7b75c5183cb0e8450f799b80a39eae2b8508955eb"},
+ {file = "safetensors-0.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:60c828a27e852ded2c85fc0f87bf1ec20e464c5cd4d56ff0e0711855cc2e17f8"},
+ {file = "safetensors-0.4.5-cp37-none-win32.whl", hash = "sha256:6d3de65718b86c3eeaa8b73a9c3d123f9307a96bbd7be9698e21e76a56443af5"},
+ {file = "safetensors-0.4.5-cp37-none-win_amd64.whl", hash = "sha256:5a2d68a523a4cefd791156a4174189a4114cf0bf9c50ceb89f261600f3b2b81a"},
+ {file = "safetensors-0.4.5-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:e7a97058f96340850da0601a3309f3d29d6191b0702b2da201e54c6e3e44ccf0"},
+ {file = "safetensors-0.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:63bfd425e25f5c733f572e2246e08a1c38bd6f2e027d3f7c87e2e43f228d1345"},
+ {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3664ac565d0e809b0b929dae7ccd74e4d3273cd0c6d1220c6430035befb678e"},
+ {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:313514b0b9b73ff4ddfb4edd71860696dbe3c1c9dc4d5cc13dbd74da283d2cbf"},
+ {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31fa33ee326f750a2f2134a6174773c281d9a266ccd000bd4686d8021f1f3dac"},
+ {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09566792588d77b68abe53754c9f1308fadd35c9f87be939e22c623eaacbed6b"},
+ {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309aaec9b66cbf07ad3a2e5cb8a03205663324fea024ba391594423d0f00d9fe"},
+ {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:53946c5813b8f9e26103c5efff4a931cc45d874f45229edd68557ffb35ffb9f8"},
+ {file = "safetensors-0.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:868f9df9e99ad1e7f38c52194063a982bc88fedc7d05096f4f8160403aaf4bd6"},
+ {file = "safetensors-0.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9cc9449bd0b0bc538bd5e268221f0c5590bc5c14c1934a6ae359d44410dc68c4"},
+ {file = "safetensors-0.4.5-cp38-none-win32.whl", hash = "sha256:83c4f13a9e687335c3928f615cd63a37e3f8ef072a3f2a0599fa09f863fb06a2"},
+ {file = "safetensors-0.4.5-cp38-none-win_amd64.whl", hash = "sha256:b98d40a2ffa560653f6274e15b27b3544e8e3713a44627ce268f419f35c49478"},
+ {file = "safetensors-0.4.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cf727bb1281d66699bef5683b04d98c894a2803442c490a8d45cd365abfbdeb2"},
+ {file = "safetensors-0.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:96f1d038c827cdc552d97e71f522e1049fef0542be575421f7684756a748e457"},
+ {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:139fbee92570ecea774e6344fee908907db79646d00b12c535f66bc78bd5ea2c"},
+ {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c36302c1c69eebb383775a89645a32b9d266878fab619819ce660309d6176c9b"},
+ {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d641f5b8149ea98deb5ffcf604d764aad1de38a8285f86771ce1abf8e74c4891"},
+ {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b4db6a61d968de73722b858038c616a1bebd4a86abe2688e46ca0cc2d17558f2"},
+ {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b75a616e02f21b6f1d5785b20cecbab5e2bd3f6358a90e8925b813d557666ec1"},
+ {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:788ee7d04cc0e0e7f944c52ff05f52a4415b312f5efd2ee66389fb7685ee030c"},
+ {file = "safetensors-0.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:87bc42bd04fd9ca31396d3ca0433db0be1411b6b53ac5a32b7845a85d01ffc2e"},
+ {file = "safetensors-0.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4037676c86365a721a8c9510323a51861d703b399b78a6b4486a54a65a975fca"},
+ {file = "safetensors-0.4.5-cp39-none-win32.whl", hash = "sha256:1500418454529d0ed5c1564bda376c4ddff43f30fce9517d9bee7bcce5a8ef50"},
+ {file = "safetensors-0.4.5-cp39-none-win_amd64.whl", hash = "sha256:9d1a94b9d793ed8fe35ab6d5cea28d540a46559bafc6aae98f30ee0867000cab"},
+ {file = "safetensors-0.4.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdadf66b5a22ceb645d5435a0be7a0292ce59648ca1d46b352f13cff3ea80410"},
+ {file = "safetensors-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d42ffd4c2259f31832cb17ff866c111684c87bd930892a1ba53fed28370c918c"},
+ {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd8a1f6d2063a92cd04145c7fd9e31a1c7d85fbec20113a14b487563fdbc0597"},
+ {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:951d2fcf1817f4fb0ef0b48f6696688a4e852a95922a042b3f96aaa67eedc920"},
+ {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ac85d9a8c1af0e3132371d9f2d134695a06a96993c2e2f0bbe25debb9e3f67a"},
+ {file = "safetensors-0.4.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e3cec4a29eb7fe8da0b1c7988bc3828183080439dd559f720414450de076fcab"},
+ {file = "safetensors-0.4.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:21742b391b859e67b26c0b2ac37f52c9c0944a879a25ad2f9f9f3cd61e7fda8f"},
+ {file = "safetensors-0.4.5-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7db3006a4915151ce1913652e907cdede299b974641a83fbc092102ac41b644"},
+ {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f68bf99ea970960a237f416ea394e266e0361895753df06e3e06e6ea7907d98b"},
+ {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8158938cf3324172df024da511839d373c40fbfaa83e9abf467174b2910d7b4c"},
+ {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:540ce6c4bf6b58cb0fd93fa5f143bc0ee341c93bb4f9287ccd92cf898cc1b0dd"},
+ {file = "safetensors-0.4.5-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bfeaa1a699c6b9ed514bd15e6a91e74738b71125a9292159e3d6b7f0a53d2cde"},
+ {file = "safetensors-0.4.5-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:01c8f00da537af711979e1b42a69a8ec9e1d7112f208e0e9b8a35d2c381085ef"},
+ {file = "safetensors-0.4.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a0dd565f83b30f2ca79b5d35748d0d99dd4b3454f80e03dfb41f0038e3bdf180"},
+ {file = "safetensors-0.4.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:023b6e5facda76989f4cba95a861b7e656b87e225f61811065d5c501f78cdb3f"},
+ {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9633b663393d5796f0b60249549371e392b75a0b955c07e9c6f8708a87fc841f"},
+ {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78dd8adfb48716233c45f676d6e48534d34b4bceb50162c13d1f0bdf6f78590a"},
+ {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e8deb16c4321d61ae72533b8451ec4a9af8656d1c61ff81aa49f966406e4b68"},
+ {file = "safetensors-0.4.5-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:52452fa5999dc50c4decaf0c53aa28371f7f1e0fe5c2dd9129059fbe1e1599c7"},
+ {file = "safetensors-0.4.5-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d5f23198821e227cfc52d50fa989813513db381255c6d100927b012f0cfec63d"},
+ {file = "safetensors-0.4.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f4beb84b6073b1247a773141a6331117e35d07134b3bb0383003f39971d414bb"},
+ {file = "safetensors-0.4.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:68814d599d25ed2fdd045ed54d370d1d03cf35e02dce56de44c651f828fb9b7b"},
+ {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b6453c54c57c1781292c46593f8a37254b8b99004c68d6c3ce229688931a22"},
+ {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adaa9c6dead67e2dd90d634f89131e43162012479d86e25618e821a03d1eb1dc"},
+ {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73e7d408e9012cd17511b382b43547850969c7979efc2bc353f317abaf23c84c"},
+ {file = "safetensors-0.4.5-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:775409ce0fcc58b10773fdb4221ed1eb007de10fe7adbdf8f5e8a56096b6f0bc"},
+ {file = "safetensors-0.4.5-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:834001bed193e4440c4a3950a31059523ee5090605c907c66808664c932b549c"},
+ {file = "safetensors-0.4.5.tar.gz", hash = "sha256:d73de19682deabb02524b3d5d1f8b3aaba94c72f1bbfc7911b9b9d5d391c0310"},
]
[package.extras]
@@ -2054,13 +2062,13 @@ yaml = ["pyyaml"]
[[package]]
name = "six"
-version = "1.16.0"
+version = "1.17.0"
description = "Python 2 and 3 compatibility utilities"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
- {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
- {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
+ {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
]
[[package]]
@@ -2098,60 +2106,68 @@ files = [
[[package]]
name = "sqlalchemy"
-version = "2.0.33"
+version = "2.0.36"
description = "Database Abstraction Library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"},
- {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"},
- {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"},
+ {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"},
+ {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"},
]
[package.dependencies]
@@ -2165,7 +2181,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
asyncio = ["greenlet (!=0.4.17)"]
asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
-mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"]
mssql = ["pyodbc"]
mssql-pymssql = ["pymssql"]
mssql-pyodbc = ["pyodbc"]
@@ -2203,13 +2219,13 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7
[[package]]
name = "sympy"
-version = "1.13.2"
+version = "1.13.3"
description = "Computer algebra system (CAS) in Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "sympy-1.13.2-py3-none-any.whl", hash = "sha256:c51d75517712f1aed280d4ce58506a4a88d635d6b5dd48b39102a7ae1f3fcfe9"},
- {file = "sympy-1.13.2.tar.gz", hash = "sha256:401449d84d07be9d0c7a46a64bd54fe097667d5e7181bfe67ec777be9e01cb13"},
+ {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"},
+ {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"},
]
[package.dependencies]
@@ -2220,111 +2236,123 @@ dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"]
[[package]]
name = "tokenizers"
-version = "0.19.1"
+version = "0.20.3"
description = ""
optional = false
python-versions = ">=3.7"
files = [
- {file = "tokenizers-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:952078130b3d101e05ecfc7fc3640282d74ed26bcf691400f872563fca15ac97"},
- {file = "tokenizers-0.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82c8b8063de6c0468f08e82c4e198763e7b97aabfe573fd4cf7b33930ca4df77"},
- {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f03727225feaf340ceeb7e00604825addef622d551cbd46b7b775ac834c1e1c4"},
- {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:453e4422efdfc9c6b6bf2eae00d5e323f263fff62b29a8c9cd526c5003f3f642"},
- {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:02e81bf089ebf0e7f4df34fa0207519f07e66d8491d963618252f2e0729e0b46"},
- {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b07c538ba956843833fee1190cf769c60dc62e1cf934ed50d77d5502194d63b1"},
- {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28cab1582e0eec38b1f38c1c1fb2e56bce5dc180acb1724574fc5f47da2a4fe"},
- {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b01afb7193d47439f091cd8f070a1ced347ad0f9144952a30a41836902fe09e"},
- {file = "tokenizers-0.19.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7fb297edec6c6841ab2e4e8f357209519188e4a59b557ea4fafcf4691d1b4c98"},
- {file = "tokenizers-0.19.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e8a3dd055e515df7054378dc9d6fa8c8c34e1f32777fb9a01fea81496b3f9d3"},
- {file = "tokenizers-0.19.1-cp310-none-win32.whl", hash = "sha256:7ff898780a155ea053f5d934925f3902be2ed1f4d916461e1a93019cc7250837"},
- {file = "tokenizers-0.19.1-cp310-none-win_amd64.whl", hash = "sha256:bea6f9947e9419c2fda21ae6c32871e3d398cba549b93f4a65a2d369662d9403"},
- {file = "tokenizers-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5c88d1481f1882c2e53e6bb06491e474e420d9ac7bdff172610c4f9ad3898059"},
- {file = "tokenizers-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddf672ed719b4ed82b51499100f5417d7d9f6fb05a65e232249268f35de5ed14"},
- {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dadc509cc8a9fe460bd274c0e16ac4184d0958117cf026e0ea8b32b438171594"},
- {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfedf31824ca4915b511b03441784ff640378191918264268e6923da48104acc"},
- {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac11016d0a04aa6487b1513a3a36e7bee7eec0e5d30057c9c0408067345c48d2"},
- {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76951121890fea8330d3a0df9a954b3f2a37e3ec20e5b0530e9a0044ca2e11fe"},
- {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b342d2ce8fc8d00f376af068e3274e2e8649562e3bc6ae4a67784ded6b99428d"},
- {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d16ff18907f4909dca9b076b9c2d899114dd6abceeb074eca0c93e2353f943aa"},
- {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:706a37cc5332f85f26efbe2bdc9ef8a9b372b77e4645331a405073e4b3a8c1c6"},
- {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16baac68651701364b0289979ecec728546133e8e8fe38f66fe48ad07996b88b"},
- {file = "tokenizers-0.19.1-cp311-none-win32.whl", hash = "sha256:9ed240c56b4403e22b9584ee37d87b8bfa14865134e3e1c3fb4b2c42fafd3256"},
- {file = "tokenizers-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:ad57d59341710b94a7d9dbea13f5c1e7d76fd8d9bcd944a7a6ab0b0da6e0cc66"},
- {file = "tokenizers-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:621d670e1b1c281a1c9698ed89451395d318802ff88d1fc1accff0867a06f153"},
- {file = "tokenizers-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d924204a3dbe50b75630bd16f821ebda6a5f729928df30f582fb5aade90c818a"},
- {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4f3fefdc0446b1a1e6d81cd4c07088ac015665d2e812f6dbba4a06267d1a2c95"},
- {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9620b78e0b2d52ef07b0d428323fb34e8ea1219c5eac98c2596311f20f1f9266"},
- {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04ce49e82d100594715ac1b2ce87d1a36e61891a91de774755f743babcd0dd52"},
- {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5c2ff13d157afe413bf7e25789879dd463e5a4abfb529a2d8f8473d8042e28f"},
- {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3174c76efd9d08f836bfccaca7cfec3f4d1c0a4cf3acbc7236ad577cc423c840"},
- {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c9d5b6c0e7a1e979bec10ff960fae925e947aab95619a6fdb4c1d8ff3708ce3"},
- {file = "tokenizers-0.19.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a179856d1caee06577220ebcfa332af046d576fb73454b8f4d4b0ba8324423ea"},
- {file = "tokenizers-0.19.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:952b80dac1a6492170f8c2429bd11fcaa14377e097d12a1dbe0ef2fb2241e16c"},
- {file = "tokenizers-0.19.1-cp312-none-win32.whl", hash = "sha256:01d62812454c188306755c94755465505836fd616f75067abcae529c35edeb57"},
- {file = "tokenizers-0.19.1-cp312-none-win_amd64.whl", hash = "sha256:b70bfbe3a82d3e3fb2a5e9b22a39f8d1740c96c68b6ace0086b39074f08ab89a"},
- {file = "tokenizers-0.19.1-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:bb9dfe7dae85bc6119d705a76dc068c062b8b575abe3595e3c6276480e67e3f1"},
- {file = "tokenizers-0.19.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:1f0360cbea28ea99944ac089c00de7b2e3e1c58f479fb8613b6d8d511ce98267"},
- {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:71e3ec71f0e78780851fef28c2a9babe20270404c921b756d7c532d280349214"},
- {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b82931fa619dbad979c0ee8e54dd5278acc418209cc897e42fac041f5366d626"},
- {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e8ff5b90eabdcdaa19af697885f70fe0b714ce16709cf43d4952f1f85299e73a"},
- {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e742d76ad84acbdb1a8e4694f915fe59ff6edc381c97d6dfdd054954e3478ad4"},
- {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d8c5d59d7b59885eab559d5bc082b2985555a54cda04dda4c65528d90ad252ad"},
- {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b2da5c32ed869bebd990c9420df49813709e953674c0722ff471a116d97b22d"},
- {file = "tokenizers-0.19.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:638e43936cc8b2cbb9f9d8dde0fe5e7e30766a3318d2342999ae27f68fdc9bd6"},
- {file = "tokenizers-0.19.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:78e769eb3b2c79687d9cb0f89ef77223e8e279b75c0a968e637ca7043a84463f"},
- {file = "tokenizers-0.19.1-cp37-none-win32.whl", hash = "sha256:72791f9bb1ca78e3ae525d4782e85272c63faaef9940d92142aa3eb79f3407a3"},
- {file = "tokenizers-0.19.1-cp37-none-win_amd64.whl", hash = "sha256:f3bbb7a0c5fcb692950b041ae11067ac54826204318922da754f908d95619fbc"},
- {file = "tokenizers-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:07f9295349bbbcedae8cefdbcfa7f686aa420be8aca5d4f7d1ae6016c128c0c5"},
- {file = "tokenizers-0.19.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10a707cc6c4b6b183ec5dbfc5c34f3064e18cf62b4a938cb41699e33a99e03c1"},
- {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6309271f57b397aa0aff0cbbe632ca9d70430839ca3178bf0f06f825924eca22"},
- {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ad23d37d68cf00d54af184586d79b84075ada495e7c5c0f601f051b162112dc"},
- {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:427c4f0f3df9109314d4f75b8d1f65d9477033e67ffaec4bca53293d3aca286d"},
- {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e83a31c9cf181a0a3ef0abad2b5f6b43399faf5da7e696196ddd110d332519ee"},
- {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c27b99889bd58b7e301468c0838c5ed75e60c66df0d4db80c08f43462f82e0d3"},
- {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bac0b0eb952412b0b196ca7a40e7dce4ed6f6926489313414010f2e6b9ec2adf"},
- {file = "tokenizers-0.19.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8a6298bde623725ca31c9035a04bf2ef63208d266acd2bed8c2cb7d2b7d53ce6"},
- {file = "tokenizers-0.19.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:08a44864e42fa6d7d76d7be4bec62c9982f6f6248b4aa42f7302aa01e0abfd26"},
- {file = "tokenizers-0.19.1-cp38-none-win32.whl", hash = "sha256:1de5bc8652252d9357a666e609cb1453d4f8e160eb1fb2830ee369dd658e8975"},
- {file = "tokenizers-0.19.1-cp38-none-win_amd64.whl", hash = "sha256:0bcce02bf1ad9882345b34d5bd25ed4949a480cf0e656bbd468f4d8986f7a3f1"},
- {file = "tokenizers-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0b9394bd204842a2a1fd37fe29935353742be4a3460b6ccbaefa93f58a8df43d"},
- {file = "tokenizers-0.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4692ab92f91b87769d950ca14dbb61f8a9ef36a62f94bad6c82cc84a51f76f6a"},
- {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6258c2ef6f06259f70a682491c78561d492e885adeaf9f64f5389f78aa49a051"},
- {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c85cf76561fbd01e0d9ea2d1cbe711a65400092bc52b5242b16cfd22e51f0c58"},
- {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:670b802d4d82bbbb832ddb0d41df7015b3e549714c0e77f9bed3e74d42400fbe"},
- {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85aa3ab4b03d5e99fdd31660872249df5e855334b6c333e0bc13032ff4469c4a"},
- {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbf001afbbed111a79ca47d75941e9e5361297a87d186cbfc11ed45e30b5daba"},
- {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c89aa46c269e4e70c4d4f9d6bc644fcc39bb409cb2a81227923404dd6f5227"},
- {file = "tokenizers-0.19.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:39c1ec76ea1027438fafe16ecb0fb84795e62e9d643444c1090179e63808c69d"},
- {file = "tokenizers-0.19.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c2a0d47a89b48d7daa241e004e71fb5a50533718897a4cd6235cb846d511a478"},
- {file = "tokenizers-0.19.1-cp39-none-win32.whl", hash = "sha256:61b7fe8886f2e104d4caf9218b157b106207e0f2a4905c9c7ac98890688aabeb"},
- {file = "tokenizers-0.19.1-cp39-none-win_amd64.whl", hash = "sha256:f97660f6c43efd3e0bfd3f2e3e5615bf215680bad6ee3d469df6454b8c6e8256"},
- {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b11853f17b54c2fe47742c56d8a33bf49ce31caf531e87ac0d7d13d327c9334"},
- {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d26194ef6c13302f446d39972aaa36a1dda6450bc8949f5eb4c27f51191375bd"},
- {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e8d1ed93beda54bbd6131a2cb363a576eac746d5c26ba5b7556bc6f964425594"},
- {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca407133536f19bdec44b3da117ef0d12e43f6d4b56ac4c765f37eca501c7bda"},
- {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce05fde79d2bc2e46ac08aacbc142bead21614d937aac950be88dc79f9db9022"},
- {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:35583cd46d16f07c054efd18b5d46af4a2f070a2dd0a47914e66f3ff5efb2b1e"},
- {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:43350270bfc16b06ad3f6f07eab21f089adb835544417afda0f83256a8bf8b75"},
- {file = "tokenizers-0.19.1-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b4399b59d1af5645bcee2072a463318114c39b8547437a7c2d6a186a1b5a0e2d"},
- {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6852c5b2a853b8b0ddc5993cd4f33bfffdca4fcc5d52f89dd4b8eada99379285"},
- {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd266ae85c3d39df2f7e7d0e07f6c41a55e9a3123bb11f854412952deacd828"},
- {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecb2651956eea2aa0a2d099434134b1b68f1c31f9a5084d6d53f08ed43d45ff2"},
- {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b279ab506ec4445166ac476fb4d3cc383accde1ea152998509a94d82547c8e2a"},
- {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:89183e55fb86e61d848ff83753f64cded119f5d6e1f553d14ffee3700d0a4a49"},
- {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2edbc75744235eea94d595a8b70fe279dd42f3296f76d5a86dde1d46e35f574"},
- {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0e64bfde9a723274e9a71630c3e9494ed7b4c0f76a1faacf7fe294cd26f7ae7c"},
- {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0b5ca92bfa717759c052e345770792d02d1f43b06f9e790ca0a1db62838816f3"},
- {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f8a20266e695ec9d7a946a019c1d5ca4eddb6613d4f466888eee04f16eedb85"},
- {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63c38f45d8f2a2ec0f3a20073cccb335b9f99f73b3c69483cd52ebc75369d8a1"},
- {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dd26e3afe8a7b61422df3176e06664503d3f5973b94f45d5c45987e1cb711876"},
- {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:eddd5783a4a6309ce23432353cdb36220e25cbb779bfa9122320666508b44b88"},
- {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:56ae39d4036b753994476a1b935584071093b55c7a72e3b8288e68c313ca26e7"},
- {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f9939ca7e58c2758c01b40324a59c034ce0cebad18e0d4563a9b1beab3018243"},
- {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c330c0eb815d212893c67a032e9dc1b38a803eccb32f3e8172c19cc69fbb439"},
- {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec11802450a2487cdf0e634b750a04cbdc1c4d066b97d94ce7dd2cb51ebb325b"},
- {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b718f316b596f36e1dae097a7d5b91fc5b85e90bf08b01ff139bd8953b25af"},
- {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ed69af290c2b65169f0ba9034d1dc39a5db9459b32f1dd8b5f3f32a3fcf06eab"},
- {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f8a9c828277133af13f3859d1b6bf1c3cb6e9e1637df0e45312e6b7c2e622b1f"},
- {file = "tokenizers-0.19.1.tar.gz", hash = "sha256:ee59e6680ed0fdbe6b724cf38bd70400a0c1dd623b07ac729087270caeac88e3"},
+ {file = "tokenizers-0.20.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:31ccab28dbb1a9fe539787210b0026e22debeab1662970f61c2d921f7557f7e4"},
+ {file = "tokenizers-0.20.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6361191f762bda98c773da418cf511cbaa0cb8d0a1196f16f8c0119bde68ff8"},
+ {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f128d5da1202b78fa0a10d8d938610472487da01b57098d48f7e944384362514"},
+ {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:79c4121a2e9433ad7ef0769b9ca1f7dd7fa4c0cd501763d0a030afcbc6384481"},
+ {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7850fde24197fe5cd6556e2fdba53a6d3bae67c531ea33a3d7c420b90904141"},
+ {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b357970c095dc134978a68c67d845a1e3803ab7c4fbb39195bde914e7e13cf8b"},
+ {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a333d878c4970b72d6c07848b90c05f6b045cf9273fc2bc04a27211721ad6118"},
+ {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fd9fee817f655a8f50049f685e224828abfadd436b8ff67979fc1d054b435f1"},
+ {file = "tokenizers-0.20.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e7816808b402129393a435ea2a509679b41246175d6e5e9f25b8692bfaa272b"},
+ {file = "tokenizers-0.20.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba96367db9d8a730d3a1d5996b4b7babb846c3994b8ef14008cd8660f55db59d"},
+ {file = "tokenizers-0.20.3-cp310-none-win32.whl", hash = "sha256:ee31ba9d7df6a98619426283e80c6359f167e2e9882d9ce1b0254937dbd32f3f"},
+ {file = "tokenizers-0.20.3-cp310-none-win_amd64.whl", hash = "sha256:a845c08fdad554fe0871d1255df85772f91236e5fd6b9287ef8b64f5807dbd0c"},
+ {file = "tokenizers-0.20.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:585b51e06ca1f4839ce7759941e66766d7b060dccfdc57c4ca1e5b9a33013a90"},
+ {file = "tokenizers-0.20.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61cbf11954f3b481d08723ebd048ba4b11e582986f9be74d2c3bdd9293a4538d"},
+ {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef820880d5e4e8484e2fa54ff8d297bb32519eaa7815694dc835ace9130a3eea"},
+ {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:67ef4dcb8841a4988cd00dd288fb95dfc8e22ed021f01f37348fd51c2b055ba9"},
+ {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff1ef8bd47a02b0dc191688ccb4da53600df5d4c9a05a4b68e1e3de4823e78eb"},
+ {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:444d188186eab3148baf0615b522461b41b1f0cd58cd57b862ec94b6ac9780f1"},
+ {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37c04c032c1442740b2c2d925f1857885c07619224a533123ac7ea71ca5713da"},
+ {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:453c7769d22231960ee0e883d1005c93c68015025a5e4ae56275406d94a3c907"},
+ {file = "tokenizers-0.20.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4bb31f7b2847e439766aaa9cc7bccf7ac7088052deccdb2275c952d96f691c6a"},
+ {file = "tokenizers-0.20.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:843729bf0f991b29655a069a2ff58a4c24375a553c70955e15e37a90dd4e045c"},
+ {file = "tokenizers-0.20.3-cp311-none-win32.whl", hash = "sha256:efcce3a927b1e20ca694ba13f7a68c59b0bd859ef71e441db68ee42cf20c2442"},
+ {file = "tokenizers-0.20.3-cp311-none-win_amd64.whl", hash = "sha256:88301aa0801f225725b6df5dea3d77c80365ff2362ca7e252583f2b4809c4cc0"},
+ {file = "tokenizers-0.20.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49d12a32e190fad0e79e5bdb788d05da2f20d8e006b13a70859ac47fecf6ab2f"},
+ {file = "tokenizers-0.20.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:282848cacfb9c06d5e51489f38ec5aa0b3cd1e247a023061945f71f41d949d73"},
+ {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe4e08c7d0cd6154c795deb5bf81d2122f36daf075e0c12a8b050d824ef0a64"},
+ {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca94fc1b73b3883c98f0c88c77700b13d55b49f1071dfd57df2b06f3ff7afd64"},
+ {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef279c7e239f95c8bdd6ff319d9870f30f0d24915b04895f55b1adcf96d6c60d"},
+ {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16384073973f6ccbde9852157a4fdfe632bb65208139c9d0c0bd0176a71fd67f"},
+ {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:312d522caeb8a1a42ebdec87118d99b22667782b67898a76c963c058a7e41d4f"},
+ {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2b7cb962564785a83dafbba0144ecb7f579f1d57d8c406cdaa7f32fe32f18ad"},
+ {file = "tokenizers-0.20.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:124c5882ebb88dadae1fc788a582299fcd3a8bd84fc3e260b9918cf28b8751f5"},
+ {file = "tokenizers-0.20.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2b6e54e71f84c4202111a489879005cb14b92616a87417f6c102c833af961ea2"},
+ {file = "tokenizers-0.20.3-cp312-none-win32.whl", hash = "sha256:83d9bfbe9af86f2d9df4833c22e94d94750f1d0cd9bfb22a7bb90a86f61cdb1c"},
+ {file = "tokenizers-0.20.3-cp312-none-win_amd64.whl", hash = "sha256:44def74cee574d609a36e17c8914311d1b5dbcfe37c55fd29369d42591b91cf2"},
+ {file = "tokenizers-0.20.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e0b630e0b536ef0e3c8b42c685c1bc93bd19e98c0f1543db52911f8ede42cf84"},
+ {file = "tokenizers-0.20.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a02d160d2b19bcbfdf28bd9a4bf11be4cb97d0499c000d95d4c4b1a4312740b6"},
+ {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e3d80d89b068bc30034034b5319218c7c0a91b00af19679833f55f3becb6945"},
+ {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:174a54910bed1b089226512b4458ea60d6d6fd93060254734d3bc3540953c51c"},
+ {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:098b8a632b8656aa5802c46689462c5c48f02510f24029d71c208ec2c822e771"},
+ {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:78c8c143e3ae41e718588281eb3e212c2b31623c9d6d40410ec464d7d6221fb5"},
+ {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b26b0aadb18cd8701077362ba359a06683662d5cafe3e8e8aba10eb05c037f1"},
+ {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07d7851a72717321022f3774e84aa9d595a041d643fafa2e87fbc9b18711dac0"},
+ {file = "tokenizers-0.20.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:bd44e48a430ada902c6266a8245f5036c4fe744fcb51f699999fbe82aa438797"},
+ {file = "tokenizers-0.20.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a4c186bb006ccbe1f5cc4e0380d1ce7806f5955c244074fd96abc55e27b77f01"},
+ {file = "tokenizers-0.20.3-cp313-none-win32.whl", hash = "sha256:6e19e0f1d854d6ab7ea0c743d06e764d1d9a546932be0a67f33087645f00fe13"},
+ {file = "tokenizers-0.20.3-cp313-none-win_amd64.whl", hash = "sha256:d50ede425c7e60966a9680d41b58b3a0950afa1bb570488e2972fa61662c4273"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:9adda1ff5fb9dcdf899ceca672a4e2ce9e797adb512a6467305ca3d8bfcfbdd0"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:6dde2cae6004ba7a3badff4a11911cae03ebf23e97eebfc0e71fef2530e5074f"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4a7fd678b35614fca708579eb95b7587a5e8a6d328171bd2488fd9f27d82be4"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b80e3c7283a01a356bd2210f53d1a4a5d32b269c2024389ed0173137708d50e"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8cc0e8176b762973758a77f0d9c4467d310e33165fb74173418ca3734944da4"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5634b2e2f5f3d2b4439d2d74066e22eb4b1f04f3fea05cb2a3c12d89b5a3bcd"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b4ba635165bc1ea46f2da8e5d80b5f70f6ec42161e38d96dbef33bb39df73964"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18e4c7c64172e7789bd8b07aa3087ea87c4c4de7e90937a2aa036b5d92332536"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1f74909ef7675c26d4095a817ec3393d67f3158ca4836c233212e5613ef640c4"},
+ {file = "tokenizers-0.20.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0e9b81321a1e05b16487d312b4264984513f8b4a7556229cafac6e88c2036b09"},
+ {file = "tokenizers-0.20.3-cp37-none-win32.whl", hash = "sha256:ab48184cd58b4a03022a2ec75b54c9f600ffea9a733612c02325ed636f353729"},
+ {file = "tokenizers-0.20.3-cp37-none-win_amd64.whl", hash = "sha256:60ac483cebee1c12c71878523e768df02fa17e4c54412966cb3ac862c91b36c1"},
+ {file = "tokenizers-0.20.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3229ef103c89583d10b9378afa5d601b91e6337530a0988e17ca8d635329a996"},
+ {file = "tokenizers-0.20.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6ac52cc24bad3de865c7e65b1c4e7b70d00938a8ae09a92a453b8f676e714ad5"},
+ {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04627b7b502fa6a2a005e1bd446fa4247d89abcb1afaa1b81eb90e21aba9a60f"},
+ {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c27ceb887f0e81a3c377eb4605dca7a95a81262761c0fba308d627b2abb98f2b"},
+ {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65ab780194da4e1fcf5670523a2f377c4838ebf5249efe41fa1eddd2a84fb49d"},
+ {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98d343134f47159e81f7f242264b0eb222e6b802f37173c8d7d7b64d5c9d1388"},
+ {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2475bb004ab2009d29aff13b5047bfdb3d4b474f0aa9d4faa13a7f34dbbbb43"},
+ {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b6583a65c01db1197c1eb36857ceba8ec329d53afadd268b42a6b04f4965724"},
+ {file = "tokenizers-0.20.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:62d00ba208358c037eeab7bfc00a905adc67b2d31b68ab40ed09d75881e114ea"},
+ {file = "tokenizers-0.20.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0fc7a39e5bedc817bda395a798dfe2d9c5f7c71153c90d381b5135a0328d9520"},
+ {file = "tokenizers-0.20.3-cp38-none-win32.whl", hash = "sha256:84d40ee0f8550d64d3ea92dd7d24a8557a9172165bdb986c9fb2503b4fe4e3b6"},
+ {file = "tokenizers-0.20.3-cp38-none-win_amd64.whl", hash = "sha256:205a45246ed7f1718cf3785cff88450ba603352412aaf220ace026384aa3f1c0"},
+ {file = "tokenizers-0.20.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:93e37f0269a11dc3b1a953f1fca9707f0929ebf8b4063c591c71a0664219988e"},
+ {file = "tokenizers-0.20.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f4cb0c614b0135e781de96c2af87e73da0389ac1458e2a97562ed26e29490d8d"},
+ {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7eb2fb1c432f5746b22f8a7f09fc18c4156cb0031c77f53cb19379d82d43297a"},
+ {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfa8d029bb156181b006643309d6b673615a24e4ed24cf03aa191d599b996f51"},
+ {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f90549622de3bf476ad9f1dd6f3f952ec3ed6ab8615ae88ef060d0c5bfad55d"},
+ {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1d469c74eebf5c43fd61cd9b030e271d17198edd7bd45392e03a3c091d7d6d4"},
+ {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bee8f53b2594749f4460d53253bae55d718f04e9b633efa0f5df8938bd98e4f0"},
+ {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:938441babf3e5720e4459e306ef2809fb267680df9d1ff2873458b22aef60248"},
+ {file = "tokenizers-0.20.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7310ab23d7b0caebecc0e8be11a1146f320f5f07284000f6ea54793e83de1b75"},
+ {file = "tokenizers-0.20.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:16121eb030a2b13094cfec936b0c12e8b4063c5f839591ea7d0212336d8f9921"},
+ {file = "tokenizers-0.20.3-cp39-none-win32.whl", hash = "sha256:401cc21ef642ee235985d747f65e18f639464d377c70836c9003df208d582064"},
+ {file = "tokenizers-0.20.3-cp39-none-win_amd64.whl", hash = "sha256:7498f3ea7746133335a6adb67a77cf77227a8b82c8483f644a2e5f86fea42b8d"},
+ {file = "tokenizers-0.20.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e919f2e3e68bb51dc31de4fcbbeff3bdf9c1cad489044c75e2b982a91059bd3c"},
+ {file = "tokenizers-0.20.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b8e9608f2773996cc272156e305bd79066163a66b0390fe21750aff62df1ac07"},
+ {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39270a7050deaf50f7caff4c532c01b3c48f6608d42b3eacdebdc6795478c8df"},
+ {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e005466632b1c5d2d2120f6de8aa768cc9d36cd1ab7d51d0c27a114c91a1e6ee"},
+ {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a07962340b36189b6c8feda552ea1bfeee6cf067ff922a1d7760662c2ee229e5"},
+ {file = "tokenizers-0.20.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:55046ad3dd5f2b3c67501fcc8c9cbe3e901d8355f08a3b745e9b57894855f85b"},
+ {file = "tokenizers-0.20.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:efcf0eb939988b627558aaf2b9dc3e56d759cad2e0cfa04fcab378e4b48fc4fd"},
+ {file = "tokenizers-0.20.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f3558a7ae6a6d38a77dfce12172a1e2e1bf3e8871e744a1861cd7591ea9ebe24"},
+ {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d53029fe44bc70c3ff14ef512460a0cf583495a0f8e2f4b70e26eb9438e38a9"},
+ {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57a2a56397b2bec5a629b516b23f0f8a3e4f978c7488d4a299980f8375954b85"},
+ {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e5bfaae740ef9ece000f8a07e78ac0e2b085c5ce9648f8593ddf0243c9f76d"},
+ {file = "tokenizers-0.20.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fbaf3ea28fedfb2283da60e710aff25492e795a7397cad8a50f1e079b65a5a70"},
+ {file = "tokenizers-0.20.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c47c037116310dc976eb96b008e41b9cfaba002ed8005848d4d632ee0b7ba9ae"},
+ {file = "tokenizers-0.20.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c31751f0721f58f5e19bb27c1acc259aeff860d8629c4e1a900b26a1979ada8e"},
+ {file = "tokenizers-0.20.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:c697cbd3be7a79ea250ea5f380d6f12e534c543cfb137d5c734966b3ee4f34cc"},
+ {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b48971b88ef9130bf35b41b35fd857c3c4dae4a9cd7990ebc7fc03e59cc92438"},
+ {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e615de179bbe060ab33773f0d98a8a8572b5883dd7dac66c1de8c056c7e748c"},
+ {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da1ec842035ed9999c62e45fbe0ff14b7e8a7e02bb97688cc6313cf65e5cd755"},
+ {file = "tokenizers-0.20.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6ee4954c1dd23aadc27958dad759006e71659d497dcb0ef0c7c87ea992c16ebd"},
+ {file = "tokenizers-0.20.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3eda46ca402751ec82553a321bf35a617b76bbed7586e768c02ccacbdda94d6d"},
+ {file = "tokenizers-0.20.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:de082392a85eb0055cc055c535bff2f0cc15d7a000bdc36fbf601a0f3cf8507a"},
+ {file = "tokenizers-0.20.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3db46cc0647bfd88263afdb739b92017a02a87ee30945cb3e86c7e25c7c9917"},
+ {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a292392f24ab9abac5cfa8197e5a6208f2e43723420217e1ceba0b4ec77816ac"},
+ {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dcd91f4e60f62b20d83a87a84fe062035a1e3ff49a8c2bbdeb2d441c8e311f4"},
+ {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:900991a2b8ee35961b1095db7e265342e0e42a84c1a594823d5ee9f8fb791958"},
+ {file = "tokenizers-0.20.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5a8d8261ca2133d4f98aa9627c748189502b3787537ba3d7e2beb4f7cfc5d627"},
+ {file = "tokenizers-0.20.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c4fd4d71e6deb6ddf99d8d0eab87d1d16f635898906e631914a9bae8ae9f2cfb"},
+ {file = "tokenizers-0.20.3.tar.gz", hash = "sha256:2278b34c5d0dd78e087e1ca7f9b1dcbf129d80211afa645f214bd6e051037539"},
]
[package.dependencies]
@@ -2461,33 +2489,34 @@ url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-win_am
[[package]]
name = "tqdm"
-version = "4.66.5"
+version = "4.67.1"
description = "Fast, Extensible Progress Meter"
optional = false
python-versions = ">=3.7"
files = [
- {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"},
- {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"},
+ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"},
+ {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"},
]
[package.dependencies]
colorama = {version = "*", markers = "platform_system == \"Windows\""}
[package.extras]
-dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
+dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"]
+discord = ["requests"]
notebook = ["ipywidgets (>=6)"]
slack = ["slack-sdk"]
telegram = ["requests"]
[[package]]
name = "transformers"
-version = "4.44.2"
+version = "4.46.3"
description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow"
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "transformers-4.44.2-py3-none-any.whl", hash = "sha256:1c02c65e7bfa5e52a634aff3da52138b583fc6f263c1f28d547dc144ba3d412d"},
- {file = "transformers-4.44.2.tar.gz", hash = "sha256:36aa17cc92ee154058e426d951684a2dab48751b35b49437896f898931270826"},
+ {file = "transformers-4.46.3-py3-none-any.whl", hash = "sha256:a12ef6f52841fd190a3e5602145b542d03507222f2c64ebb7ee92e8788093aef"},
+ {file = "transformers-4.46.3.tar.gz", hash = "sha256:8ee4b3ae943fe33e82afff8e837f4b052058b07ca9be3cb5b729ed31295f72cc"},
]
[package.dependencies]
@@ -2499,21 +2528,21 @@ pyyaml = ">=5.1"
regex = "!=2019.12.17"
requests = "*"
safetensors = ">=0.4.1"
-tokenizers = ">=0.19,<0.20"
+tokenizers = ">=0.20,<0.21"
tqdm = ">=4.27"
[package.extras]
-accelerate = ["accelerate (>=0.21.0)"]
-agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"]
-all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision"]
+accelerate = ["accelerate (>=0.26.0)"]
+agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"]
+all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision"]
audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"]
-benchmark = ["optimum-benchmark (>=0.2.0)"]
+benchmark = ["optimum-benchmark (>=0.3.0)"]
codecarbon = ["codecarbon (==1.2.0)"]
-deepspeed = ["accelerate (>=0.21.0)", "deepspeed (>=0.9.3)"]
-deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.21.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"]
-dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"]
-dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.19,<0.20)", "urllib3 (<2.0.0)"]
-dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"]
+deepspeed = ["accelerate (>=0.26.0)", "deepspeed (>=0.9.3)"]
+deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.26.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk (<=3.8.1)", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"]
+dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "libcst", "librosa", "nltk (<=3.8.1)", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"]
+dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "libcst", "librosa", "nltk (<=3.8.1)", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.20,<0.21)", "urllib3 (<2.0.0)"]
+dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "libcst", "librosa", "nltk (<=3.8.1)", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"]
flax = ["flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "optax (>=0.0.8,<=0.1.4)", "scipy (<1.13.0)"]
flax-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"]
ftfy = ["ftfy"]
@@ -2524,7 +2553,7 @@ natten = ["natten (>=0.14.6,<0.15.0)"]
onnx = ["onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "tf2onnx"]
onnxruntime = ["onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)"]
optuna = ["optuna"]
-quality = ["GitPython (<3.1.19)", "datasets (!=2.5.0)", "isort (>=5.5.4)", "ruff (==0.5.1)", "urllib3 (<2.0.0)"]
+quality = ["GitPython (<3.1.19)", "datasets (!=2.5.0)", "isort (>=5.5.4)", "libcst", "rich", "ruff (==0.5.1)", "urllib3 (<2.0.0)"]
ray = ["ray[tune] (>=2.7.0)"]
retrieval = ["datasets (!=2.5.0)", "faiss-cpu"]
ruff = ["ruff (==0.5.1)"]
@@ -2534,28 +2563,29 @@ serving = ["fastapi", "pydantic", "starlette", "uvicorn"]
sigopt = ["sigopt"]
sklearn = ["scikit-learn"]
speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"]
-testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk", "parameterized", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"]
+testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk (<=3.8.1)", "parameterized", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"]
tf = ["keras-nlp (>=0.3.1,<0.14.0)", "onnxconverter-common", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"]
tf-cpu = ["keras (>2.9,<2.16)", "keras-nlp (>=0.3.1,<0.14.0)", "onnxconverter-common", "tensorflow-cpu (>2.9,<2.16)", "tensorflow-probability (<0.24)", "tensorflow-text (<2.16)", "tf2onnx"]
tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"]
+tiktoken = ["blobfile", "tiktoken"]
timm = ["timm (<=0.9.16)"]
-tokenizers = ["tokenizers (>=0.19,<0.20)"]
-torch = ["accelerate (>=0.21.0)", "torch"]
+tokenizers = ["tokenizers (>=0.20,<0.21)"]
+torch = ["accelerate (>=0.26.0)", "torch"]
torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"]
torch-vision = ["Pillow (>=10.0.1,<=15.0)", "torchvision"]
-torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.19,<0.20)", "torch", "tqdm (>=4.27)"]
-video = ["av (==9.2.0)", "decord (==0.6.0)"]
+torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.20,<0.21)", "torch", "tqdm (>=4.27)"]
+video = ["av (==9.2.0)"]
vision = ["Pillow (>=10.0.1,<=15.0)"]
[[package]]
name = "types-requests"
-version = "2.32.0.20240712"
+version = "2.32.0.20241016"
description = "Typing stubs for requests"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"},
- {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"},
+ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"},
+ {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"},
]
[package.dependencies]
@@ -2574,24 +2604,24 @@ files = [
[[package]]
name = "tzdata"
-version = "2024.1"
+version = "2024.2"
description = "Provider of IANA time zone data"
optional = false
python-versions = ">=2"
files = [
- {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
- {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
+ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"},
+ {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"},
]
[[package]]
name = "urllib3"
-version = "2.2.2"
+version = "2.2.3"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.8"
files = [
- {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
- {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
+ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"},
+ {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"},
]
[package.extras]
@@ -2618,86 +2648,7 @@ h11 = ">=0.8"
[package.extras]
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
-[[package]]
-name = "wrapt"
-version = "1.16.0"
-description = "Module for decorators, wrappers and monkey patching."
-optional = false
-python-versions = ">=3.6"
-files = [
- {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
- {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
- {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
- {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
- {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
- {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
- {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
- {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
- {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
- {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
- {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
- {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
- {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
- {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
- {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
- {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
- {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
- {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
-]
-
[metadata]
lock-version = "2.0"
python-versions = "3.11.*"
-content-hash = "ca184fab8b4e9306d1960553353c1c2fb44940ea674d652b64731f4c155a5c8c"
+content-hash = "1de47add102985fa6559ff58110aa51469e8410588b0a5148a1abd9e48a7cecf"
diff --git a/modules/programming/module_programming_themisml/pyproject.toml b/modules/programming/module_programming_themisml/pyproject.toml
index 373956ee6..2195ac1d1 100644
--- a/modules/programming/module_programming_themisml/pyproject.toml
+++ b/modules/programming/module_programming_themisml/pyproject.toml
@@ -9,7 +9,7 @@ license = "MIT"
python = "3.11.*"
# if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible.
# athena = { path = "../athena", develop = true }
-athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"}
+athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"}
antlr4-python3-runtime = "^4.13.1"
code-bert-score = "^0.4.1"
torch = [
diff --git a/modules/text/module_text_cofee/poetry.lock b/modules/text/module_text_cofee/poetry.lock
index 3e062e2d7..660f4eef4 100644
--- a/modules/text/module_text_cofee/poetry.lock
+++ b/modules/text/module_text_cofee/poetry.lock
@@ -2,13 +2,13 @@
[[package]]
name = "anyio"
-version = "4.4.0"
+version = "4.6.2.post1"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"},
- {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"},
+ {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"},
+ {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"},
]
[package.dependencies]
@@ -16,25 +16,21 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
-trio = ["trio (>=0.23)"]
+doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
+trio = ["trio (>=0.26.1)"]
[[package]]
name = "astroid"
-version = "2.15.8"
+version = "3.3.5"
description = "An abstract syntax tree for Python with inference support."
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"},
- {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"},
+ {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"},
+ {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"},
]
-[package.dependencies]
-lazy-object-proxy = ">=1.4.0"
-wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}
-
[[package]]
name = "athena"
version = "1.0.0"
@@ -55,8 +51,8 @@ uvicorn = "^0.23.0"
[package.source]
type = "git"
url = "https://github.com/ls1intum/Athena.git"
-reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
-resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378"
+reference = "bbb2bb0"
+resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2"
subdirectory = "athena"
[[package]]
@@ -72,101 +68,116 @@ files = [
[[package]]
name = "charset-normalizer"
-version = "3.3.2"
+version = "3.4.0"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
optional = false
python-versions = ">=3.7.0"
files = [
- {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
- {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
- {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
- {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
- {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
- {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
- {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
- {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"},
+ {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"},
+ {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"},
+ {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"},
+ {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"},
+ {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"},
+ {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"},
+ {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"},
+ {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"},
+ {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"},
]
[[package]]
@@ -196,13 +207,13 @@ files = [
[[package]]
name = "dill"
-version = "0.3.8"
+version = "0.3.9"
description = "serialize all of Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
- {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
+ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
+ {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
]
[package.extras]
@@ -241,19 +252,19 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)"
[[package]]
name = "flake8"
-version = "5.0.4"
+version = "7.1.1"
description = "the modular source code checker: pep8 pyflakes and co"
optional = false
-python-versions = ">=3.6.1"
+python-versions = ">=3.8.1"
files = [
- {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"},
- {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"},
+ {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"},
+ {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"},
]
[package.dependencies]
mccabe = ">=0.7.0,<0.8.0"
-pycodestyle = ">=2.9.0,<2.10.0"
-pyflakes = ">=2.5.0,<2.6.0"
+pycodestyle = ">=2.12.0,<2.13.0"
+pyflakes = ">=3.2.0,<3.3.0"
[[package]]
name = "flake8-polyfill"
@@ -303,69 +314,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit",
[[package]]
name = "greenlet"
-version = "3.0.3"
+version = "3.1.1"
description = "Lightweight in-process concurrent programming"
optional = false
python-versions = ">=3.7"
files = [
- {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"},
- {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"},
- {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"},
- {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"},
- {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"},
- {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"},
- {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"},
- {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"},
- {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"},
- {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"},
- {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"},
- {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"},
- {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"},
- {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"},
- {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"},
- {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"},
- {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"},
- {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"},
- {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"},
- {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"},
- {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"},
- {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"},
- {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"},
- {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"},
- {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"},
- {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"},
- {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"},
- {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"},
+ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"},
+ {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"},
+ {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"},
+ {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"},
+ {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"},
+ {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"},
+ {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"},
+ {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"},
+ {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"},
+ {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"},
+ {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"},
+ {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"},
+ {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"},
+ {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"},
+ {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"},
+ {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"},
+ {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"},
+ {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"},
+ {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"},
+ {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"},
+ {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"},
+ {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"},
+ {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"},
+ {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"},
+ {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"},
+ {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"},
+ {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"},
+ {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"},
+ {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"},
+ {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"},
+ {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"},
+ {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"},
]
[package.extras]
@@ -429,15 +455,18 @@ socks = ["socksio (==1.*)"]
[[package]]
name = "idna"
-version = "3.8"
+version = "3.10"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.6"
files = [
- {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"},
- {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"},
+ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
+ {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
]
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
[[package]]
name = "isort"
version = "5.13.2"
@@ -452,52 +481,6 @@ files = [
[package.extras]
colors = ["colorama (>=0.4.6)"]
-[[package]]
-name = "lazy-object-proxy"
-version = "1.10.0"
-description = "A fast and thorough lazy object proxy."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
- {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
-]
-
[[package]]
name = "mccabe"
version = "0.7.0"
@@ -511,38 +494,43 @@ files = [
[[package]]
name = "mypy"
-version = "1.11.2"
+version = "1.13.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"},
- {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"},
- {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"},
- {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"},
- {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"},
- {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"},
- {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"},
- {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"},
- {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"},
- {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"},
- {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"},
- {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"},
- {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"},
- {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"},
- {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"},
- {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"},
- {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"},
- {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"},
- {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"},
- {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"},
- {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"},
- {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"},
- {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
+ {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
+ {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"},
+ {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"},
+ {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"},
+ {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"},
+ {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"},
+ {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"},
+ {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"},
+ {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"},
+ {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"},
+ {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"},
+ {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"},
+ {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"},
+ {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"},
+ {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"},
+ {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"},
+ {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"},
+ {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"},
+ {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"},
+ {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"},
+ {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"},
+ {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"},
+ {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"},
+ {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"},
+ {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"},
+ {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"},
]
[package.dependencies]
@@ -551,6 +539,7 @@ typing-extensions = ">=4.6.0"
[package.extras]
dmypy = ["psutil (>=4.0)"]
+faster-cache = ["orjson"]
install-types = ["pip"]
mypyc = ["setuptools (>=50)"]
reports = ["lxml"]
@@ -568,13 +557,13 @@ files = [
[[package]]
name = "packaging"
-version = "24.1"
+version = "24.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
- {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
+ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"},
+ {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
]
[[package]]
@@ -593,110 +582,105 @@ flake8-polyfill = ">=1.0.2,<2"
[[package]]
name = "platformdirs"
-version = "4.2.2"
+version = "4.3.6"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
python-versions = ">=3.8"
files = [
- {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
- {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
+ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"},
+ {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"},
]
[package.extras]
-docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
-type = ["mypy (>=1.8)"]
+docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"]
+type = ["mypy (>=1.11.2)"]
[[package]]
name = "prospector"
-version = "1.10.3"
+version = "1.13.3"
description = "Prospector is a tool to analyse Python code by aggregating the result of other tools."
optional = false
-python-versions = ">=3.7.2,<4.0"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"},
- {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"},
+ {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"},
+ {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"},
]
[package.dependencies]
dodgy = ">=0.2.1,<0.3.0"
-flake8 = "<6.0.0"
GitPython = ">=3.1.27,<4.0.0"
mccabe = ">=0.7.0,<0.8.0"
packaging = "*"
pep8-naming = ">=0.3.3,<=0.10.0"
pycodestyle = ">=2.9.0"
pydocstyle = ">=2.0.0"
-pyflakes = ">=2.2.0,<3"
-pylint = ">=2.8.3"
+pyflakes = ">=2.2.0"
+pylint = ">=3.0"
pylint-celery = "0.3"
-pylint-django = ">=2.5,<2.6"
+pylint-django = ">=2.6.1"
pylint-flask = "0.6"
-pylint-plugin-utils = ">=0.7,<0.8"
PyYAML = "*"
-requirements-detector = ">=1.2.0"
+requirements-detector = ">=1.3.2"
setoptconf-tmp = ">=0.3.1,<0.4.0"
toml = ">=0.10.2,<0.11.0"
[package.extras]
with-bandit = ["bandit (>=1.5.1)"]
-with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"]
+with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"]
with-mypy = ["mypy (>=0.600)"]
with-pyright = ["pyright (>=1.1.3)"]
with-pyroma = ["pyroma (>=2.4)"]
+with-ruff = ["ruff"]
with-vulture = ["vulture (>=1.5)"]
[[package]]
name = "protobuf"
-version = "4.25.4"
+version = "4.25.5"
description = ""
optional = false
python-versions = ">=3.8"
files = [
- {file = "protobuf-4.25.4-cp310-abi3-win32.whl", hash = "sha256:db9fd45183e1a67722cafa5c1da3e85c6492a5383f127c86c4c4aa4845867dc4"},
- {file = "protobuf-4.25.4-cp310-abi3-win_amd64.whl", hash = "sha256:ba3d8504116a921af46499471c63a85260c1a5fc23333154a427a310e015d26d"},
- {file = "protobuf-4.25.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:eecd41bfc0e4b1bd3fa7909ed93dd14dd5567b98c941d6c1ad08fdcab3d6884b"},
- {file = "protobuf-4.25.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:4c8a70fdcb995dcf6c8966cfa3a29101916f7225e9afe3ced4395359955d3835"},
- {file = "protobuf-4.25.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:3319e073562e2515c6ddc643eb92ce20809f5d8f10fead3332f71c63be6a7040"},
- {file = "protobuf-4.25.4-cp38-cp38-win32.whl", hash = "sha256:7e372cbbda66a63ebca18f8ffaa6948455dfecc4e9c1029312f6c2edcd86c4e1"},
- {file = "protobuf-4.25.4-cp38-cp38-win_amd64.whl", hash = "sha256:051e97ce9fa6067a4546e75cb14f90cf0232dcb3e3d508c448b8d0e4265b61c1"},
- {file = "protobuf-4.25.4-cp39-cp39-win32.whl", hash = "sha256:90bf6fd378494eb698805bbbe7afe6c5d12c8e17fca817a646cd6a1818c696ca"},
- {file = "protobuf-4.25.4-cp39-cp39-win_amd64.whl", hash = "sha256:ac79a48d6b99dfed2729ccccee547b34a1d3d63289c71cef056653a846a2240f"},
- {file = "protobuf-4.25.4-py3-none-any.whl", hash = "sha256:bfbebc1c8e4793cfd58589acfb8a1026be0003e852b9da7db5a4285bde996978"},
- {file = "protobuf-4.25.4.tar.gz", hash = "sha256:0dc4a62cc4052a036ee2204d26fe4d835c62827c855c8a03f29fe6da146b380d"},
+ {file = "protobuf-4.25.5-cp310-abi3-win32.whl", hash = "sha256:5e61fd921603f58d2f5acb2806a929b4675f8874ff5f330b7d6f7e2e784bbcd8"},
+ {file = "protobuf-4.25.5-cp310-abi3-win_amd64.whl", hash = "sha256:4be0571adcbe712b282a330c6e89eae24281344429ae95c6d85e79e84780f5ea"},
+ {file = "protobuf-4.25.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:b2fde3d805354df675ea4c7c6338c1aecd254dfc9925e88c6d31a2bcb97eb173"},
+ {file = "protobuf-4.25.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:919ad92d9b0310070f8356c24b855c98df2b8bd207ebc1c0c6fcc9ab1e007f3d"},
+ {file = "protobuf-4.25.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fe14e16c22be926d3abfcb500e60cab068baf10b542b8c858fa27e098123e331"},
+ {file = "protobuf-4.25.5-cp38-cp38-win32.whl", hash = "sha256:98d8d8aa50de6a2747efd9cceba361c9034050ecce3e09136f90de37ddba66e1"},
+ {file = "protobuf-4.25.5-cp38-cp38-win_amd64.whl", hash = "sha256:b0234dd5a03049e4ddd94b93400b67803c823cfc405689688f59b34e0742381a"},
+ {file = "protobuf-4.25.5-cp39-cp39-win32.whl", hash = "sha256:abe32aad8561aa7cc94fc7ba4fdef646e576983edb94a73381b03c53728a626f"},
+ {file = "protobuf-4.25.5-cp39-cp39-win_amd64.whl", hash = "sha256:7a183f592dc80aa7c8da7ad9e55091c4ffc9497b3054452d629bb85fa27c2a45"},
+ {file = "protobuf-4.25.5-py3-none-any.whl", hash = "sha256:0aebecb809cae990f8129ada5ca273d9d670b76d9bfc9b1809f0a9c02b7dbf41"},
+ {file = "protobuf-4.25.5.tar.gz", hash = "sha256:7f8249476b4a9473645db7f8ab42b02fe1488cbe5fb72fddd445e0665afd8584"},
]
[[package]]
name = "psycopg2"
-version = "2.9.9"
+version = "2.9.10"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"},
- {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"},
- {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"},
- {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"},
- {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"},
- {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"},
- {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"},
- {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"},
- {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"},
- {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"},
- {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"},
- {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"},
+ {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"},
+ {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"},
+ {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"},
+ {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"},
+ {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"},
]
[[package]]
name = "pycodestyle"
-version = "2.9.1"
+version = "2.12.1"
description = "Python style guide checker"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"},
- {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"},
+ {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"},
+ {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"},
]
[[package]]
@@ -777,31 +761,31 @@ toml = ["tomli (>=1.2.3)"]
[[package]]
name = "pyflakes"
-version = "2.5.0"
+version = "3.2.0"
description = "passive checker of Python programs"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.8"
files = [
- {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"},
- {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"},
+ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"},
+ {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"},
]
[[package]]
name = "pylint"
-version = "2.17.7"
+version = "3.3.2"
description = "python code static checker"
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.9.0"
files = [
- {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"},
- {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"},
+ {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"},
+ {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"},
]
[package.dependencies]
-astroid = ">=2.15.8,<=2.17.0-dev0"
+astroid = ">=3.3.5,<=3.4.0-dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""}
-isort = ">=4.2.5,<6"
+isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2.0"
tomlkit = ">=0.10.1"
@@ -827,22 +811,21 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-django"
-version = "2.5.3"
+version = "2.6.1"
description = "A Pylint plugin to help Pylint understand the Django web framework"
optional = false
-python-versions = "*"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"},
- {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"},
+ {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"},
+ {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"},
]
[package.dependencies]
-pylint = ">=2.0,<3"
-pylint-plugin-utils = ">=0.7"
+pylint = ">=3.0,<4"
+pylint-plugin-utils = ">=0.8"
[package.extras]
-for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"]
-with-django = ["Django"]
+with-django = ["Django (>=2.2)"]
[[package]]
name = "pylint-flask"
@@ -859,13 +842,13 @@ pylint-plugin-utils = ">=0.2.1"
[[package]]
name = "pylint-plugin-utils"
-version = "0.7"
+version = "0.8.2"
description = "Utilities and helpers for writing Pylint plugins"
optional = false
-python-versions = ">=3.6.2"
+python-versions = ">=3.7,<4.0"
files = [
- {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"},
- {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"},
+ {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"},
+ {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"},
]
[package.dependencies]
@@ -956,20 +939,19 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "requirements-detector"
-version = "1.2.2"
+version = "1.3.2"
description = "Python tool to find and list requirements of a Python project"
optional = false
-python-versions = ">=3.7,<4.0"
+python-versions = "<4.0,>=3.8"
files = [
- {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"},
- {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"},
+ {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"},
+ {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"},
]
[package.dependencies]
-astroid = ">=2.0,<3.0"
+astroid = ">=3.0,<4.0"
packaging = ">=21.3"
semver = ">=3.0.0,<4.0.0"
-toml = ">=0.10.2,<0.11.0"
[[package]]
name = "semver"
@@ -1031,60 +1013,68 @@ files = [
[[package]]
name = "sqlalchemy"
-version = "2.0.33"
+version = "2.0.36"
description = "Database Abstraction Library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"},
- {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"},
- {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"},
- {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"},
- {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"},
- {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"},
- {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"},
- {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"},
- {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"},
+ {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"},
+ {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"},
+ {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"},
+ {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"},
+ {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"},
+ {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"},
+ {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"},
+ {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"},
+ {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"},
]
[package.dependencies]
@@ -1098,7 +1088,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"]
aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"]
asyncio = ["greenlet (!=0.4.17)"]
asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"]
-mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"]
+mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"]
mssql = ["pyodbc"]
mssql-pymssql = ["pymssql"]
mssql-pyodbc = ["pyodbc"]
@@ -1158,13 +1148,13 @@ files = [
[[package]]
name = "types-requests"
-version = "2.32.0.20240712"
+version = "2.32.0.20241016"
description = "Typing stubs for requests"
optional = false
python-versions = ">=3.8"
files = [
- {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"},
- {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"},
+ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"},
+ {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"},
]
[package.dependencies]
@@ -1183,13 +1173,13 @@ files = [
[[package]]
name = "urllib3"
-version = "2.2.2"
+version = "2.2.3"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.8"
files = [
- {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"},
- {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"},
+ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"},
+ {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"},
]
[package.extras]
@@ -1216,86 +1206,7 @@ h11 = ">=0.8"
[package.extras]
standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"]
-[[package]]
-name = "wrapt"
-version = "1.16.0"
-description = "Module for decorators, wrappers and monkey patching."
-optional = false
-python-versions = ">=3.6"
-files = [
- {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
- {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
- {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
- {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
- {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
- {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
- {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
- {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
- {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
- {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
- {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
- {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
- {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
- {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
- {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
- {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
- {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
- {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
-]
-
[metadata]
lock-version = "2.0"
python-versions = "3.11.*"
-content-hash = "90fabf1e71be0d01fa12e6fb3163cab0f62cd681e595fc26b69a5d19fcfe193c"
+content-hash = "0b5c3beee31f9f29deb4a890e255fec1a2ce36943ec425203363287d008703e1"
diff --git a/modules/text/module_text_cofee/pyproject.toml b/modules/text/module_text_cofee/pyproject.toml
index b442e8148..3492f5c98 100644
--- a/modules/text/module_text_cofee/pyproject.toml
+++ b/modules/text/module_text_cofee/pyproject.toml
@@ -13,7 +13,7 @@ requests = "^2.31.0"
[tool.poetry.dev-dependencies]
# if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible.
# athena = { path = "../athena", develop = true }
-athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"}
+athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"}
pydantic = "1.10.17"
prospector = "^1.10.2"
From aa2679982fde95646f4f0bcec16f781ab1e5ad2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maximilian=20S=C3=B6lch?=
Date: Thu, 5 Dec 2024 17:32:41 +0100
Subject: [PATCH 3/3] ThemisML: Update torch version to 2.5.0 (#369)
---
.../module_programming_themisml/poetry.lock | 254 +++++++++++++++---
.../pyproject.toml | 8 +-
2 files changed, 227 insertions(+), 35 deletions(-)
diff --git a/modules/programming/module_programming_themisml/poetry.lock b/modules/programming/module_programming_themisml/poetry.lock
index fd20f77b0..8cceb7c1d 100644
--- a/modules/programming/module_programming_themisml/poetry.lock
+++ b/modules/programming/module_programming_themisml/poetry.lock
@@ -13,22 +13,23 @@ files = [
[[package]]
name = "anyio"
-version = "4.6.2.post1"
+version = "4.7.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
python-versions = ">=3.9"
files = [
- {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"},
- {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"},
+ {file = "anyio-4.7.0-py3-none-any.whl", hash = "sha256:ea60c3723ab42ba6fff7e8ccb0488c898ec538ff4df1f1d5e642c3601d07e352"},
+ {file = "anyio-4.7.0.tar.gz", hash = "sha256:2f834749c602966b7d456a7567cafcb309f96482b5081d14ac93ccd457f9dd48"},
]
[package.dependencies]
idna = ">=2.8"
sniffio = ">=1.1"
+typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
[package.extras]
-doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
+doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"]
trio = ["trio (>=0.26.1)"]
[[package]]
@@ -1209,6 +1210,149 @@ files = [
{file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"},
]
+[[package]]
+name = "nvidia-cublas-cu12"
+version = "12.1.3.1"
+description = "CUBLAS native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:ee53ccca76a6fc08fb9701aa95b6ceb242cdaab118c3bb152af4e579af792728"},
+ {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-win_amd64.whl", hash = "sha256:2b964d60e8cf11b5e1073d179d85fa340c120e99b3067558f3cf98dd69d02906"},
+]
+
+[[package]]
+name = "nvidia-cuda-cupti-cu12"
+version = "12.1.105"
+description = "CUDA profiling tools runtime libs."
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:e54fde3983165c624cb79254ae9818a456eb6e87a7fd4d56a2352c24ee542d7e"},
+ {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:bea8236d13a0ac7190bd2919c3e8e6ce1e402104276e6f9694479e48bb0eb2a4"},
+]
+
+[[package]]
+name = "nvidia-cuda-nvrtc-cu12"
+version = "12.1.105"
+description = "NVRTC native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:339b385f50c309763ca65456ec75e17bbefcbbf2893f462cb8b90584cd27a1c2"},
+ {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:0a98a522d9ff138b96c010a65e145dc1b4850e9ecb75a0172371793752fd46ed"},
+]
+
+[[package]]
+name = "nvidia-cuda-runtime-cu12"
+version = "12.1.105"
+description = "CUDA Runtime native Libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:6e258468ddf5796e25f1dc591a31029fa317d97a0a94ed93468fc86301d61e40"},
+ {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:dfb46ef84d73fababab44cf03e3b83f80700d27ca300e537f85f636fac474344"},
+]
+
+[[package]]
+name = "nvidia-cudnn-cu12"
+version = "9.1.0.70"
+description = "cuDNN runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f"},
+ {file = "nvidia_cudnn_cu12-9.1.0.70-py3-none-win_amd64.whl", hash = "sha256:6278562929433d68365a07a4a1546c237ba2849852c0d4b2262a486e805b977a"},
+]
+
+[package.dependencies]
+nvidia-cublas-cu12 = "*"
+
+[[package]]
+name = "nvidia-cufft-cu12"
+version = "11.0.2.54"
+description = "CUFFT native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl", hash = "sha256:794e3948a1aa71fd817c3775866943936774d1c14e7628c74f6f7417224cdf56"},
+ {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-win_amd64.whl", hash = "sha256:d9ac353f78ff89951da4af698f80870b1534ed69993f10a4cf1d96f21357e253"},
+]
+
+[[package]]
+name = "nvidia-curand-cu12"
+version = "10.3.2.106"
+description = "CURAND native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:9d264c5036dde4e64f1de8c50ae753237c12e0b1348738169cd0f8a536c0e1e0"},
+ {file = "nvidia_curand_cu12-10.3.2.106-py3-none-win_amd64.whl", hash = "sha256:75b6b0c574c0037839121317e17fd01f8a69fd2ef8e25853d826fec30bdba74a"},
+]
+
+[[package]]
+name = "nvidia-cusolver-cu12"
+version = "11.4.5.107"
+description = "CUDA solver native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd"},
+ {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-win_amd64.whl", hash = "sha256:74e0c3a24c78612192a74fcd90dd117f1cf21dea4822e66d89e8ea80e3cd2da5"},
+]
+
+[package.dependencies]
+nvidia-cublas-cu12 = "*"
+nvidia-cusparse-cu12 = "*"
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-cusparse-cu12"
+version = "12.1.0.106"
+description = "CUSPARSE native runtime libraries"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c"},
+ {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-win_amd64.whl", hash = "sha256:b798237e81b9719373e8fae8d4f091b70a0cf09d9d85c95a557e11df2d8e9a5a"},
+]
+
+[package.dependencies]
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-nccl-cu12"
+version = "2.21.5"
+description = "NVIDIA Collective Communication Library (NCCL) Runtime"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl", hash = "sha256:8579076d30a8c24988834445f8d633c697d42397e92ffc3f63fa26766d25e0a0"},
+]
+
+[[package]]
+name = "nvidia-nvjitlink-cu12"
+version = "12.6.85"
+description = "Nvidia JIT LTO Library"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:eedc36df9e88b682efe4309aa16b5b4e78c2407eac59e8c10a6a47535164369a"},
+ {file = "nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cf4eaa7d4b6b543ffd69d6abfb11efdeb2db48270d94dfd3a452c24150829e41"},
+ {file = "nvidia_nvjitlink_cu12-12.6.85-py3-none-win_amd64.whl", hash = "sha256:e61120e52ed675747825cdd16febc6a0730537451d867ee58bee3853b1b13d1c"},
+]
+
+[[package]]
+name = "nvidia-nvtx-cu12"
+version = "12.1.105"
+description = "NVIDIA Tools Extension"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:dc21cf308ca5691e7c04d962e213f8a4aa9bbfa23d95412f452254c2caeb09e5"},
+ {file = "nvidia_nvtx_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:65f4d98982b31b60026e0e6de73fbdfc09d08a96f4656dd3665ca616a11e1e82"},
+]
+
[[package]]
name = "packaging"
version = "24.2"
@@ -2219,13 +2363,13 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7
[[package]]
name = "sympy"
-version = "1.13.3"
+version = "1.13.1"
description = "Computer algebra system (CAS) in Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"},
- {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"},
+ {file = "sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8"},
+ {file = "sympy-1.13.1.tar.gz", hash = "sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f"},
]
[package.dependencies]
@@ -2387,12 +2531,12 @@ files = [
[[package]]
name = "torch"
-version = "2.1.0"
+version = "2.5.0"
description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "torch-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8132efb782cd181cc2dcca5e58effbe4217cdb2581206ac71466d535bf778867"},
+ {file = "torch-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:205a0ecbf85f4c7857cfdf4f6b0e07316bd929ed92482569e8f4524400559884"},
]
[package.dependencies]
@@ -2400,25 +2544,25 @@ filelock = "*"
fsspec = "*"
jinja2 = "*"
networkx = "*"
-sympy = "*"
-typing-extensions = "*"
+sympy = {version = "1.13.1", markers = "python_version >= \"3.9\""}
+typing-extensions = ">=4.8.0"
[package.extras]
-dynamo = ["jinja2"]
opt-einsum = ["opt-einsum (>=3.3)"]
+optree = ["optree (>=0.12.0)"]
[package.source]
type = "url"
-url = "https://download.pytorch.org/whl/cpu/torch-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+url = "https://download.pytorch.org/whl/cpu/torch-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
[[package]]
name = "torch"
-version = "2.1.0"
+version = "2.5.0"
description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "torch-2.1.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:3cd1dedff13884d890f18eea620184fb4cd8fd3c68ce3300498f427ae93aa962"},
+ {file = "torch-2.5.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:da77217ecd32e54c6249799547eeda105ebbaa8c3c745b591a5320e2bc243585"},
]
[package.dependencies]
@@ -2426,24 +2570,37 @@ filelock = "*"
fsspec = "*"
jinja2 = "*"
networkx = "*"
-sympy = "*"
-typing-extensions = "*"
+nvidia-cublas-cu12 = {version = "12.1.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-cupti-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-nvrtc-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-runtime-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cudnn-cu12 = {version = "9.1.0.70", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cufft-cu12 = {version = "11.0.2.54", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-curand-cu12 = {version = "10.3.2.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusolver-cu12 = {version = "11.4.5.107", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nccl-cu12 = {version = "2.21.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+sympy = {version = "1.13.1", markers = "python_version >= \"3.9\""}
+triton = {version = "3.1.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.13\""}
+typing-extensions = ">=4.8.0"
[package.extras]
opt-einsum = ["opt-einsum (>=3.3)"]
+optree = ["optree (>=0.12.0)"]
[package.source]
type = "url"
-url = "https://download.pytorch.org/whl/cpu/torch-2.1.0-cp311-none-macosx_11_0_arm64.whl"
+url = "https://download.pytorch.org/whl/cpu/torch-2.5.0-cp311-none-macosx_11_0_arm64.whl"
[[package]]
name = "torch"
-version = "2.1.0+cpu"
+version = "2.5.0+cpu"
description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "torch-2.1.0+cpu-cp311-cp311-linux_x86_64.whl", hash = "sha256:5954924ce74bc7e6a6c811e3fa4bdda9936d9889f6369fd068420c444bfd1cae"},
+ {file = "torch-2.5.0+cpu-cp311-cp311-linux_x86_64.whl", hash = "sha256:217b7de83d1cc71f1de2eae4288cb25a8210a109424a0c1fdde640e3778747d7"},
]
[package.dependencies]
@@ -2451,25 +2608,25 @@ filelock = "*"
fsspec = "*"
jinja2 = "*"
networkx = "*"
-sympy = "*"
-typing-extensions = "*"
+sympy = {version = "1.13.1", markers = "python_version >= \"3.9\""}
+typing-extensions = ">=4.8.0"
[package.extras]
-dynamo = ["jinja2"]
opt-einsum = ["opt-einsum (>=3.3)"]
+optree = ["optree (>=0.12.0)"]
[package.source]
type = "url"
-url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-linux_x86_64.whl"
+url = "https://download.pytorch.org/whl/cpu/torch-2.5.0%2Bcpu-cp311-cp311-linux_x86_64.whl"
[[package]]
name = "torch"
-version = "2.1.0+cpu"
+version = "2.5.0+cpu"
description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
optional = false
python-versions = ">=3.8.0"
files = [
- {file = "torch-2.1.0+cpu-cp311-cp311-win_amd64.whl", hash = "sha256:c2ec46e3c00d9c642448c92243d9d7de64b3934d746e5ea8661791c2155bd2b9"},
+ {file = "torch-2.5.0+cpu-cp311-cp311-win_amd64.whl", hash = "sha256:690954a8becf12a04e64f08fe84f1a9c9dcbf12b07d481f89809d2cfc55a1038"},
]
[package.dependencies]
@@ -2477,15 +2634,28 @@ filelock = "*"
fsspec = "*"
jinja2 = "*"
networkx = "*"
-sympy = "*"
-typing-extensions = "*"
+nvidia-cublas-cu12 = {version = "12.1.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-cupti-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-nvrtc-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-runtime-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cudnn-cu12 = {version = "9.1.0.70", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cufft-cu12 = {version = "11.0.2.54", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-curand-cu12 = {version = "10.3.2.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusolver-cu12 = {version = "11.4.5.107", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nccl-cu12 = {version = "2.21.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+sympy = {version = "1.13.1", markers = "python_version >= \"3.9\""}
+triton = {version = "3.1.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.13\""}
+typing-extensions = ">=4.8.0"
[package.extras]
opt-einsum = ["opt-einsum (>=3.3)"]
+optree = ["optree (>=0.12.0)"]
[package.source]
type = "url"
-url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-win_amd64.whl"
+url = "https://download.pytorch.org/whl/cpu/torch-2.5.0%2Bcpu-cp311-cp311-win_amd64.whl"
[[package]]
name = "tqdm"
@@ -2577,6 +2747,28 @@ torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata",
video = ["av (==9.2.0)"]
vision = ["Pillow (>=10.0.1,<=15.0)"]
+[[package]]
+name = "triton"
+version = "3.1.0"
+description = "A language and compiler for custom Deep Learning operations"
+optional = false
+python-versions = "*"
+files = [
+ {file = "triton-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b0dd10a925263abbe9fa37dcde67a5e9b2383fc269fdf59f5657cac38c5d1d8"},
+ {file = "triton-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f34f6e7885d1bf0eaaf7ba875a5f0ce6f3c13ba98f9503651c1e6dc6757ed5c"},
+ {file = "triton-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8182f42fd8080a7d39d666814fa36c5e30cc00ea7eeeb1a2983dbb4c99a0fdc"},
+ {file = "triton-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dadaca7fc24de34e180271b5cf864c16755702e9f63a16f62df714a8099126a"},
+ {file = "triton-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aafa9a20cd0d9fee523cd4504aa7131807a864cd77dcf6efe7e981f18b8c6c11"},
+]
+
+[package.dependencies]
+filelock = "*"
+
+[package.extras]
+build = ["cmake (>=3.20)", "lit"]
+tests = ["autopep8", "flake8", "isort", "llnl-hatchet", "numpy", "pytest", "scipy (>=1.7.1)"]
+tutorials = ["matplotlib", "pandas", "tabulate"]
+
[[package]]
name = "types-requests"
version = "2.32.0.20241016"
@@ -2651,4 +2843,4 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)",
[metadata]
lock-version = "2.0"
python-versions = "3.11.*"
-content-hash = "1de47add102985fa6559ff58110aa51469e8410588b0a5148a1abd9e48a7cecf"
+content-hash = "4fcdce526e8972017f0b0b8b4c756e9b8d7c1cf8c50e464c897362bb73a78bcd"
diff --git a/modules/programming/module_programming_themisml/pyproject.toml b/modules/programming/module_programming_themisml/pyproject.toml
index 2195ac1d1..3104a0e3a 100644
--- a/modules/programming/module_programming_themisml/pyproject.toml
+++ b/modules/programming/module_programming_themisml/pyproject.toml
@@ -13,10 +13,10 @@ athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subd
antlr4-python3-runtime = "^4.13.1"
code-bert-score = "^0.4.1"
torch = [
- {url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-linux_x86_64.whl", platform = "linux", python = ">=3.11 <3.12", markers = "platform_machine == \"x86_64\""},
- {url = "https://download.pytorch.org/whl/cpu/torch-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", platform = "linux", python = ">=3.11 <3.12", markers = "platform_machine == \"aarch64\""},
- {url = "https://download.pytorch.org/whl/cpu/torch-2.1.0-cp311-none-macosx_11_0_arm64.whl", platform = "darwin", python = ">=3.11 <3.12"},
- {url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-win_amd64.whl", platform = "win32", python = ">=3.11 <3.12"}
+ {url = "https://download.pytorch.org/whl/cpu/torch-2.5.0%2Bcpu-cp311-cp311-linux_x86_64.whl", platform = "linux", python = ">=3.11 <3.12", markers = "platform_machine == \"x86_64\""},
+ {url = "https://download.pytorch.org/whl/cpu/torch-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", platform = "linux", python = ">=3.11 <3.12", markers = "platform_machine == \"aarch64\""},
+ {url = "https://download.pytorch.org/whl/cpu/torch-2.5.0-cp311-none-macosx_11_0_arm64.whl", platform = "darwin", python = ">=3.11 <3.12"},
+ {url = "https://download.pytorch.org/whl/cpu/torch-2.5.0%2Bcpu-cp311-cp311-win_amd64.whl", platform = "win32", python = ">=3.11 <3.12"}
]
[tool.poetry.group.dev.dependencies]